Определение новых функций и дистрибутивов на языке BUGS/JAGS/STAN

Я новичок в мире статистического анализа и недавно заинтересовался языком моделирования BUGS/JAGS/STAN. Что меня действительно удивляет, так это то, что я не видел ни одного примера определения новых функций или дистрибутивов, чтобы избежать дублирования кода. Например, скажем, я часто использую квадрат распределения Пуассона, можно ли сделать следующее?

dsqpo <- function(lambda) {
  tmp ~ dpois(lambda)
  tmp2 <- tmp * tmp
  return(tmp2)
}

а потом позже

model{
  ...
  x ~ dsqpo(alpha)
  y ~ dsqpo(beta)
}

Без определения новой временной переменной каждый раз.


person Community    schedule 21.04.2014    source источник


Ответы (3)


Для Стэна функции будут доступны в следующем релизе. Текущая версия v2.2.0 не содержит определяемых пользователем функций как части языка.

Предлагаемый синтаксис см. по адресу: https://github.com/stan-dev/stan/wiki/Function-Syntax-and-Semantics-Design

Для получения дополнительной помощи, связанной со Stan, посетите группу stan-users в Google: https://groups.google.com/forum/#!forum/stan-users

person syclik    schedule 21.04.2014

В WinBUGS, OpenBUGS и JAGS вы не можете определять новые функции как часть языка моделирования. Однако вы можете сделать это с помощью низкоуровневого программирования на Component Pascal (для Win/OpenBUGS) или C++ (для JAGS).

Для WinBUGS см. WBDev (http://www.winbugs-development.org.uk/wbdev.html). Для OpenBUGS см. Подкаталог UDev установленной программы, который содержит руководство в формате PDF, в основном это работает так же, как WinBUGS.

Для JAGS это не документировано должным образом — есть написанное пользователем руководство по добавлению новых дистрибутивов по адресу http://www.ncbi.nlm.nih.gov/pubmed/23959766, хотя я ничего не знаю о функциях.

person Chris Jackson    schedule 23.04.2014

В недавней статье «Байесовский вывод со Стэном: руководство по добавлению пользовательских дистрибутивов» подробно описано, как это сделать. Я включаю doi для постоянной ссылки.

Справочник

Аннис, Дж., Миллер, Б.Дж., и Палмери, Т.Дж. (2016). Байесовский вывод со Стэном: руководство по добавлению пользовательских дистрибутивов. Методы исследования поведения, 1–24. http://doi.org/10.3758/s13428-016-0746-9

person Ben Vincent    schedule 17.06.2016
comment
Боюсь, вам придется «купить» этот учебник для неакадемиков. - person sachinruk; 22.08.2016
comment
Вы можете написать авторам по электронной почте или выполнить поиск на scihub. - person Ben Vincent; 22.08.2016