我正在做一些社会科学研究,偶然发现了一篇讨论不同精确测试的文章,包括伯纳德的测试。几位作者讨论了 Fisher 精确检验和 Bernard 检验之间的差异(Lydersen 在 2009 年,Mehta 和 Senchaudhuri 在 2003 年),但我只是好奇我是否能自己看到差异(并在此过程中更多地了解 R )。我找到了一种让费舍尔检验起作用的方法,但巴纳德检验却让我望而却步:
library(plyr)
library(Barnard)
rook <- expand.grid(a=0:5,b=0:5,c=0:5,d=0:5)
sums <- ddply(rook, .(a,b,c,d), sum)
system.time(
Fisher.l <- ddply(rook, .(a,b,c,d),function(z)
fisher.test(matrix(unlist(z[,c(1,2,3,4)]),
ncol=2),alternative="less")$p.value)
)
但是,这些都不起作用……它们是尝试做同一件事的两种方式……
system.time(
Barnard <- ddply(rook, .(a,b,c,d), function(z)
barnardw.test(unlist(z[,c(1,2,3,4)]), ncol=2))$p.value[[1]])
)
system.time(
Barnard <- ddply(rook, .(a,b,c,d), function(z)
barnardw.test(z[,1],z[,2],z[,3],z[,4]))$p.value[[1]])
)