Test binomial exact de deux proportions d'échantillons dans R (et quelques valeurs de p étranges)


23

J'essaie de résoudre la question suivante:

Le joueur A a remporté 17 des 25 matchs tandis que le joueur B a gagné 8 des 20 - y a-t-il une différence significative entre les deux ratios?

La chose à faire dans R qui me vient à l'esprit est la suivante:

> prop.test(c(17,8),c(25,20),correct=FALSE)

    2-sample test for equality of proportions without continuity correction

data:  c(17, 8) out of c(25, 20)
X-squared = 3.528, df = 1, p-value = 0.06034
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.002016956  0.562016956
sample estimates:
prop 1 prop 2 
  0.68   0.40 

Ce test indique donc que la différence n'est pas significative au niveau de confiance de 95%.

Parce que nous savons que prop.test()c'est seulement en utilisant une approximation, je veux rendre les choses plus exactes en utilisant un test binomial exact - et je le fais dans les deux sens:

> binom.test(x=17,n=25,p=8/20)

    Exact binomial test

data:  17 and 25
number of successes = 17, number of trials = 25, p-value = 0.006693
alternative hypothesis: true probability of success is not equal to 0.4
95 percent confidence interval:
 0.4649993 0.8505046
sample estimates:
probability of success 
                  0.68 

> binom.test(x=8,n=20,p=17/25)

    Exact binomial test

data:  8 and 20
number of successes = 8, number of trials = 20, p-value = 0.01377
alternative hypothesis: true probability of success is not equal to 0.68
95 percent confidence interval:
 0.1911901 0.6394574
sample estimates:
probability of success 
                   0.4 

Maintenant, c'est étrange, non? Les valeurs de p sont totalement différentes à chaque fois! Dans les deux cas, les résultats sont maintenant (très) significatifs, mais les valeurs de p semblent sauter plutôt au hasard.

Mes questions

  1. Pourquoi les valeurs p que différent à chaque fois?
  2. Comment effectuer correctement un test binomial à deux proportions exactes dans R?

3
Bien que la fonction R soit différente ( prop.testvs chisq.test), le même concept sous-jacent est dans cette question . Vous exécutez trois tests différents avec différentes "hypothèses nulles" dans chacun de vos trois exemples.
Affine

Réponses:


26

Si vous recherchez un test «exact» pour deux proportions binomiales, je crois que vous recherchez le test exact de Fisher . Dans R, il est appliqué comme suit:

> fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))
    Fisher's Exact Test for Count Data
data:  matrix(c(17, 25 - 17, 8, 20 - 8), ncol = 2)
p-value = 0.07671
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
  0.7990888 13.0020065
sample estimates:
odds ratio 
  3.101466 

La fisher.testfonction accepte un objet matriciel des «succès» et des «échecs» les deux proportions binomiales. Comme vous pouvez le voir, cependant, l'hypothèse bilatérale n'est toujours pas significative, désolé de le dire. Cependant, le test exact de Fisher n'est généralement appliqué que lorsque le nombre de cellules est faible (généralement cela signifie 5 ou moins mais certains disent 10), par conséquent, votre utilisation initiale de prop.testest plus appropriée.

Concernant vos binom.testappels, vous comprenez mal l'appel. Lorsque vous exécutez, binom.test(x=17,n=25,p=8/20)vous testez si la proportion est significativement différente d'une population où la probabilité de réussite est de 8/20 . De même avec binom.test(x=8,n=20,p=17/25)dit que la probabilité de succès est de 17/25, c'est pourquoi ces valeurs p diffèrent. Par conséquent, vous ne comparez pas du tout les deux proportions.


2
Merci, j'ai accepté votre réponse. Lorsque vous dites que prop.test est "plus approprié", que voulez-vous dire exactement? Le résultat plus exact est (littéralement) donné par le test exact de Fisher, n'est-ce pas?
vonjd

4
C'est en fait quelque chose qui est débattu parmi les statisticiens et je n'ai pas de réponse absolue. Historiquement, vous évitiez celui de Fisher car il devient très complexe sur le plan informatique, mais l'ordinateur contourne ce problème. D'une manière générale, cependant, le test exact de Fisher est conservateur et si vos nombres sont suffisamment grands, la statistique du chi carré (qui est ce qui prop.testcalcule) est plus susceptible de ne pas commettre d'erreur de type II.
cdeterman

Le point crucial pour moi sont les différentes sémantiques de prop.testet fisher.test: La première est appelée comme prop.test(matrix(c(17, 8, 25, 20), ncol=2))(donnant le nombre de succès dans la première colonne et le nombre d' essais dans la deuxième colonne), tandis que la seconde est appelée comme fisher.test(matrix(c(17, 25-17, 8, 20-8), ncol=2))(donnant le nombre de succès et échecs ); car la fisher.testtransposition ne semble pas non plus changer le résultat.
krlmlr

Une alternative plus puissante est également disponible pour les tests 2x2 - en.wikipedia.org/wiki/Barnard%27s_test
Hamy

4

Il existe une différence entre deux échantillons et un échantillon par rapport à une hypothèse connue. Donc, si quelqu'un lance une pièce 100 fois et obtient des têtes 55 fois et l'hypothèse est une pièce juste, contre deux personnes qui lancent une pièce d'une équité inconnue et l'une obtiennent des têtes 55 fois et l'autre 45 fois. Dans le premier cas, vous essayez simplement d'identifier si le flipper semble lancer une bonne pièce. Dans ce dernier, vous cherchez à savoir s'ils retournent des pièces de la même équité. Vous pouvez voir comment, si vous regardez chaque joueur contre une probabilité connue (45 contre 50 et 55 contre 50), c'est différent de les comparer les uns aux autres (45 contre 55).


2

La syntaxe de la binom.testest vos succès dans un certain nombre d'essais par rapport à une estimation ponctuelle de la population . Bien que vous l'ayez entré comme p = 8/20, le calcul est comme si c'était une vérité absolue de Dieu de 0,4 avec une variance nulle autour de lui. Ou c'est comme si vous compariez les 17 victoires du joueur A sur 25 aux 8 milliards de victoires hypothétiques du joueur B sur 20 milliards de parties. Cependant, prop.testcompare la proportion de 17/25 avec toute sa variance potentielle à la proportion de 8/20 avec toute sa propre variance. En d'autres termes, la variance autour de 0,7 (estimation de 17/25) et la variance autour de 0,4 peuvent se fondre l' une dans l'autre avec un p résultant = 0,06.


Cela signifierait donc que la bonne façon de résoudre la question d'origine est prop.test(c(17,8),c(25,20),correct=FALSE), non?
vonjd

1
Oui c'est correct. Si vous voulez savoir si vous devriez avoir correct = FALSEvs vs, correct = TRUEje vous suggère de lire les stats.stackexchange.com/questions/185433/…
Farrel

2

Tout d'abord, je suggère que vous souhaitiez effectuer une correction de continuité, car vous estimez une distribution discrète avec une distribution continue (khi carré).

Deuxièmement, il est important d'être clair sur la façon dont "l'expérience", si vous voulez, a été menée. Le nombre de jeux auxquels chaque personne a joué a-t-il été déterminé à l'avance (ou dans la langue vernaculaire de l'industrie, fixé par la conception)? Si c'est le cas, et en supposant en outre que les résultats de chaque joueur sont indépendants les uns des autres, vous avez affaire au produit de 2 distributions binomiales. Si, au contraire, le nombre de jeux était libre de varier (disons, par exemple, le nombre de jeux que chaque personne a joué était variable, en fonction du nombre de jeux que chacun a pu terminer dans un délai fixe), alors vous avez affaire à un multinomial ou distribution de Poisson.

Dans le second cas, le test du chi carré (ou ce qui est la même chose, un test z de différence de proportions) est approprié, mais dans le premier cas il ne l'est pas. Dans le premier cas, vous devez vraiment calculer le produit exact de chaque résultat binomial possible pour chaque joueur et additionner ces probabilités pour toutes les occurrences qui sont égales ou inférieures à la probabilité binomiale conjointe des résultats observés (c'est simplement le produit des 2 binômes car les résultats de chaque joueur sont indépendants des résultats de l'autre joueur).

Reconnaissez d'abord que l'objectif central de tout test d'hypothèse est de calculer à quel point le résultat spécifique que vous avez observé est «rare» ou inhabituel, par rapport à tous les autres résultats possibles. Ceci est calculé en calculant la probabilité du résultat que vous avez observé - étant donné l'hypothèse que l'hypothèse nulle est vraie - additionnée avec tous les autres résultats possibles de probabilité égale ou inférieure.

Maintenant, il est difficile de répéter que ce que nous entendons par "à quel point rare" est "à quel point la probabilité d'observer le résultat obtenu est-elle faible par rapport à tous les autres résultats possibles?" Eh bien, la probabilité du résultat spécifique que nous avons observé est de 0,0679 * 0,0793 = 0,005115. Considérons maintenant un résultat alternatif spécifique: il est certainement possible que le joueur A ait remporté 7 de ses 20 matchs et que le joueur B ait remporté 13 de ses 25 matchs. La probabilité de ce résultat est de 0,004959. Notez que cette valeur est inférieure à la probabilité de notre résultat observé, elle doit donc être incluse dans la valeur de p. Mais regardez à nouveau: si vous décidez quels résultats inclure dans votre somme selon que la différence de proportions dépasse la différence de proportions dans notre résultat observé, cette probabilité sera exclue! Pourquoi? Parce que la différence de proportions pour ce résultat spécifique est inférieure à la différence de proportions pour notre résultat observé. Mais ce n'est pas la bonne orientation - nous devons nous préoccuper de la probabilité de ce résultat spécifique et s'il est égal ou inférieur à la probabilité du résultat que nous avons observé!

Une bonne explication formelle de ceci peut être trouvée ici:

http://data.princeton.edu/wws509/notes/c5.pdf

Veuillez noter spécifiquement l'énoncé de la page 9: "Si la marge de la ligne est fixe et que le plan d'échantillonnage est binomial, nous devons utiliser le modèle binomial du produit, car nous ne pouvons pas estimer la distribution conjointe pour les deux variables sans plus d'informations."


Pour le code R qui calcule la somme des probabilités binomiales conjointes qui ont une probabilité égale ou inférieure de se produire par rapport à la probabilité du résultat observé, voir la réponse au message connexe suivant: stats.stackexchange.com/questions/213295/…
user221943
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.