Le chi carré peut-il être utilisé pour comparer des proportions?

13

J'ai lu que le test du chi carré est utile pour voir si un échantillon est significativement différent d'un ensemble de valeurs attendues.

Par exemple, voici un tableau des résultats d'une enquête concernant les couleurs préférées des gens (n ​​= 15 + 13 + 10 + 17 = 55 répondants au total):

red,blue,green,yellow

15,13,10,17

Un test du chi carré peut me dire si cet échantillon est significativement différent de l'hypothèse nulle de probabilité égale de personnes aimant chaque couleur.

Question: Le test peut-il être exécuté sur les proportions de répondants totaux qui aiment une certaine couleur? Comme ci-dessous:

red,blue,green,yellow

0.273,0.236,0.182,0.309

Où, bien sûr, 0,273 + 0,236 + 0,182 + 0,309 = 1.

Si le test du chi carré ne convient pas dans ce cas, quel serait le test? Merci!

Edit: J'ai essayé la réponse de @Roman Luštrik ci-dessous, et j'ai obtenu la sortie suivante, pourquoi ne reçois-je pas une valeur de p et pourquoi R dit "l'approximation du chi carré peut être incorrecte"?

> chisq.test(c(0,0,0,8,6,2,0,0),p = c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0))

    Chi-squared test for given probabilities

data:  c(0, 0, 0, 8, 6, 2, 0, 0) 
X-squared = NaN, df = 7, p-value = NA

Warning message:
In chisq.test(c(0, 0, 0, 8, 6, 2, 0, 0), p = c(0.406197174, 0.088746395,  :
  Chi-squared approximation may be incorrect
hpy
la source
1
Dans le deuxième cas, supposez-vous que vous connaissez la taille totale de l'échantillon? Ou pas?
Cardinal
@cardinal: oui, je connais la taille totale de l'échantillon.
hpy
3
il suffit ensuite de multiplier les proportions par la taille totale de l'échantillon pour le transformer en un tableau de dénombrements et d'appliquer le chi carré. méthode correspondant à votre premier exemple.
Aaron
Je soupçonne que vous posez des questions sur le test de "qualité de l'ajustement" (en utilisant le chi carré). Dont l'utilisation a été expliquée ci-dessous. Cheers, Tal
Tal Galili

Réponses:

7

Corrigez-moi si je me trompe, mais je pense que cela peut être fait dans R en utilisant cette commande

> chisq.test(c(15,13,10,17))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 1.9455, df = 3, p-value = 0.5838

Cela suppose des proportions de 1/4 chacune. Vous pouvez modifier les valeurs attendues via un argument p. Par exemple, vous pensez que les gens peuvent préférer (pour quelque raison que ce soit) une couleur aux autres.

> chisq.test(c(15,13,10,17), p = c(0.5, 0.3, 0.1, 0.1))

    Chi-squared test for given probabilities

data:  c(15, 13, 10, 17) 
X-squared = 34.1515, df = 3, p-value = 1.841e-07
Roman Luštrik
la source
2
Je soupçonne que vous voyez cela en raison d'un faible nombre de cellules (certains livres que j'ai lus suggèrent un minimum de 5 par cellule). Peut-être que quelqu'un de mieux informé sur le sujet peut participer?
Roman Luštrik
1
Notez également que vous pouvez obtenir une valeur p si vous faites le dernier de votre probabilité plus de zéro (mais l'avertissement reste toujours).
Roman Luštrik
1
Ott & Longnecker (Introduction aux méthodes statistiques et à l'analyse des données, 5e édition) indiquent, à la page 504, que chaque cellule doit être d'au moins cinq, pour utiliser confortablement l'approximation.
Roman Luštrik
1
@penyuan: Vous auriez dû mentionner que vous avez un certain nombre de zéros. Roman a raison, utiliser un chi carré dans ce cas ne fonctionne tout simplement pas pour les raisons qu'il a mentionnées.
Joris Meys
1
@penyuan: J'ai ajouté une réponse vous donnant quelques options.
Joris Meys
6

En utilisant les informations supplémentaires que vous avez fournies (étant donné que certaines des valeurs sont 0), il est assez évident pourquoi votre solution ne renvoie rien. D'une part, vous avez une probabilité de 0, donc:

  • dans la solution d'Henry est 0 pour au moins un iei
  • dans la solution de probabilitéislogique est 0 pour au moins un inpi

Ce qui rend les divisions impossibles. Maintenant, dire que signifie qu'il est impossible d'avoir ce résultat. Si c'est le cas, vous pouvez tout aussi bien l'effacer des données (voir le commentaire de @cardinal). Si vous voulez dire hautement improbable, une première «solution» pourrait être d'augmenter cette chance 0 avec un très petit nombre.p=0

Donné :

X <- c(0,0,0,8,6,2,0,0)
p <- c(0.406197174,0.088746395,0.025193306,0.42041479,0.03192905,0.018328576,0.009190708,0)

Vous pourriez faire :

> p2 <- p + 1e-6
> chisq.test(X,p2)

        Pearson's Chi-squared test

data:  X and p2 
X-squared = 24, df = 21, p-value = 0.2931

Mais ce n'est pas un résultat correct. Dans tous les cas, il faut éviter d'utiliser le test du chi carré dans ces cas limites. Une meilleure approche consiste à utiliser une approche bootstrap, à calculer une statistique de test adaptée et à comparer celle de l'échantillon avec la distribution obtenue par le bootstrap.

Dans le code R, cela pourrait être (étape par étape):

# The function to calculate the adapted statistic.
# We add 0.5 to the expected value to avoid dividing by 0
Statistic <- function(o,e){
    e <- e+0.5
    sum(((o-e)^2)/e)
}

# Set up the bootstraps, based on the multinomial distribution
n <- 10000
bootstraps <- rmultinom(n,size=sum(X),p=p)

# calculate the expected values
expected <- p*sum(X)

# calculate the statistic for the sample and the bootstrap
ChisqSamp <- Statistic(X,expected)
ChisqDist <- apply(bootstraps,2,Statistic,expected)

# calculate the p-value
p.value <- sum(ChisqSamp < sort(ChisqDist))/n
p.value

Cela donne une valeur de p de 0, ce qui est beaucoup plus en ligne avec la différence entre observé et attendu. Attention, cette méthode suppose que vos données proviennent d'une distribution multinomiale. Si cette hypothèse ne tient pas, la valeur de p ne tient pas non plus.

Joris Meys
la source
1
Vous pourriez reconsidérer votre première déclaration, que je ne crois pas correcte. Si pour certains i et que les comptes observés sont nuls (ce qu'ils devraient être), alors cela se réduit à un sous-modèle. L'effet est que le nombre de degrés de liberté est réduit de un pour chaque i tel que p i = 0 . Par exemple, envisager de tester l'uniformité d'un dé à six faces (qui est p i = 1 / 6 pour i 6 ). Mais supposons que nous décidions (étrangement) d'enregistrer le nombre de fois que les nombres 1 , ,pi=0iipi=0pi=1/6i6 apparaissent. Ensuite, le test du chi carré est toujours valide; nous additionnons simplement les six premières valeurs. 1,,10
Cardinal
@cardinal: Je viens de décrire les données, où la valeur attendue est 0 mais l'observée ne doit pas nécessairement l'être. C'est ce que OP nous a donné (même si à la réflexion, cela semble en effet plutôt irréaliste). Par conséquent, l'ajout d'un peu à la valeur p pour la rendre hautement improbable au lieu d'impossible aidera, mais même dans ce cas, le chi carré est dans ce cas invalide en raison de la grande quantité de cellules de tableau avec des nombres inférieurs à 5 (comme le démontre le code). J'ai ajouté la considération dans ma réponse, merci pour le pointeur.
Joris Meys
oui, je dirais que si , mais si vous observez un décompte pour cette cellule, vous avez de toute façon des problèmes plus graves. :)pi=0
cardinal
4

Le test du chi carré est bon tant que les comptes attendus sont importants, généralement au-dessus de 10, c'est bien. en dessous de ce tendance à dominer le test. Une statistique de test exacte est donnée par:1E(xi)

ψ=ixilog(xinpi)

est le nombre observé dans la catégorie i . i { rouge, bleu, vert, jaune } dans votre exemple. n est la taille de votre échantillon, égale à 55 dans votre exemple. p i est l'hypothèse que vous souhaitez tester - la plus évidente est p i = p j (toutes les probabilités sont égales). Vous pouvez montrer que la statistique du chi carré:xiii{red, blue, green, yellow}n55pipi=pj

χ2=i(xinpi)2npi2ψ

En termes de fréquences observées on obtient:fi=xin

χ2=ni(fi-pi)2

ψ=nifilog(fipi)
χ2=ni(fipi)2pi

(Notez que est effectivement la divergence KL entre l'hypothèse et les valeurs observées). Vous pourrez peut-être voir intuitivement pourquoi ψ est meilleur pour les petits p i , car il a un 1ψψpi1piψ

H1H2piψ1ψ2exp(ψ1ψ2)H2H1exp(12χ1212χ22)

Maintenant, si vous choisissez H2 to be the "sure thing" or "perfect fit" hypothesis, then we will have ψ2=χ22=0, and thus the chi-square and psi statistic both tell you "how far" from the perfect fit any single hypothesis is, from one which fit the observed data exactly.

Final recommendation: Use χ22 statistic when the expected counts are large, mainly because most statistical packages will easily report this value. If some expected counts are small, say about npi<10, then use ψ, because the chi-square is a bad approximation in this case, these small cells will dominate the chi-square statistic.

probabilityislogic
la source
1
I'm pretty sure the expected frequencies can't be larger than 10. :)
cardinal
@cardinal - glad that this was your objection - for it means the rest of my answer must have been good :).
probabilityislogic
Wow, I hope I'm not getting a reputation for being so picky/grumpy.
cardinal
1
I'm don't quite follow the "exact" terminology. Perhaps that is particular to Jaynes' work. Your ψ is the log-likelihood-ratio test statistic though and so 2ψ is asymptotically distributed as a χ2 distribution by Wilks' theorem. Also, χ22ψ0 in probability, which by Slutsky's theorem is enough to conclude that χ2 has the same distribution as 2ψ. Finally, it turns out that χ2 is the scorte test statistic in this problem as well, which provides another connection between the two test statistics.
cardinal
Also, Agresti (Categorical Data Analysis, 2nd ed., p. 80) claims that χ2 actually converges to a chi-squared distribution faster than 2ψ, which seems at odds with your recommendation. :)
cardinal
3

Yes, you can test the null hypothesis: "H0: prop(red)=prop(blue)=prop(green)=prop(yellow)=1/4" using a chi square test that compares the proportions of the survey (0.273, ...) to the expected proportions (1/4, 1/4, 1/4, 1/4)


la source
Just to confirm, it will also work with expected proportions that are unequal to each other?
hpy
4
the test won't be meaningful unless you know the full sample size. Proportions of 1.0 / 0.0 / 0.0 / 0.0 mean very different things if they are from a sample of size 1 as opposed a sample of size 100.
Aaron
Yes, I DO know the total sample size.
hpy
2

The test statistic for Pearson's chi-square test is

i=1n(OiEi)2Ei

If you write oi=Oin and ei=Ein to have proportions, where n=i=1nOi is the sample size and i=1nei=1, then the test statistic is is equal to

ni=1n(oiei)2ei

so a test of the significance of the observed proportions depends on the sample size, much as one would expect.

Henry
la source