大于 2 x 2 的表的独立性卡方检验的替代方案

机器算法验证 假设检验 卡方检验 独立 列联表 渔民精确测试
2022-03-10 15:09:56

如果我不想合并类,对于表大于 2 x 2 且单元格计数小于 5 的分类变量的卡方检验有哪些替代方法?

2个回答

这里有一些常见的误解。卡方检验非常适合用于大于2×2. 为了使卡方检验统计量的实际分布接近卡方分布,传统的建议是所有单元格都有期望值5. 这里必须注意两点:

  1. 观察到的细胞计数是多少并不重要——它们很可能是0没有问题——只有预期的数量很重要。

  2. 现在众所周知,这种传统的经验法则过于保守。拥有它可能很好20%具有预期计数的细胞<5只要没有预期计数<1. 看:

如果您的预期计数与这个更准确的标准不匹配,则可以使用一些替代选项:

  1. 您最好的选择可能是模拟检验统计量的抽样分布,或使用置换检验。(但是请注意,Rchisq.test(..., simulate.p.value=TRUE)确实是对 Fisher 精确检验的模拟——参见 #2——因此,如果您不希望这样做,则必须手动编写模拟代码。)

  2. 您可以使用替代检验,例如 Fisher 精确检验。尽管在这种情况下通常建议使用 Fisher 精确检验,但值得注意的是,它做出了不同的假设,可能并不合适。也就是说,Fisher 的精确检验假设行数和列数是预先设置的,并且只有行 x 列组合的排列可以变化(请参阅:鉴于当今计算机的能力,是否有理由进行卡方检验而不是 Fisher 的精确检验?)。如果您对这个假设感到不舒服,模拟卡方将是一个更好的选择。

作为@gung 回答的补充,让我们看另一种方式:模拟χ2无条件地检验统计量,并且与 Fisher 精确检验不同,使用条件分布(以两个边际为条件)。

例如,我将使用2×3以下3x2 列联表中的Fisher 精确检验表

 mydat
  a  b c
A 2 12 1
B 5  3 1

我们必须从这个表中计算(真正估计)边际概率,然后在独立下用它来估计表的概率。然后我们在多项抽样中使用它,具有相同的样本量。

一个问题表明,一些模拟表(在这个例子中超过 10%)有一些零边距。这给计算卡方带来了问题,因为这意味着我们要除以零。然后我的 R 函数返回NaN(不是数字)。对于下面的插图,我决定简单地删除这个值,尽管这当然值得商榷。

我得到以下模拟空分布:

卡方的模拟零分布

用红色覆盖的是通常具有两个自由度的近似卡方分布的密度。

我们可以使用它来计算模拟的 p 值,结果0.0523与通常的 p 值相比,由 R's 返回chisq.test,即0.06293该函数的模拟选项给出的 p 值为0.04927

但是,在具有空边距的模拟表的情况下如何处理的问题很有趣。它表明,无条件地模拟卡方检验统计量的零分布并非没有问题。上面的结果并不是真正无条件的,它们是有条件的,没有空边距。使用Fisher精确检验,务实地避免了这个问题!