Как написать код и данные в winBUGS для иерархического моделирования - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь написать код для двухуровневой иерархической модели в winBUGS. Когда я загружаю модель, это синтаксически правильно. Тем не менее, когда я загружаю данные, он говорит «ожидаемый оператор сбора c». Я не могу понять, где я иду не так. Любые предложения будут великолепны.

model {
for (i in 1:n) { # N of countries
    for (j in 1:m) { # M of years
        MEASLES[i, j] ~ dnegbin(p[i, j], r)
        p[i, j] <- r/(mu[i, j] + r)
log(mu[i, j]) <- 1*lnPOP[i] + alpha + beta.PSP*ZlnPSP[i] + u[Country[i]]*(j-1)
}
u[i] ~ dnorm(0, tau.u)

r ~ dcat(pi[])
for (k in 1:max) {
pi[k] <- 1/max
}
}
alpha ~ dnorm(0, 0.001)
beta.PSP ~ dnorm(0, 0.001)
tau.u <- 1/(sigma.u*sigma.u)
sigma.u ~ dunif(0, 100)
tau.e <- 1/(sigma.e*sigma.e)
sigma.e ~ dunif(0, 100)
}

Данные - я упростил ради публикации в 4 странах с 9 измерениями во времени.

list(n=4, m=9, max=1000, Country=c(1, 2, 3, 4), 
MEASLES=structure(
.Data=c(8204, 0, 25, 2302, 103, 18, 112, 0, 63, 
        258, 635, 11699, 2219, 118, 1449, 4458, 8523, 1190, 
        426, 786, 210, 392, 55, 288, 4244, 10469, 637, 
        478, 0, 8, 2672, 7, 1, 853, 5, 1), 
        .Dim=c(4, 9)), 
 lnPOP=structure(
.Data=c(17.18, 17.26, 17.46, 17.32, 17.40, 17.44, 17.42, 17.48, 17.50,
        16.79, 16.47, 17.11, 16.62, 17.14, 17.00, 17.04, 17.07, 16.97, 
        16.06, 16.15, 15.89, 16.03, 16.17, 16.09, 15.74, 15.59, 16.12, 
        14.27, 14.61, 14.53, 14.36, 14.55, 14.57, 14.52, 14.43, 14.59), 
        .Dim=c(4, 9)), 
ZlnPSP=structure(
.Data=c(-0.32853, -0.00199, 0.11072, 0.15921, -0.16879, 0.11072, 0.29035, 0.22724, 0.38728, 
        0.03694, -0.05760, 0.32214, -0.68137, -0.05236, 0.54246, 0.25424, 0.40203, 0.38728, 
        -0.25755, -0.21162, -0.64162, -0.39367, -0.32409, -0.23751, -0.85123, -0.86088, -0.13196, 
        -0.97897, 0.03619, -0.30853, -0.34436, -0.26128, -0.21842, 0.04169, 0.18773, 0.40043), 
        .Dim=c(4, 9)))
...