让我(a)首先解释基本思想而不是机制——回想起来它们变得更加明显。然后(b)我将讨论卡方(以及它是否合适——它可能不合适!),然后(c)我将讨论如何在 R 中做到这一点。
(a) 在 null 下,总体是相同的。想象一下,您将两个群组放入一个大型数据集中,但添加一个包含群组标签的列。然后在 null 下,队列标签实际上只是一个随机标签,它不会告诉您更多关于观察来自的分布的信息。
当然,在另一种情况下,群组标签很重要——知道群组标签比不知道更能说明问题,因为两个标签下的分布不同。
(这立即暗示了某种排列测试/随机化测试,其中对样本计算的统计量(对替代方案敏感)与相同统计量的分布进行比较,其中队列标签随机重新分配给行。如果你做了所有可能的重新分配它是一个排列测试,如果你只对它们进行抽样它是一个随机化测试。)
(b) 那么现在,如何做卡方?
您计算空值下的预期值。由于队列标签在 null 下无关紧要,因此您可以根据整体分布计算每个单元格中的预期数量:
Status
A B ... E ... G ... Total
Cohort 1: 10 15 18 84
Cohort 2: 9 7 25 78
Total: 19 22 ... 43 ... 162
因此,如果分布相同,则队列和状态之间没有关联,并且(以行总计和列总计为条件)单元格中的预期数字为 row-total-i列总计-j / 总体总计(i,j)×
所以你只需要一个普通的独立性卡方检验。
然而!
如果状态标签形成一个有序的类别,则此卡方检验会丢弃大量信息——它对有趣的替代品(例如向更高或更低类别的轻微转变)的效力较低。在这种情况下,您应该做一些更合适的事情 - 也就是说,考虑到该排序。有很多选择。
--
(c) 现在关于如何在 R 中执行此操作 - 这取决于您的数据当前在 R 中的设置方式 -拥有一个可重现的示例(例如数据的子集)真的很有帮助!
我假设您将它放在一个包含两列的数据框中,一列带有状态(一个因素),另一列带有队列(第二个因素)。
像这样:
status cohort
1 B Cohort1
2 B Cohort1
3 D Cohort1
4 B Cohort1
5 C Cohort1
6 D Cohort1
.
.
.
25 G Cohort2
26 E Cohort2
27 E Cohort2
28 D Cohort2
29 C Cohort2
30 G Cohort2
然后,如果那是一个名为的数据框,statusresults
您将获得一个类似于我之前所做的表格:
> with(statusresults,table(cohort,status))
status
cohort A B C D E F G
Cohort1 2 6 7 3 0 0 0
Cohort2 0 0 2 2 4 1 3
对于卡方检验,您只需:
> with(statusresults, chisq.test(status, cohort))
Pearson's Chi-squared test
data: status and cohort
X-squared = 18.5185, df = 6, p-value = 0.005059
Warning message:
In chisq.test(status, cohort) : Chi-squared approximation may be incorrect
(警告是因为某些单元格中的预期计数很低,因为我使用了非常小的样本)
如果您为状态排序了类别,您应该这样说,以便我们可以讨论除普通卡方之外的其他分析可能性。