背景尝试在铁路越野赛中为骑车人建模volume
,与周末相比,weekday
的使用量要少。 RailTrail
中的mosaicData
包含先锋谷规划委员会收集的有关本地轨道交通的数据。在90天的每一天中,他们都记录了轨道volume
(用户数)以及它是否为weekday
(如果是,则为TRUE,否则为FALSE)。
模型
Yi =第i天的跟踪量(用户数)Xi = 1(工作日),0(周末)。
喜好
优先级
代码
尝试在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)
)