Я все еще зелен в обращении с байесовскими методами.
Немного запустив байесовский анализ со случайным воздействием на реальные данные, я столкнулся со следующей ошибкой «слипер застрял в значении с бесконечной плотностью», я попытался изменить начальные значения параметра точности (основываясь на предложении, которое я нашел в stackoverflow) , а также другие начальные значения для моих параметров, но это не решило проблему. Вот часть моего кода
cat("model
{
for( i in 1 : N) {
D[i] ~ dpois(r[i])
log(r[i]) <- mu[i] + log(pt[i])
mu[i] ~ dnorm(theta,precision)
}
theta ~ dnorm(0.0,1.0E-6)
ExpTheta <- exp(theta)
tau1 ~ dgamma(0.001,0.001)
precision <- 1/(tau1*tau1)
}", file="myfile.txt")
Я заметил, что следующие проблемы решили:
- Усечение нормального априора в форме (тета ~ dnorm (0,1.0E-5) T (0,0.99)
Проблема с вышеуказанным решением в моем случае состоит в том, что мои оценки превышают обычные. Во-вторых, я не очень понимаю, как усеченная нормаль вписывается в мое решение. Может ли кто-нибудь дать мне представление об усеченной норме и как это влияет на интерпретацию результатов, полученных с ее помощью?
- Второй вариант заключался в использовании очень малого количества итераций. Я наблюдал с небольшим числом итераций, что модель перестает выдавать ошибку.
Проблема с этим заключалась в том, что конвергенция не была подозрительной.
- Третий вариант, который сработал, заключался в том, что перед гаммой (0,001,0,001) мне пришлось изменить гамму (1,1). Я не уверен, как переход от гаммы (0,001,0,001) к гамме (1,1) повлияет на мою интерпретацию, но полученный результат кажется разумным.
Буду признателен за некоторые замечания о достоинствах / недостатках вышеупомянутых исправлений в отношении процесса моделирования и его влияния на вывод.
Дополнительная информация, D - наблюдаемый счет, pt - человеко-время (смещение).