卡方检验错误 "卡方近似可能不正确"

3

我在R中运行了卡方检验,结果如下:

crianza = matrix(c(1,1,0,12,12,7,2,1,0,0,1,0,0,0,5,
      0,0,0,1,1,2,0,0,3,0,0,0,13,35,29,0,0,1,10,
      0,0,1,0,0,0,0,0),ncol=3,byrow=TRUE)
colnames (crianza) = c("Neonate","Juevenile","Adult")
rownames (crianza) = c("C.acronotus","C.limbatus","C.obscurus","C.perezi",
 "C.porosus","C.falciformis","G.cuvier","G.cirratum","M.canis",
 "R.porosus","R.lalandii","S.lewini","S.mokarran","S.tiburo")    
crianza = as.table(crianza)

Pearson's Chi-squared test

data:  crianza
X-squared = NaN, df = 26, p-value = NA

Warning message:
In chisq.test(crianza) : Chi-squared approximation may be incorrect

有人知道为什么会出现警告吗?是因为我使用了错误的方法吗?


这个问题可能更适合 Cross Validated 网站 - 那里已经有一个很好的现有答案 - neilfws
1
可能相关:https://stats.stackexchange.com/q/81483/60634,https://stats.stackexchange.com/q/155523/60634。如果您查看`chisq.test`的源代码,在`if (any(E < 5) && is.finite(PARAMETER))之后会出现该消息,其中E可能是n*pouter(sr, sc, "*")/n`,具体取决于非矩阵或矩阵输入。 - r2evans
1个回答

4
您之所以出现NA值,是因为您的某些行没有任何计数。
cc <- crianza[rowSums(crianza)>0,]
chisq.test(cc)

为了避免警告,尝试使用 simulate.p.value=TRUE
chisq.test(cc, simulate.p.value=TRUE)

请注意,这是一张极不平衡的表格,使用模拟p值时,你将得到一个非常小的值,大约为1/(运行的模拟次数)。
chisq.test(cc, simulate.p.value=TRUE, B=1e6)

在我忍耐力耗尽之前,我的进度已经达到了 B=1e7。你可能不需要担心报告超出“p值非常小,最多为1e-6”的值。


我在SPSS上运行了卡方检验,结果非常不同,P=0.407。 - JSalazar
抱歉,我不知道在这种情况下 SPSS 正在做什么。 - Ben Bolker
由于P值与R中的差异非常大(P值=0.0004998) - JSalazar
1
要弄清楚这个问题,你或其他人需要做到以下两点:(1) 确认在转换过程中没有发生任何奇怪的事情,确保在两种情况下使用的是相同的数据;(2) 查看在 SPSS 中运行卡方检验时所使用的命令和选项。 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接