Дирихле-полиномиальный код WinBUGS

Я пытаюсь закодировать полиномиальную модель дирихле, используя ОШИБКИ. В основном у меня 18 регионов и 3 категории на регион. Например, область 1: 0,50 принадлежит низкому уровню, 0,30 - среднему значению и 0,20 - высокому уровню. Список, конечно же, продолжается до 18 региона с разными пропорциями. Единственный код, который я получил, - это

`model  {
 for (i in 1:N) {
 x[1:3] ~ dmulti(p[],n[i])
 p[1:3] ~ ddirch(alpha[])
 }
 for (k in 1:3) {
 alpha[k] <- 1
 }
 }
 DATA list(n=c(38483, 2259, 1900),x=c(29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808), N=3)`

Я, например, сначала сократил его до 3 регионов. После нажатия на кнопку «gen inits» отображается «Dirichlet36». Пожалуйста, помогите мне это закодировать.


person user3764358    schedule 22.06.2014    source источник
comment
Это не ясно - если x полиномиальные, они должны быть целыми числами. Кроме того, указанный вами код не воспроизводит указанную вами ошибку. Похоже, что x и p должны быть матрицами, например x [i, 1: 3], p [i, 1: 3], и если x должен быть матрицей, ее необходимо определить в данных как нечто вроде структуры (.Data = ..., .Dim = c ())   -  person Chris Jackson    schedule 27.06.2014


Ответы (1)


Это может быть полезно (источник):

Изучение параметров распределения Дирихле

Предположим, что в рамках модели существует J массивов вероятностей p [j, 1: K], j = 1, ..., J, где K - размерность каждого массива и сумма (p [j, 1: K]) = 1 для всех j. Мы даем каждому из них априор Дирихле:

      p[j, 1:K] ~ ddirch(alpha[])

и мы хотели бы узнать об альфа []. Однако параметры alpha [] распределения Дирихле не могут быть стохастическими узлами. Хитрость заключается в том, чтобы заметить, что если delta [k] ~ dgamma (alpha [k], 1), то вектор с элементами delta [k] / sum (delta [1: K]), k = 1, ..., K - это Дирихле с параметрами alpha [k], k = 1, ..., K. Таким образом, следующая конструкция должна позволить узнать о параметрах alpha []:

      for (k in 1:K) {
              p[j, k] <- delta[j, k] / sum(delta[j,])
              delta[j, k] ~ dgamma(alpha[k], 1)
      }

Апор можно поставить прямо на альфа [k].

person Silvia    schedule 16.08.2014