Двусторонний байесовский дисперсионный анализ с зубцами - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь выполнить двухсторонний байесовский анализ ANOVA с зазубринами, но возникает ошибка, которую я не могу понять.

## data
set.seed(123)
n <- 30 
y <- log(rnorm(n, 3, 1))
x1 <- as.numeric(c(1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1, 1)) 
x2 <- as.numeric(c(2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1))
                                  
##
                                  
data <- list(n = length(y), 
             g = length(table(x1)),
             h = length(table(x2)),
             x1 = as.numeric(x1),
             x2 = as.numeric(x2),
             y = y)
                                  
## 
mean.x1 <- as.numeric(tapply(y,x1,mean))
mean.x2 <- as.numeric(tapply(y,x2,mean))
                                  
inits <- list(list( x1 = mean.x1, x2 = mean.x2, tau = c(2, 3)),
              list( x1 = mean.x1+10, x2 = mean.x2+10, tau = c(2, 3)*0.5),
              list( x1 = mean.x1-15, x2 = mean.x2-15, tau = c(2, 3)*2))
                                  
##
sink("model.txt")
cat('
model{
base ~ dnorm(0, 1.0E-6)
                                         
for(i in 1:g) {
x1[i] ~ dnorm(0.0, 1.0E-6)
}
                                         
for(i in 1:h) {
x2[i] ~ dnorm(0.0, 1.0E-6)
}
                                         
tau ~ dgamma(0.001, 0.001) 
sigma <- 1/sqrt(tau)
                                         
for (i in 1:n) {
mean[i] <- base + x1[g[i]] + x2[h[i]]
y[i] ~ dnorm(mean[i], tau)
}
}
')
sink()


##
library(jagsUI)
mcmc <- jags(data = data,
            inits = initis,
            parameters.to.save = c("x1","x2","sigma"), 
            model.file = "model.txt",
            n.chains = 3,n.adapt = 1000,
            n.iter = 12000,n.burnin = 2000,n.thin = 5)

Ошибка в jags.model (file = model.file, data = data, inits = inits, n.chains = n.chains,: RUNTIME ERROR: Ошибка компиляции в строке 17. Индекс выходит за пределы допустимого диапазона, принимая подмножество g

Также я хотел бы добавить термин взаимодействия.

Любой ответ будет полезным. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...