Продольная иерархическая байесовская регрессия с JAGS

bayesian panel-data jags openbugs

391 просмотра

1 ответ

16 Репутация автора

Я совершенно новичок в JAGS / OpenBUGS, поэтому я был бы очень признателен за толчок в правильном направлении, когда дело доходит до определения моей модели. Я использую несбалансированные продольные данные, которые собраны 103 странами за 15 лет, где в этом случае выбрано 12 лет. DV - это коэффициент Джини, который не должен моделироваться как логарифмический, а может быть скорее бета, хотя сейчас основное внимание уделяется пониманию того, как скомпилировать модель в JAGS. Я использую модель с фиксированным эффектом в настоящее время.

Данные и код, который я использую:

> head(x)
          Year     II2       II3       II4     ..... II24
1          1       2.956233  40.90458 4.475183       16.443553
8          1       1.257794  85.47378 2.395186       19.333433
19         1       4.139706 141.07899 2.544640       25.555404
37         1       2.233664  98.51313 3.902835       42.533333
49         1       2.879734  61.39000 1.471334       18.884444
71         1       3.381762  60.23783 3.432614       16.334222


> head(y)
        Year       II1
1         1     0.3240000
8         1     0.2576667
19        1     0.3132500
37        1     0.2700000
49        1     0.2744286
71        1     0.3250000

dim(x)
1224   23

length(y)
1224  

Time <- 12, N <- length(y$II1)#No. of Obs.

dat <- list(x=x, y=y, N=N, Time=Time, p=dim(x)[2]), 
inits <- funtion(){list(tau.1=1, tau.2=1, eta=1, alpha=0, beta1=0, beta2=0, beta3=0)}

model6 <- "model{
for(i in 1:N){for(t in 1:Time){
y[i,t]~dlnorm(mu[i,t],tau.1)
mu[i,t] <- inprod(x[i,t],beta[])+alpha[i]}
alpha[i]~dnorm(eta, tau.2)}

for (j in 1:p) {
b[j]~dnorm(0,0.001)
}

eta~dnorm(0, 0.0001)
tau.2~dgamma(0.01,0.01)
tau.1~dgamma(0.01,0.01)


 }"

reg.jags <- jags.model(textConnection(model), data=dat, inits=inits, n.chains=1, n.adapt=1000)

И я продолжаю получать эту ошибку во время выполнения:

Error in jags.model(textConnection(model), data = dat, inits =   inits,  : 
RUNTIME ERROR:
Compilation error on line 3.
Index out of range taking subset of  y

Любые предложения о том, что я должен делать по-другому, будут очень благодарны! Я знаю, что есть 3 «хитрости», которые вы можете применить к несбалансированным данным, но я все еще немного озадачен тем, как все это работает, например, как JAGS считывает ввод данных.

ура

J

Автор: Nesvold Источник Размещён: 18.07.2016 08:14

Ответы (1)


0 плюса

812 Репутация автора

Ваш фрейм данных yимеет только 2 столбца. Но Timeесть 12. Где у вас есть

y[i,t]~dlnorm(mu[i,t],tau.1)

внутри петли

for(t in 1:Time){

Подумайте о том, что происходит, когда tидет до 3 (на пути к Time= 12).

Вы просите JAGS взглянуть на y [i, 3], которого не существует. Отсюда "Индекс вне диапазона".

Автор: Jacob Socolar Размещён: 14.08.2016 01:44
Вопросы из категории :
32x32