Я новичок в WinBUGS/OpenBUGS и испытываю трудности с отладкой своего кода.
Кто-нибудь знает список потенциальных сообщений об ошибках для моделей BUGS и их значения на простом английском языке?
Я новичок в WinBUGS/OpenBUGS и испытываю трудности с отладкой своего кода.
Кто-нибудь знает список потенциальных сообщений об ошибках для моделей BUGS и их значения на простом английском языке?
В руководстве есть список некоторых распространенных ошибок. Я добавил несколько дополнительных замечаний из собственного опыта:
ожидаемое имя переменной указывает на неподходящее имя переменной. Иногда я получаю эту ошибку при предоставлении данных, возможно, я использовал 1.02e04
вместо 1.02E04
.
неопределенная переменная — переменные в файле данных должны быть определены в модели (просто поместите их как константы или с нечеткими априорными значениями). Если логический узел сообщается как неопределенный, проблема может быть связана с узлом на «правой стороне». Иногда я получаю эту ошибку, когда удаляю переменную из модели, но не из данных, или пропустил запятую в данных.
просканирован недействительный или неожиданный токен – проверьте, заполнено ли поле значения логического узла в Doodle.
index out of range — обычно указывает, что циклический индекс выходит за пределы размера вектора (или размера матрицы); иногда, однако, появляется, если # был опущен в начале строки комментария
Слишком большой линейный предиктор в пробит-регрессии указывает на числовое переполнение. Ниже приведены возможные решения для ловушки «неопределенный реальный результат».
слишком сложное логическое выражение — логический узел определяется в терминах слишком большого количества параметров/констант или слишком большого количества операторов: попробуйте ввести дополнительные логические узлы для представления частей общего вычисления; например, a1 + a2 + a3 + b1 + b2 + b3 можно записать как A + B, где A и B — более простые логические выражения a1 + a2 + a3 и b1 + b2 + b3 соответственно. Обратите внимание, что линейные предикторы со многими терминами должны быть сформулированы путем «векторизации» параметров и ковариат, а затем с использованием функции inprod(.,.)
невозможно выбрать метод обновления означает, что ограничение в программе было нарушено
Вы также можете попасть в ловушку в начале или во время MCMC. В руководстве BUGS перечислены следующие распространенные ловушки (я всегда получаю первые две, никогда не встречал последние две):
неопределенный реальный результат указывает на числовое переполнение. Возможные причины включают в себя:
может произойти, если все начальные значения равны. Пробит-модели особенно восприимчивы к этой проблеме, т.е. генерируют неопределенные реальные результаты. Если пробит является стохастическим узлом, это может помочь установить разумные границы его распределения, например.
probit(p[i]) <- delta[i]
delta[i] ~ dnorm(mu[i], tau)I(-5, 5)
Из этой ловушки иногда можно выбраться, просто нажав кнопку обновления. Эквивалентная конструкция
p[i] <- phi(delta[i])
может быть более снисходительным.
Возможные причины индексного массива вне допустимого диапазона:
переполнение стека может произойти, если существует рекурсивное определение логического узла.
Разыменование NIL (чтение) может происходить при компиляции в некоторых случаях, когда выполняется недопустимое преобразование, например массив в скаляр.
Сообщения-ловушки, относящиеся к DFreeARS, указывают на численные проблемы с алгоритмом адаптивного отклонения без производных, используемым для логарифмически вогнутых распределений. Одна из возможностей - перейти на выборку «Срез».
Это Руководство пользователя WinBUGS может оказаться полезным.