2011-07-15 102 views
0

有什么办法可以提高概率为 分布的小数精度。pchisq增加十进制精度

> 1-pchisq(90, 5) 
[1] 0 

但是:

> pchisq(90, 5, lower.tail=F) 
[1] 6.71932e-18 
+2

基于下面的评论,你可能需要浮点精度读取(见例如FAQ 7.31在R FAQ)。有很多方法可以以更高的精度进行计算(例如'gmp'包),但通常最好重新考虑一下你的问题 - 这就是为什么例如'lower.tail'参数存在于第一位... –

回答

3

如果你正在做的1 - foo拿到分布的上尾,那就不要。而是使用lower.tail参数:

> pchisq(90, 5, lower.tail = FALSE) 
[1] 6.719319e-18 
+0

感谢但doining这个1- 6.7e-18 = 1 – Jasmine

+0

另外检查''pchisq'中的'log.p'参数 –

+0

那么,尽可能对于计算机来说,上面给出的值实际上是0给定浮点运算:尝试all.equal(pchisq(90,5,lower.tail = FALSE),0)' –