我正在调试一组更大的嵌套模型,这些模型在优化期间只会遇到问题.在将我认为导致错误归零的过程中,我遇到了rpois()函数中的异常行为.
似乎具有非常大的平均值,rpois()返回NA而不是值.此问题不会生成警告.请参阅下面的可重现代码集.
> rpois(1,3000000000)
[1] NA
Run Code Online (Sandbox Code Playgroud)
我的问题有两个:
1 - 为什么它显示出这种行为(rpois函数的整数大小是否存在最大限制?)和
2 - 是否有解决方法来阻止NA的生成(即使这是将平均输入的大小限制为某个较小的值)?
我在64x Windows 7中运行32x R版本3.0.2.
问题是rpois返回一个整数,NA如果该值大于最大可能的整数值(.Machine$integer.max),则将值转换为.
rpois(1,.Machine$integer.max/1.00001)
## [1] 2147428954
rpois(1,.Machine$integer.max/1)
## [1] NA
Run Code Online (Sandbox Code Playgroud)
在这种情况下,正态近似应该是非常精确的(如果平均值大于100,通常非常好!):如果你的平均值大于(比方说)0.999*.Machine$integer.max,你可以使用round(rnorm(1,mean=lambda,sd=sqrt(lambda)))