【问题标题】:rpois generates NA with large means (lambda) in Rrpois 在 R 中生成具有大均值 (lambda) 的 NA
【发布时间】:2014-05-20 22:19:17
【问题描述】:

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

似乎对于非常大的平均值,rpois() 返回 NA 而不是一个值。此问题不会生成警告。请参阅下面的一组可重现的代码。

> rpois(1,3000000000)
[1] NA

我的问题有两个:
1 - 为什么会显示这种行为(rpois 函数的整数大小是否有最大限制?)和
2 - 是否有解决办法来防止 NA 的产生(即使这是为了将平均输入的大小限制为更小的值)?

我在 64x Windows 7 中运行 32x R 版本 3.0.2。

【问题讨论】:

  • 为什么在 64 位操作系统上使用 32 位 R?

标签: r lambda poisson


【解决方案1】:

问题在于rpois 返回一个整数,如果该值大于最大可能的整数值 (.Machine$integer.max),它会将值转换为 NA

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)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多