我正在使用带有jjags的jags进行带有协变量调整的贝叶斯网络元分析。
可以在此处下载数据和模型:https://www.dropbox.com/sh/krujfh8xgjhxclv/AACdjhnIYV-o1Mv9lvUOL4B2a?dl=0。
我的问题与遗漏协变量的处理有关。 如果我通过省略所有缺少协变量数据的案例来运行所附代码,则一切正常。但是,当尝试使用包括所有数据的模型拟合时,我收到以下错误:
Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, :
RUNTIME ERROR:
Compilation error on line 30.
Cannot evaluate subset expression for ssumdev
我知道这是因为协变量数据中的NA不能被子集化。但是我正在努力解决它。因此,我想问一下是否有解决方案来避免此错误并通过包含缺失的协变量数据来运行模型?
rm(list = ls())
library(rjags)
# Defining some MCMC parameters for JAGS
nchains <- 3; # How Many Chains?
nadapt<-500
nburnin <- 500; # How Many Burn-in Samples?
nsamples <- 500; # How Many Recorded Samples?
nthin <- 10;
# Data
datasrc <- read.csv('Data.csv', header=TRUE)
datasrc[] <- lapply(datasrc, function(x){
x[is.nan(x)] <- NA
x
})
datasrc<-subset(datasrc,datasrc$XSevag!="NA");
mmu<-mean(datasrc$XSevag);
basenumbers<-linspace(14,44,31);base<-c(mmu,basenumbers);
datastruct<-list(z=base, nz=length(base),ns=length(datasrc$t1),nt=22,mmu=mmu,base=base,id=c(datasrc$id),na=c(datasrc$na),
t=structure(.Data=c(datasrc$t1,datasrc$t2,datasrc$t3), .Dim=c(length(datasrc$t1),3)),
r=structure(.Data=c(datasrc$r1,datasrc$r2,datasrc$r3), .Dim=c(length(datasrc$t1),3)),
n=structure(.Data=c(datasrc$n1,datasrc$n2,datasrc$n3), .Dim=c(length(datasrc$t1),3)),
XSevag=c(datasrc$XSevag))
model.file1 = "ModelA1.txt"
mod1 <- jags.model(file =model.file1, data=datastruct, n.chains=nchains, n.adapt=nadapt);
Liso,非常感谢您的帮助