r语言 - 具有分类变量的 RJAGS 编译会引发索引超出范围错误



背景
尝试在铁路小径上对骑自行车的人进行volume建模,与周末相比,weekday少。mosaicDataRailTrail包含先锋谷规划委员会收集的有关当地铁路步道使用情况的数据。在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.

由@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)
)

最新更新