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

机器算法验证 r 分类数据 卡方检验 小样本 错误信息
2022-01-24 05:05:03

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

> 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

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

4个回答

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

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

但是,由于小区大小如此之小,所有估计都将很差。使用卡方或逻辑回归测试通过与失败(删除“未显示”)可能会很好。事实上,由于通过/失败等级是一个因变量很明显,逻辑回归可能会更好。

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

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

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

但无论如何,如果您愿意以边际为条件(就像您在运行 Fisher 精确检验时所做的那样),您可以在 R 中非常轻松地处理该问题;simulate.p.value参数设置为TRUE; 那么您不依赖于检验统计量分布的卡方近似值。

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

> fisher.test(a)

        Fisher's Exact Test for Count Data

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

请参阅Pearson 卡方检验文章的“假设”部分。

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