带有分类变量的RJAGS编译会导致索引超出范围错误

问题描述 投票:1回答:1

背景尝试在铁路越野赛中为骑车人建模volume,与周末相比,weekday的使用量要少。 RailTrail中的mosaicData包含先锋谷规划委员会收集的有关本地轨道交通的数据。在90天的每一天中,他们都记录了轨道volume(用户数)以及它是否为weekday(如果是,则为TRUE,否则为FALSE)。

模型

Yi =第i天的跟踪量(用户数)Xi = 1(工作日),0(周末)。

喜好

  • Yi〜N(mi,s ^ 2)
  • mi = a + bXi

优先级

  • a〜N(400,100 ^ 2)
  • b〜N(0,200 ^ 2)
  • s〜Unif(0,200)

代码

尝试在R中如下实现:

library(rjags)
library(mosaicData)

data(RailTrail)

# DEFINE the model    
rail_model_1 <- "model{
    # Likelihood model for Y[i]
    for(i in 1:length(Y)) {
      Y[i] ~ dnorm(m[i], s^(-2))
      m[i] <- a + b[X[i]]
    }

    # Prior models for a, b, s
    a ~ dnorm(400, 100^(-2))
    b[1] <- 0
    b[2] ~ dnorm(0, 200^(-2))
    s ~ dunif(0, 200)
}"

尝试使用以下代码编译以上模型:

# COMPILE the model
rail_jags_1 <- jags.model(
  textConnection(rail_model_1),
  data = list(Y = RailTrail$volume, X = RailTrail$weekday),
  inits = list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 10)
)

错误

但是,在尝试编译时出现以下错误:

Error in jags.model(textConnection(rail_model_1), data = list(Y = RailTrail$volume,  : 
  RUNTIME ERROR:
Compilation error on line 5.
Index out of range taking subset of  b

问题

您能帮我解决这里的问题吗?我在Ubuntu 20.04,MacOS Catalina和RStudio Cloud中进行了测试-同样的错误。 rjags.version()4.3.0

r bayesian categorical-data rjags bayesglm
1个回答
0
投票

[由@user20650共享:

该代码在编译语句即,中使用显式X = factor(RailTrail$weekday))进行工作]

# COMPILE the model
rail_jags_1 <- jags.model(
  textConnection(rail_model_1),
  data = list(Y = RailTrail$volume, X = factor(RailTrail$weekday)),
  inits = list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 10)
)
    
© www.soinside.com 2019 - 2024. All rights reserved.