Kolmogorov-Smirnov avec des données discrètes: Quelle est la bonne utilisation de dgof :: ks.test dans R?


24

Questions pour débutants:

Je veux tester si deux ensembles de données discrets proviennent de la même distribution. Un test de Kolmogorov-Smirnov m'a été proposé.

Conover ( Practical Nonparametric Statistics , 3d) semble dire que le test de Kolmogorov-Smirnov peut être utilisé à cette fin, mais son comportement est "conservateur" avec des distributions discrètes, et je ne suis pas sûr de ce que cela signifie ici.

Le commentaire de DavidR sur une autre question dit "... Vous pouvez toujours faire un test de niveau α basé sur la statistique KS, mais vous devrez trouver une autre méthode pour obtenir la valeur critique, par exemple par simulation."

La version de ks.test () dans le package dgof R ( article , cran ) ajoute des fonctionnalités non présentes dans la version par défaut de ks.test () dans le package stats. Entre autres choses, dgof :: ks.test inclut ce paramètre:

simulate.p.value: une logique indiquant s'il faut calculer les valeurs de p par simulation Monte Carlo, pour des tests discrets de qualité d'ajustement uniquement.

Le but de simulate.p.value = T est-il d'accomplir ce que suggère DavidR?

Même si c'est le cas, je ne sais pas si je peux vraiment utiliser dgof :: ks.test pour un test à deux échantillons. Il semble qu'il ne fournisse qu'un test à deux échantillons pour une distribution continue:

Si y est numérique, un test à deux échantillons de l'hypothèse nulle selon laquelle x et y ont été tirés de la même distribution continue est effectué.

Alternativement, y peut être une chaîne de caractères nommant une fonction de distribution continue (cumulative) (ou une telle fonction), ou une fonction ecdf (ou objet de classe stepfun) donnant une distribution discrète. Dans ces cas, un test à un échantillon est effectué sur la valeur nulle que la fonction de distribution qui a généré x est la distribution y ....

(Détails d'arrière-plan: à strictement parler, mes distributions sous-jacentes sont continues, mais les données ont tendance à se situer très près d'une poignée de points. Chaque point est le résultat d'une simulation et est une moyenne de 10 ou 20 nombres réels entre -1 et 1. À la fin de la simulation, ces nombres sont presque toujours très proches de .9 ou -.9. Ainsi, les moyens se regroupent autour de quelques valeurs, et je les traite comme discrètes. La simulation est complexe, et je n'ai pas raison de penser que les données suivent une distribution bien connue.)

Conseil?


Je viens de remarquer le commentaire du Dr G ici qui suggère que ks.boot est ce dont j'ai besoin, mais je me demande toujours si l'option de simulation de dgof :: ks.test fonctionnerait, et ce que "convervatif" signifie.
Mars

Réponses:


16

Ceci est une réponse à l'extension @jbrucks (mais répond également à l'original).

Le test de permutation est un test général pour savoir si 2 échantillons proviennent de la même population / distribution ou s'il y a une différence. Choisissez une statistique d'intérêt, cela pourrait être la statistique du test KS ou la différence de moyennes ou la différence de médianes ou le rapport des variances ou ... (ce qui est le plus significatif pour votre question, vous pouvez faire des simulations dans des conditions probables pour voir quelle statistique vous donne les meilleurs résultats) et calculez cette statistique sur les 2 échantillons originaux. Ensuite, vous permutez au hasard les observations entre les groupes (regroupez tous les points de données dans un grand pool, puis vous les divisez au hasard en 2 groupes de la même taille que les échantillons originaux) et calculez la statistique d'intérêt sur les échantillons permutés. Répétez cela un tas de fois, la distribution des exemples de statistiques forme votre distribution nulle et vous comparez la statistique d'origine à cette distribution pour former le test. Notez que l'hypothèse nulle est que les distributions sont identiques, pas seulement que les moyennes / médiane / etc. sont égaux.

Si vous ne voulez pas supposer que les distributions sont identiques mais souhaitez tester une différence de moyennes / médianes, etc. alors vous pourriez faire un bootstrap.

Si vous savez de quelle distribution proviennent les données (ou du moins êtes prêt à supposer une distribution), vous pouvez faire un test de rapport de vraisemblance sur l'égalité des paramètres (comparer le modèle avec un seul ensemble de paramètres sur les deux groupes au modèle) avec des ensembles de paramètres séparés). Le test du rapport de vraisemblance utilise généralement une distribution chi carré qui est très bien dans de nombreux cas (asymtotique), mais si vous utilisez de petites tailles d'échantillon ou testez un paramètre près de sa limite (une variance étant 0 par exemple), alors l'approximation peut ne pas être bon, vous pouvez à nouveau utiliser le test de permutation pour obtenir une meilleure distribution nulle.

Ces tests fonctionnent tous sur des distributions continues ou discrètes. Vous devez également inclure une certaine mesure de puissance ou un intervalle de confiance pour indiquer le degré d'incertitude, un manque de signification pourrait être dû à une faible puissance ou une différence statistiquement significative pourrait toujours être pratiquement dénuée de sens.


Greg, merci. Ceci est une réponse générale très utile à la question de Jbruck, et elle m'est également utile. (Mes questions étaient plus précises. Peut-être trop étroites pour attendre des réponses.)
Mars

1
@Mars, je pense que ma réponse répond indirectement à au moins une partie de la vôtre. Le test KS régulier ne suppose aucun lien et utilise un modèle théorique pour la statistique de test sous l'hypothèse nulle. Avec les liens, le modèle théorique n'est pas exact, mais vous pouvez plutôt utiliser la simulation (test de permutation, simuler à partir de dist nulle, etc.) pour calculer la distribution nulle et donc obtenir une valeur de p, etc. Je suppose que c'est ce que simule l'argument que vous mentionnez le fait.
Greg Snow
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.