我正在做一些社会科学研究,偶然发现了一篇讨论不同精确测试的文章,包括伯纳德的测试。几位作者讨论了Fisher精确测试和Bernard测试之间的差异(2009年的Lydersen,2003年的Mehta和Senchaudhuri),但我很好奇我是否能够看到自己的差异(并在此过程中了解更多关于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]])
)