R中的警告-卡方近似值可能不正确


40

我有显示消防员入学考试结果的数据。我正在检验考试结果和种族不是相互独立的假设。为了对此进行测试,我在R中运行了Pearson卡方检验。结果显示了预期的结果,但警告“” In chisq.test(a) : Chi-squared approximation may be incorrect

> a
       white black asian hispanic
pass       5     2     2        0
noShow     0     1     0        0
fail       0     2     3        4
> chisq.test(a)

    Pearson's Chi-squared test

data:  a
X-squared = 12.6667, df = 6, p-value = 0.04865

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

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


2
如此少的测量结果永远不要相信结果。如果每一列有数百人,那么您可能会对结果有信心。尽管如此,结果可能更多是由于邻居或财富而不是种族本身。
罗德里戈

Answers:


41

它发出警告是因为许多期望值将非常小,因此p的近似值可能不正确。

R可以使用chisq.test(a, simulate.p.value = TRUE)模拟p值。

但是,由于像元很小,所有估计都将很差。用卡方或逻辑回归来测试通过与否(删除“未显示”)可能会很好。确实,由于很明显合格/不合格等级是因变量,因此逻辑回归可能更好。


simulate.p.value = TRUE加入时实际上是什么chisq.test
Al14

1
它使用模拟来找到p值
Peter Flom-恢复莫妮卡

1
请注意,在边缘上simulate.p.value = TRUE使用模拟条件,所以确实是Fisher精确测试的一个版本。
kjetil b halvorsen

23

问题在于,检验统计量分布的卡方近似依赖于计数大致呈正态分布。如果许多期望计数非常小,则近似值可能会很差。

请注意,列联表中独立性的卡方统计量的实际分布是离散的,而不是连续的。

noshow类别将是造成此问题的主要因素。要考虑的一件事是合并noshow和失败。您仍然会收到警告,但是它不会对结果产生太大的影响,并且分布应该相当合理(警告发出之前应用的规则过于严格)。

但在任何情况下,如果你愿意的利润率状况(如你运行Fisher精确检验时),则可以解决这个问题容易R中; 将simulate.p.value参数设置为TRUE; 那么您就不必依赖检验数据统计量的卡方近似值了。


您能否向我解释为什么“ ..检验统计量分布的卡方近似依赖于计数大致呈正态分布”?我不明白如果有一个2x2列联表,这怎么可能是正确的。计数如何(近似)正态分布?白人,黑人,西班牙裔和亚裔的计数如何可能呈正态分布?您是说等于吗?这与这个问题有什么关系?:stats.stackexchange.com/questions/141407/…–
Erosennin

计数随机变量的多元分布必须近似正态(尽管会退化)。观察计数的集合只是此多元正态的单个向量观察-您无法根据一个观察来判断分布。要进行评估,我要说的是您需要依赖这些假设。对于单个单元格,这样做相当容易(即,给定单元格的边际分布,在null下)。您似乎正在合并跨单元的计数,但这没有意义,因为它们都来自不同的分布
Glen_b 2015年

首先,感谢您抽出宝贵的时间!因此,您说的是,如果我们查看了许多观察结果,列联表的计数应“向下”(变质)多态正态分布?这是不是意味着每个单元格的计数也应该是正常的,并且也“偶然地”计算了列联表(我想这就是“跨”的意思)?F.ex具有期望值5的像元,应该正态分布在5附近,对吗?因此,如果一个像元跨度的期望值为40,则该像元应正态分布在40附近,并且均值5和40的多元正态分布在一起,不是吗?
Erosennin

1
r×crc(r1)(c1)
Glen_b 2015年

这很沉重,而且很有意思。如果您有时间,我在这里重新发布了我的第一个问题:stats.stackexchange.com/questions/142429/…
Erosennin

12

对于如此少的数目,您可以使用Fisher的精确检验:

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 

3

请参阅皮尔逊卡方测试文章的“假设”部分。

简而言之,当表中任何一个单元格的计数少于5时,其中一个假设将被破坏。我认为这就是错误消息所指的内容。在链接的文章中,您还可以找到有关可以应用的更正的信息。


6
χ2

0

您的主要问题是关于样本量的问题,但是我发现要比较两个以上的组。如果测试的p值为0.05或更小,则将难以解释结果。因此,我分享了在这种情况下使用的简短脚本:

# Load the required packages:
library(MASS) # for chisq
library(descr) # for crosstable

CrossTable(a$exam_result, a$ethnicity
       fisher = T, chisq = T, expected = T,
       prop.c = F, prop.t = F, prop.chisq = F, 
       sresid = T, format = 'SPSS')

此代码将同时生成Pearson的卡方和Fisher的卡方。它产生计数以及每个表条目的比例。基于标准化残差或z值得分,即

sresid

如果超出范围| 1.96 | 即,小于-1.96或大于1.96,则显着性p <0.05。然后,该符号将表明是正相关还是负相关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.