NaN, полученные при использовании бета-биномиальной модели aodml в пакете aods3 - PullRequest
2 голосов
/ 03 августа 2020

При попытке использовать функцию aodml для соответствия GLM бета-биномиального распределения с моими собственными данными я получаю предупреждающее сообщение о том, что были произведены NaN. Когда я пытался запустить ту же функцию с набором данных, приведенным в примере пакета aods3, я получаю такие же предупреждающие сообщения.

Код:

library(aods3)
data(orob2)
fm1<-aodml(cbind(m, n-m)~seed, data=orob2, family="bb")

Warning messages:
1: In lbeta(a, b): NaNs produced

У меня есть подозрение, что предупреждение вызвано cbind(m, n-m), но я не знаю почему и как? Есть идеи, особенно странные, поскольку это происходит с данными примера? Я что-то здесь упустил?

1 Ответ

1 голос
/ 03 августа 2020

Проблема здесь в том, что процедура оптимизации пробует по пути отрицательное значение параметра дисперсии. Вы можете убедиться в этом сами, установив

options(warn=2, error=recover)

, который указывает, что предупреждения преобразуются в ошибки и что ошибки запускают режим отладки. Как только вы это сделаете, повторно запустите команду aodml(...), выберите кадр 4 и распечатайте значения m, n, mu и k, передаваемые в dbetabin. Вы увидите, что k отрицательно.

Вы можете решить эту проблему, установив phi.scale="log", который будет соответствовать параметру дисперсии в логарифмической шкале (что в любом случае имеет больше смысла).

...