我正在调试一组更大的嵌套模型,这些模型只会在优化过程中出现问题。在归零导致错误的过程中,我遇到了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)))