2015-02-13 3 views
1

Есть ли аналогичная функция в jags как функция Rrep? Я хочу, чтобы создать массив, используя подобный код, как:Аналогичная функция для R "rep" в jags для создания массива?

n ~ dmulti(pi, N) # pi is a 3 dimensional probability vector, N is fixed 
    # the dimension of n is hard coded in this line: 
a <- c(rep(0, n[1]), rep(1, n[2]), rep(2, n[3])) 

Я прочитал инструкцию и не смог найти способ для достижения этой цели. Я понимаю, что Стэн, вероятно, допустил бы это, но я не мог использовать Стэна, потому что мне нужно сделать вывод о дискретных параметрах. Я очень ценю вашу помощь!

Этот вопрос также опубликован на JAGS help forum.

ответ

3

Я добавил функцию rep к версии разработки (будущему JAGS 4.0.0), о которой упоминал Мэтт и Джон, для этого требуется, чтобы второй аргумент фиксировался так, чтобы длина результирующего вектора могла быть определена при компиляции время.

+0

В моем примере кода была опечатка. n должен быть образцом из многочленного распределения с размером N, который является фиксированным. – qkhhly

1

Короткий ответ - нет, я боюсь, что нет. Одним из условий языка JAGS/BUGS является то, что переменные должны иметь фиксированные размеры (каждый элемент определяется ровно один раз) - в вашем примере a изменит размер размера в зависимости от вектора n. Могут быть другие способы получить результат, который вы ищете, но не используете этот подход.

Кстати, вы используете п дважды в этом кусочке кода (LHS и RHS из multinominal распределения), не допускается - хотя это может быть просто опечатка :)

Matt

0

Вы можете заполнить ваш вектор с некоторыми петлями:

library(R2jags) 

M <- function() { 
    for (i in 1:n[1]) { 
    a[i] <- 0 
    } 
    for (i in 1:n[2]) { 
    a[i + n[1]] <- 1 
    } 
    for (i in 1:n[3]) { 
    a[i + sum(n[1:2])] <- 2 
    } 
} 

j <- jags(list(n=3:5), NULL, 'a', M, DIC=FALSE) 
j$BUGSoutput$mean$a 

## [1] 0 0 0 1 1 1 1 2 2 2 2 2 

Однако, как @MattDenwood упоминалось, если сумма элементов n переменная это вызовет ошибку - a должна быть постоянной длины по всей Simulat ион.

Смежные вопросы