我在t检验中发现了这个问题,并在R中进行了卡方检验,但是我认为这个问题通常适用于其他检验。如果我做:

a <- 1:10
b <- 100:110
t.test(a,b)

我得到:t = -64.6472, df = 18.998, p-value < 2.2e-16。从评论中我知道2.2e-16.Machine$double.eps的值-最小的浮点数,例如1 + x != 1,但当然R可以代表比此小得多的数字。从R FAQ中我也知道R必须将浮点数舍入到53个二进制数字精度:R FAQ

有几个问题:(1)我的阅读是否正确,因为它是53个精度的二进制数,还是R < .Machine$double.eps中的值未正确计算? (2)为什么在进行这样的计算时,即使精度有所损失,R也不提供显示较小的p值的方法? (3)即使我失去一些精度,有没有办法显示较小的p值?对于一个测试,2个十进制有效数字会很好,对于我要使用Bonferroni的值,我将需要更多。当我说“略微降低精度”时,我认为< .Machine$double.eps都非常不准确? (5)R只是诚实而其他统计数据包不是吗?

在我的 Realm 中,非常小的p值是常态,例如:http://www.ncbi.nlm.nih.gov/pubmed/20154341http://www.plosgenetics.org/article/info%3Adoi%2F10.1371%2Fjournal.pgen.1002215,这就是为什么我要表示这么小的p值。

感谢您的帮助,对于如此曲折的问题,我们深表歉意。

最佳答案

尝试使用类似t.test(a,b)$p.value的方法,看看是否可以提供所需的准确性。我相信它与结果的打印有关,而不是实际存储的计算机值,后者应具有必要的精度。

10-07 20:23