2013-11-21 3 views
2

Я получаю, что «эта цепочка содержит неинициализированные переменные», когда я загружаю inits для 3 цепей с прикрепленной моделью. Я ударил «gen init», чтобы продолжить. Это правильная вещь? Это не происходит с фиксированной моделью, но, как правило, происходит со случайными моделями. Просьба сообщить.Эта цепочка содержит неинициализированные переменные

#BUGS model 
model{ 
for(i in 1:ns){ 
    w[i,1] <- 0 
    delta[i,1] <- 0 
    mu[i] ~ dnorm(0,.0001) 
    for (k in 1:na[i]) { 
    r[i,k] ~ dpois(theta[i,k]) 
    theta[i,k] <- lambda[i,k]*E[i,k] 
    log(lambda[i,k]) <- mu[i] + delta[i,k] 
    dev[i,k] <- 2*((theta[i,k]-r[i,k]) + r[i,k]*log(r[i,k]/theta[i,k])) 
    } 
    resdev[i] <- sum(dev[i,1:na[i]]) 
    for (k in 2:na[i]) { 
    delta[i,k] ~ dnorm(md[i,k],taud[i,k]) 
    md[i,k] <- d[t[i,k]] - d[t[i,1]] + sw[i,k] 
    taud[i,k] <- tau *2*(k-1)/k 
    w[i,k] <- (delta[i,k] - d[t[i,k]] + d[t[i,1]]) 
    sw[i,k] <- sum(w[i,1:k-1])/(k-1) 
    } 
} 
for (c in 1:(nt-1)) { 
    for (k in (c+1):nt) { 
    lhr[c,k] <- (d[k]-d[c]) 
    log(hr[c,k]) <- lhr[c,k] 
    } 
} 
totresdev <- sum(resdev[]) 
d[1]<-0 
for (k in 2:nt){ 
    d[k] ~ dnorm(0,.0001) 
} 
sd ~ dunif(0,5) 
tau <- pow(sd,-2) 
} 

#data 
list(ns=9, nt=9)              
t[,1] t[,2] t[,3] t[,4] E[,1] E[,2] E[,3] E[,4] r[,1] r[,2] r[,3] r[,4] na[]  
1 2 3 4 224 226 221 223 19 11 15 7 4 
2 5 NA NA 818 806 NA NA 83 73 NA NA 2 
2 7 NA NA 412 429 NA NA 51 37 NA NA 2 
1 2 7 NA 4572 4563 4599 NA 869 730 736 NA 3 
1 7 NA NA 68 137 NA NA 8.8 13.7 NA NA 2 
1 6 NA NA 125 131 NA NA 4 5  NA NA 2 
2 8 9 NA 131 128 130 NA 10.6 20.2 18.1 NA 3 
1 2 8 NA 256 255 254 NA 79 73 48 NA 3 
2 8 NA NA 152 147 NA NA 38 24 NA NA 2 
END 

#inits 
list(d=c(NA, 0, 0, 0, 0, 0, 0, 0, 0), sd=1, mu=c(0, 0, 0, 0, 0, 0, 0, 0, 0)) 
list(d=c(NA, -1, -1, -1, -1, -1, -1, -1, -1), sd=4, mu=c(-3, -3, -3, -3, -3, -3, -3, - 3, -3)) 
list(d=c(NA, 2, 2, 2, 2, 2 ,2, 2, 2), sd=2, mu=c(-3, 5, -1, -3, 7, -3, -4, -3, -3)) 

ответ

5

Вы получите это сообщение, если не задали начальные значения неизвестного параметра. В вашем случае это будут случайные эффекты. Обычно ОК позволяет WinBUGS генерировать начальные значения для случайных эффектов. Как правило, если предыдущее является неопределенным, вы должны указать свои собственные начальные значения (чтобы избежать проблем с числовым переполнением в начале выборки). Если предыдущий является информативным (как и для случайного эффекта, если вы инициализировали параметры распределения случайных эффектов по разумным значениям), вы можете позволить WinBUGS сделать это.

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