Fisher精确检验(R) - 模拟p值不变

时间:2014-03-29 15:12:20

标签: r montecarlo p-value

我在使用模拟p值的R中使用Fisher精确检验时遇到问题,但我不知道它是否是由“技术”(R)引起的,或者是否(统计上)意图以这种方式工作

我想要使用的其中一个数据集:

matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,19,3,57,11,2,87,1,2,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21,704,40,759,404,151,1491,9,40,144),ncol=2,nrow=27)

无论我多久重复一次测试,得到的p值总是相同的:

p = 1 / (B+1)
(B = number of replicates used in the Monte Carlo test)

当缩短矩阵时,如果行数低于19,则它可以工作。但是,这不是矩阵中单元格数量的问题。在将其转换为具有3列的矩阵后,它仍然不起作用,尽管只在两列中使用相同的数字时会这样做。

改变模拟的p值:

>a <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21),ncol=2,nrow=18)

>b <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,19,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21,704),ncol=2,nrow=19)

>c <- matrix(c(103,0,2,1,0,0,1,0,3,0,0,3,0,0,0,0,0,0,869,4,2,8,1,4,3,18,16,5,60,60,42,1,1,1,1,21),ncol=3,nrow=12)

>fisher.test(a,simulate.p.value=TRUE)$p.value

ab中的单元格数相同,但模拟仅适用于矩阵a。 有谁知道这是一个统计问题还是一个R问题,如果是,它是如何解决的?

感谢您的建议

1 个答案:

答案 0 :(得分:4)

我认为您只是看到了非常重要的结果。 p值被计算为与原始矩阵一样极端或更极端的模拟(和原始)矩阵的数量。如果随机生成的矩阵都不是极端的,那么p值将只是1(原始矩阵与其自身一样极端)除以矩阵的总数$ B + 1 $(B模拟和1个原始矩阵)。如果你运行带有足够样本的函数(足够高的B),那么你将开始看到一些随机矩阵为或更极端,因此有不同的p值,但这样做的时间可能不合理。