我试图计算R/JAGS中不同状态的跃迁概率,但我得到了以下错误-jags.model中的错误(模型文件,数据=数据,初始化=初始化值,n.chains = n.chains,:运行时间错误:第7行出现编译错误。维度不匹配,取alpha的子集
setwd("C:/Users/nibir/OneDrive/MA Applied Economics/Phd courses/Dissertation/code")
library(rjags)
library(runjags)
library(coda)
tt <- matrix(c(1251, 350, 0, 17,
0, 731, 0, 15,
0, 0, 0, 0),
ncol = 4, nrow = 3, byrow = TRUE)
modelstring="model{
p[1, 1:S] ~ ddirch(alpha[1:S])
p[2, 1:S] ~ ddirch(alpha[1:S])
p[3, 1] <- 0
p[3, 2] <- 0
p[3, 3:S] ~ ddirch(alpha[3:S])
tt[1, 1:S] ~ dmulti(p[1, 1:S], n[1])
tt[2, 1:S] ~ dmulti(p[2, 1:S], n[2])
tt[3, 3:S] ~ dmulti(p[3, 3:S], n[3])
}"
writeLines(modelstring,con = "TEMPmodel.txt")
S <- 4
n <- apply(tt, 1, sum)
alpha <- matrix(c(.88,.08,.02,.02,
.1,.7,.1,.1,
0,0,.7,.3),ncol = 4, nrow = 4, byrow = TRUE)
params <- c("p")
jags.data <- list("S", "n", "alpha", "tt")
library("R2jags")
set.seed(100)
jagsfit <- jags(data = jags.data, parameters.to.save = params,
model.file = "TEMPmodel.txt", n.chains = 3,
n.iter = 10000, n.thin = 5, progress.bar = "none")
print(jagsfit)
我该怎么解决呢?
1条答案
按热度按时间yftpprvb1#
您已将“alpha”定义为矩阵。如果要选择矩阵的子集,则应使用alpha[,]。因此,如果将
ddirch(alpha[1:S])
更改为ddirch(alpha[1, 1:S])
,则此错误可能会得到解决。此外,在定义alpha时,您确定了
ncol = 4
和nrow = 4
(4 *4 = 16),同时您有12个元素。