R中Fisher精确检验列联表格式疑问:是否需对称?
Fisher精确检验列联表的正确格式选择
核心结论
选项2是正确的列联表格式,选项1的合并方式完全错误,会直接导致检验结果失真。
原因解释
Fisher精确检验的核心是依赖真实的交叉观测频数:
- 列联表的行和列分别对应两个变量(或同一变量的两个独立观测维度)的不同水平,每个单元格的数值必须严格对应「行水平+列水平」这个特定组合的实际出现次数。
- [1,2]和[2,1]是两种完全不同的观测结果:前者是行变量取1、列变量取2的次数,后者是行变量取2、列变量取1的次数,二者属于不同的样本组合,绝对不能混淆合并。
- 选项1错误地将1次[1,2]和4次[2,1]的频数都填为5到两个交叉单元格,相当于伪造了数据分布,这也是为什么它的检验结果和选项2差异巨大——因为它输入的根本不是真实的观测数据。
R中的验证逻辑
在R中使用fisher.test()时,输入的矩阵必须是原始观测的频数统计:
# 选项2的正确矩阵示例(完整对应题中数据) correct_table <- matrix(c(0,4,0,6,1,5, 1,1,0,9,0,4, 0,0,0,0,0,1, 12,6,2,23,15,18, 0,1,0,10,5,4, 2,5,0,9,3,6), nrow=6, byrow=TRUE, dimnames=list(c("1","2","3","4","5","7"), c("1","2","3","4","5","7"))) # 执行Fisher精确检验 fisher.test(correct_table)
这个矩阵严格对应每个组合的真实计数,得出的检验结果才具备统计可信度。而选项1的矩阵是对原始数据的错误编码,其显著结果没有任何实际意义。
内容的提问来源于stack exchange,提问作者craszer
相关产品推荐
相关产品推荐

