Fisher在R中的精确测试产生两个p值

时间:2015-02-05 22:59:14

标签: r

有谁知道为什么在R?

中使用fisher.test()函数生成两个不同的p值
> testMat<-matrix(c(190,9641,177,26067),ncol=2)
> fisher.test(testMat)

Fisher's Exact Test for Count Data

data:  testMat
p-value < 2.2e-16
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 2.349071 3.587034
sample estimates:
odds ratio 
  2.902246 

> fisher.test(testMat)$p.value
[1] 1.832771e-23
> fisher.test(testMat)[1]
$p.value
[1] 1.832771e-23

从其他精确测试(未包括输出),看来fisher.test()的默认输出具有2.2e-16的较低阈值,即使保留了真正的p值。我很好奇这是编程的地方,因为我没有在fisher.test的输出代码或htest的文档中看到它。

1 个答案:

答案 0 :(得分:2)

这不会影响fisher.test。这就是R格式化p值的方式。进行格式化的函数是format.pval。观察

x<-1.832771e-23
format.pval(x)
# [1] "< 2.22e-16"

当p值小于机器的数值公差时,R基本上只是说它是一个非常小的数字&#34;。有关详细信息,请参阅?format.pval