Многоуровневое моделирование в JAGS: невозможно разрешить узел

Я строю многоуровневую модель в JAGS (JAGS версия 3.4.0). Я хочу построить изменяющуюся модель пересечения наклона. Я продолжаю получать сообщение об ошибке, и я не знаю, в чем проблема и как с ней бороться. Я был бы очень признателен за любую помощь!

Вы можете найти данные для кода здесь: https://www.dropbox.com/s/ibk3nqwc1pm0kpo/Replication_Democratization%20copy.dta?dl=0

Вот код:

    library(rjags)
    load.module("glm")
    load.module("lecuyer")
    attach(soestData)

    yearDummies = model.matrix(~factor(year))
    X0  <- data.frame(1, "Population" = lag(logpwt_pop2,2), "log GDP" = lag(logGdp,2), "logTrade" = lag(logTrade,2), 
              "Civil War" = lag(civilwar,2), "FDI" = lag(wdi_fdi,2), "West Trade" = lag(westTrade,2),
              "Protest" = lag(protest,2), "Oil" = lag(oilmil,2), yearDummies)

    cat('model {
    for (i in 1:n){
       y[i] ~ dnorm (y.hat[i], tau.y)
       y.hat[i] <- inprod(b.0,X.0[i,]) + a[country[i]] + b[country[i]]*x[i] 
     }

     tau.y <- pow(sigma.y, -2) 
     sigma.y ~ dunif (0, 100)
     for (k in 1:K.0){
       b.0[k] ~ dnorm (0, .0001)
     }
     for (j in 1:J){
       a[j] <- xi.a*B.raw[j,1]
       b[j] <- xi.b*B.raw[j,2]
       B.raw[j,1:2] ~ dmnorm (B.raw.hat[j,], Tau.B.raw[,]) 
       B.raw.hat[j,1] <- mu.a.raw
       B.raw.hat[j,2] <- mu.b.raw 
     }       
     mu.a <- xi.a*mu.a.raw
     mu.b <- xi.b*mu.b.raw 
     mu.a.raw ~ dnorm (0, .0001) 
     mu.b.raw ~ dnorm (0, .0001)
     xi.a ~ dunif (0, 100) 
     xi.b ~ dunif (0, 100)
     Tau.B.raw[1:2,1:2] ~ dwish (W[,], df)
     df <- 3
     Sigma.B.raw[1:2,1:2] <- inverse(Tau.B.raw[,]) 
     sigma.a <- xi.a*sqrt(Sigma.B.raw[1,1]) 
     sigma.b <- xi.b*sqrt(Sigma.B.raw[2,2])
     rho <- Sigma.B.raw[1,2]/sqrt(Sigma.B.raw[1,1]*Sigma.B.raw[2,2]) }
       ',file={t <- tempfile()})



   W <- diag (2)
   data <- list("y"=delta2ifhpol,
         "x"=lag(dm_sancgoal,2),
         "X.0" = X0,
         "country"=cname,
         "n"=nrow(soestData),
         "J"=length(unique(cname)),
         "K.0" = ncol(X0),
         "W" = W )

        # inits
       random.no <- round(runif(3,0,1000),0)
       inits <- list( 
       list(".RNG.name"="lecuyer::RngStream", ".RNG.seed"=random.no[1]),
       list(".RNG.name"="lecuyer::RngStream", ".RNG.seed"=random.no[2]),
       list(".RNG.name"="lecuyer::RngStream", ".RNG.seed"=random.no[3]) )

      parameters.to.save <-c ("b.0", "a", "b", "mu.a", "mu.b", "sigma.y", "sigma.a","sigma.b", "rho")
      jags <- jags.model(t.easy, # temporary file
               data=data.easy,
               inits=inits,
               n.chain=3 )

После запуска этого кода я получаю это сообщение об ошибке

       Error in jags.model(t, data = data, inits = inits, n.chain = 3) : 
       RUNTIME ERROR:
       Compilation error on line 3.
       Unable to resolve node y.hat[1]
       This may be due to an undefined ancestor node or a directed cycle in the graph
       In addition: Warning message:
       In jags.model(t, data = data, inits = inits, n.chain = 3) :
         NAs introduced by coercion

Я понятия не имею, в чем проблема. Я указал каждый параметр и каждый предыдущий, и это не сработало. Я удалил все NA, и это не сработало... Я понятия не имею, что не так.

Какие-нибудь мысли?

0 ответов

Другие вопросы по тегам