我正在尝试拟合一个多项逻辑回归模型,用于rjags
结果是具有 3 个级别的分类(名义)变量(Outcome),解释变量是年龄(连续)和组(具有 3 个级别的分类)。这样做时,我想获得Age和Group的后均值和 95% 基于分位数的区域。
我不是很擅长for loop
,我认为这是我为模型编写的代码无法正常工作的原因。
我的 beta 先验遵循正态分布,βj ∼ Normal(0,100) for j ∈ {0, 1, 2}。
可重现的 R 代码
library(rjags)
set.seed(1)
data <- data.frame(Age = round(runif(119, min = 1, max = 18)),
Group = c(rep("pink", 20), rep("blue", 18), rep("yellow", 81)),
Outcome = c(rep("A", 45), rep("B", 19), rep("C", 55)))
X <- as.matrix(data[,c("Age", "Group")])
J <- ncol(X)
N <- nrow(X)
## Step 1: Specify model
cat("
model {
for (i in 1:N){
##Sampling model
yvec[i] ~ dmulti(p[i,1:J], 1)
#yvec[i] ~ dcat(p[i, 1:J]) # alternative
for (j in 1:J){
log(q[i,j]) <- beta0 + beta1*X[i,1] + beta2*X[i,2]
p[i,j] <- q[i,j]/sum(q[i,1:J])
}
##Priors
beta0 ~ dnorm(0, 0.001)
beta1 ~ dnorm(0, 0.001)
beta2 ~ dnorm(0, 0.001)
}
}",
file="model.txt")
##Step 2: Specify data list
dat.list <- list(yvec = data$Outcome, X=X, J=J, N=N)
## Step 3: Compile and adapt model in JAGS
jagsModel<-jags.model(file = "model.txt",
data = dat.list,
n.chains = 3,
n.adapt = 3000
)
错误信息:
我一直在寻找帮助的来源:
http://people.bu.edu/dietze/Bayes2018/Lesson21_GLM.pdf
具有分类 X 的 JAGS 中的 Dirichlet 多项式模型
参考http://www.stats.ox.ac.uk/~nicholls/MScMCMC15/jags_user_manual.pdf,第 31 页
我刚刚开始学习如何使用这个rjags
包,所以任何提示/解释和相关来源的链接都将不胜感激!