在R/JAGS中获取子集的维度不匹配

nqwrtyyt  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(191)

我试图计算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)

我该怎么解决呢?

yftpprvb

yftpprvb1#

您已将“alpha”定义为矩阵。如果要选择矩阵的子集,则应使用alpha[,]。因此,如果将ddirch(alpha[1:S])更改为ddirch(alpha[1, 1:S]),则此错误可能会得到解决。
此外,在定义alpha时,您确定了ncol = 4nrow = 4(4 *4 = 16),同时您有12个元素。

相关问题