我正在调试一组更大的嵌套模型,这些模型只会在优化过程中出现问题。在归零导致错误的过程中,我遇到了rpois()函数中的异常行为。

似乎具有很大的平均值,rpois()返回NA而不是值。此问题不会生成警告。请参见下面的可复制代码集。

> rpois(1,3000000000)
[1] NA


我的问题有两个:
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


在这种情况下,Normal近似值应该非常精确(如果均值大于100,则通常非常好!):如果您的均值大于(例如)0.999*.Machine$integer.max,则可以使用round(rnorm(1,mean=lambda,sd=sqrt(lambda)))

10-04 12:16