Функция для модели означает в зазубринах - PullRequest
0 голосов
/ 04 сентября 2018

Я использую зазубрины для моделирования обратных задач из байесовской структуры. Я хотел бы знать, могу ли я включить функцию для определения параметра mu в модели jags. Например

# Define the model:
modelString = "
model {
for ( i in 1:Ntotal ) {
  myData[i] ~ dnorm(mu[i] ,1/sigma^2 )
  mu[i]=function(c,fi){...}
}
  c  ~ dnorm( 9 , 1/9 )
  fi ~ dnorm( 24 , 1/4 )
}

когда я включаю функцию, я получаю сообщение об ошибке: Ошибка анализа файла модели: синтаксическая ошибка в строке 6 рядом с "{"

Есть ли способ включить функцию в модель?

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Короткий ответ: нет способа определить новую функцию непосредственно в BUGS / JAGS так, как вам нужно, потому что BUGS не является языком программирования. Вы ограничены использованием функций и дистрибутивов, перечисленных в руководстве пользователя JAGS, или доступны для использования путем загрузки внешних модулей JAGS, таких как runjags или jags-wiener или (в настоящее время небольшое количество), других.

Немного более длинная версия состоит в том, что вы можете определять свои собственные функции и распределения в JAGS, написав свой собственный модуль для указания желаемой функции / распределения в C ++, а затем загрузив его в JAGS. Официальная документация JAGS в настоящее время не содержит подробностей, но опубликовано руководство:

Wabersich, D. и J. Vandekerckhove. 2014. Расширение JAGS: учебное пособие по добавлению пользовательских дистрибутивов в JAGS (с примером диффузионной модели). Поведение. Местожительство Методы 46: 15–28. DOI: 10,3758 / s13428-013-0369-3

.

Это, очевидно, требует знакомства с C ++, но это не так сложно, если вы уже являетесь программистом C ++. Установить модуль намного проще, если вы встраиваете модуль расширения JAGS в пакет R, как это делает пакет runjags (смотрите в каталоге / src). Если вы еще не являетесь программистом C ++, лучше обратиться за помощью.

Надеюсь, это поможет,

Мэтт

---

Редактировать: также стоит сказать, что, возможно, есть способ делать то, что вы хотите в BUGS / JAGS, просто то, что вы хотели реализовать (написание функции внутри модели JAGS), не является жизнеспособным решением. Если вы объясните свою реальную проблему более подробно (возможно, в новом вопросе), то вы можете получить решение, которое вы не рассматривали.

...