4

最適化中にのみ問題が発生するネストされたモデルのより大きなセットをデバッグしています。rpois()エラーの原因と思われるものをゼロにするプロセス中に、関数で異常な動作に遭遇しました。

平均値が非常に大きい場合、値の代わりにrpois()返されるようです。NAこの問題は警告を生成しません。再現可能なコード セットについては、以下を参照してください。

> rpois(1,3000000000)
[1] NA

私の質問は 2 つあります:
1 - なぜこの動作を示しているのですか (rpois 関数の整数のサイズに最大制限はありますか?)、
2 - NA の生成を防ぐための回避策はありますか (それが平均入力のサイズをより小さい値に制限するには)?

64x Windows 7 で 32x R バージョン 3.0.2 を実行しています。

4

1 に答える 1

7

問題は、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)))

于 2014-05-20T22:23:43.840 に答える