2014-05-20 7 views
4

Я отлаживаю большой набор вложенных моделей, которые во время оптимизации сталкиваются с проблемами. Во время процесса обнуления по тому, что, по моему мнению, вызывает ошибки, я столкнулся с необычным поведением в функции rpois().rpois генерирует NA с большими средствами (лямбда) в R

Похоже, что при очень больших средних значениях rpois() возвращает NA вместо значения. Эта проблема не вызывает предупреждения. См. Ниже для воспроизводимого набора кода.

> rpois(1,3000000000) 
[1] NA 

Мой вопрос два раза:
1 - почему он показывает такое поведение (? Есть ли ограничения на размер целого числа для функции rpois) и
2 - есть работа вокруг, чтобы предотвратить генерацию NA (даже если это ограничить размер среднего ввода до некоторого меньшего значения)?

Я бег 32x R версии 3.0.2 в Windows 7 64x

+0

Почему вы используете 32-битную R на 64-битной ОС? – Roland

ответ

6

Проблема заключается в том, что 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)))

 Смежные вопросы

  • Нет связанных вопросов^_^