library(rjags)
jags_code = "model{
for (i in 1:n){
Y[i] ~ dnorm(mu[i], tau)
mu[i] <- beta0 + beta1*x[i]}
beta0 ~ dnorm(0,0.001)
beta1 ~ dnorm(0,0.001)
eta <- dgamma(0.1/2, 0.1/2)
tau ~ dgamma(5/2, 5*eta/2)"
jags_data = list(x = c(5,1,2,3,4),
Y = c(6,11,12,3,4), n=5)
jags_model = jags.model(textConnection(jags_code), data=jags_data)
update(jags_model, 10000)
samp <- coda.samples(jags_model, variable.names=c('beta0', 'beta1', 'eta'),
n.iter=5000)
summary(samp)
plot(samp)
Привет, я пытаюсь запустить сэмплер Гиббса и подогнать линейную регрессию с помощью rjags. Однако приведенный выше код выдает такую ошибку.
Error in jags.model(textConnection(jags_code), data = jags_data) :
Error parsing model file:
syntax error on line 10 near ""
Я предполагаю, что это связано с тау, который содержит эта в своем аргументе. Как я могу это решить?
Сообщение об ошибке, которое вы получили, связано с тем, что вы не предоставили закрывающую фигурную скобку для сопряжения с открывающей фигурной скобкой оператора model
.
Как только вы исправите эту ошибку, вы также заметите, что случайно использовали eta <-
, а не eta ~
, что вызовет ошибку.
Неверное количество аргументов в функции dgamma
Итак, полностью фиксированный код
library(rjags)
jags_code = "model{
for (i in 1:n){
Y[i] ~ dnorm(mu[i], tau)
mu[i] <- beta0 + beta1*x[i]}
beta0 ~ dnorm(0,0.001)
beta1 ~ dnorm(0,0.001)
eta ~ dgamma(0.1/2, 0.1/2)
tau ~ dgamma(5/2, 5*eta/2)}"
jags_data = list(x = c(5,1,2,3,4),
Y = c(6,11,12,3,4), n=5)
jags_model = jags.model(textConnection(jags_code), data=jags_data)
который будет работать нормально