Сообщение об ошибке Slicer застрял на значение с бесконечной плотностью - PullRequest
1 голос
/ 06 июня 2019

Я все еще зелен в обращении с байесовскими методами. Немного запустив байесовский анализ со случайным воздействием на реальные данные, я столкнулся со следующей ошибкой «слипер застрял в значении с бесконечной плотностью», я попытался изменить начальные значения параметра точности (основываясь на предложении, которое я нашел в 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")

Я заметил, что следующие проблемы решили:

  1. Усечение нормального априора в форме (тета ~ dnorm (0,1.0E-5) T (0,0.99)

Проблема с вышеуказанным решением в моем случае состоит в том, что мои оценки превышают обычные. Во-вторых, я не очень понимаю, как усеченная нормаль вписывается в мое решение. Может ли кто-нибудь дать мне представление об усеченной норме и как это влияет на интерпретацию результатов, полученных с ее помощью?

  1. Второй вариант заключался в использовании очень малого количества итераций. Я наблюдал с небольшим числом итераций, что модель перестает выдавать ошибку.

Проблема с этим заключалась в том, что конвергенция не была подозрительной.

  1. Третий вариант, который сработал, заключался в том, что перед гаммой (0,001,0,001) мне пришлось изменить гамму (1,1). Я не уверен, как переход от гаммы (0,001,0,001) к гамме (1,1) повлияет на мою интерпретацию, но полученный результат кажется разумным.

Буду признателен за некоторые замечания о достоинствах / недостатках вышеупомянутых исправлений в отношении процесса моделирования и его влияния на вывод.

Дополнительная информация, D - наблюдаемый счет, pt - человеко-время (смещение).

...