如何在R中得到更有效的數字?具體來說,我下面舉個例子:R的更多有效數字
> dpois(50, lambda= 5)
[1] 1.967673e-32
然而,當我得到的p值:
> 1-ppois(50, lambda= 5)
[1] 0
顯然,p值不爲0。事實上,它應該比1.967673e更大^ -32,因爲我總結了一堆概率。我如何獲得額外的精度?
如何在R中得到更有效的數字?具體來說,我下面舉個例子:R的更多有效數字
> dpois(50, lambda= 5)
[1] 1.967673e-32
然而,當我得到的p值:
> 1-ppois(50, lambda= 5)
[1] 0
顯然,p值不爲0。事實上,它應該比1.967673e更大^ -32,因爲我總結了一堆概率。我如何獲得額外的精度?
使用
ppois(50, lambda= 5, lower.tail=FALSE)
## [1] 2.133862e-33
詢問R鍵計算上尾比計算下尾,並從1中減去準確得多:給出其浮點精度,R具有與區分1 1 -eps
爲值麻煩的eps
小於.Machine$double.neg.eps
,通常在10^{ - 16}左右(參見?.Machine
)。
注意這個問題將在?ppois
討論:
Setting ‘lower.tail = FALSE’ allows to get much more precise results when the default, ‘lower.tail = TRUE’ would return 1, see the example below.
還要注意的是你對價值需要比dpois(50, lambda=5)
更大評論是不完全正確; ppois(x,...,lower.tail=FALSE)
給出的概率隨機變量大於x
更大,因爲你可以看到這ppois(0,...,lower.tail=FALSE)
不完全是1,或看到(例如):
dpois(50,lambda=5) + ppois(50,lambda=5,lower.tail=FALSE)
## [1] 2.181059e-32
ppois(49,lambda=5,lower.tail=FALSE)
## [1] 2.181059e-32
嗨,完美,正是我一直在尋找。也感謝您對p值的評論。它看起來像計算一個pvalue,如果我的obs是x,我需要dpois(x,lambda)+ ppois(x,lambda,lower.tail = FALSE)或等價的,ppois(x-1 lambda,lower.tail = FALSE )。 – user1357015
是的,沒錯。 –
看[這裏](HTTP://計算器.com/questions/7681756/rounding-numbers-in-r-to-specified-number-of-digits/7682869)和[here](http://stackoverflow.com/questions/3245862/format-numbers-to-重要人物 - 很好的在r) – nograpes
嗨,我已經試過prettyNum,格式和signif,但它總是出來0! – user1357015
您無法獲得小於2.2e-16的p值。 http://stackoverflow.com/questions/6970705/why-cant-i-get-a-p-value-smaller-than-2-2e-16 – Chargaff