2014-05-20 50 views
4

我正在調試一組較大的嵌套模型,這些嵌套模型在優化期間只會遇到問題。在我認爲導致錯誤的調零過程中,我遇到了rpois()函數中的異常行爲。rpois在R中產生NA大的方法(lambda)

看來,非常大的平均值,rpois()返回NA而不是一個值。此問題不會產生警告。請參閱下面的代碼,以獲得可重複的設置。

> rpois(1,3000000000) 
[1] NA 

我的問題是雙重的:
1 - 它爲什麼顯示這種行爲(?是那裏的rpois功能的整數大小的最大限制),並
2 - 是有工作以防止產生NA(即使這是爲了將平均輸入的大小限制爲某個較小值)?

我在64倍32倍的運行版本[R 3.0.2的Windows 7

+0

爲什麼在64位操作系統上使用32位R? – Roland

回答

6

的問題是,rpois返回一個整數,並將其轉換價值NA如果該值大於最大可能的整數值( .Machine$integer.max)。

rpois(1,.Machine$integer.max/1.00001) 
## [1] 2147428954 
rpois(1,.Machine$integer.max/1) 
## [1] NA 

正態近似應在這種情況下瘋狂精確(它通常是非常好的,如果平均值大於100!):如果你的意思是不是(說)0.999*.Machine$integer.max時,您可以使用round(rnorm(1,mean=lambda,sd=sqrt(lambda)))