我是用R调用WINBUGS中的模型,模型检验正确,但总是在读初始数据时报错,参数估计无法进行。
我做的是3参数多维项目反应理论的模型,
公式、先验分布、初值如下:
p(item(k),theta(i))=(c[j]+(1-c[j])/(1+exp(-1.7*(sum(a[i1]*theta[j1]+a[i2]*theta[j2]+...+a[ik]*theta[jk])+d[j])))
a[1:i,1:k]~dlnorm(0,0.5)
d[1:j]~dnorm(0,0.5)
c[1:j]~dbeta(2,5)
theta[1:n]~MVN(0,I)
INITS:
a[1:i,1:k]<-1
d[1:j]<-0
c[1:j]<-0.2
theta[1:n,1:k]<-0
下面是报错提示:
display(log)
check(C:/Users/dell/AppData/Local/Temp/RtmpYXSpK9/mirt3.odc.txt)
model is syntactically correcte
data(C:/Users/dell/AppData/Local/Temp/RtmpYXSpK9/data.txt)
data loaded
compile(3)
model compiled
inits(1,C:/Users/dell/AppData/Local/Temp/RtmpYXSpK9/inits1.txt)
chain initialized but other chain(s) contain uninitialized variables
inits(2,C:/Users/dell/AppData/Local/Temp/RtmpYXSpK9/inits2.txt)
chain initialized but other chain(s) contain uninitialized variables
inits(3,C:/Users/dell/AppData/Local/Temp/RtmpYXSpK9/inits3.txt)
model is initialized
gen.inits()
command #Bugs:gen.inits cannot be executed (is greyed out)
thin.updater(1)
update(1000)
下面是我在WINBGS中的模型:
model
{
for (j in 1:k)
{
for (s in 1:p)
{
a[j,s]~dlnorm(0,0.5)
}
d[j]~dnorm(0,0.5)
c[j]~dbeta(2,5)
}
for(i in 1:n)
{
for(j in 1:k)
{
for(s in 1:p)
{
sumat[i,j,s]<-a[j,s]*theta[i,s]
}
prob[i,j]<-(c[j]+(1-c[j])/(1+exp(-1.7*(sum(sumat[i,j, ])+d[j]))))
ans[i,j]~dbern(prob[i,j])
}
theta[i,1:2]~dmnorm(mu[1:2],sigma[,])
}
}
下面是我在R中调用WINBUGS进行参数估计时的相关语句:
sigma<-diag(c(1,1))
mu<-c(0,0)
data<-list("ans","n","k","p","sigma","mu")
#inits<-NULL
inits<-function()
{
list(a=matrix(1,nrow=k,ncol=p),d=rep(0,k),c=rep(0.2,k),theta=matrix(0,nrow=n,ncol=p))
}
irt.sim<-bugs(data,inits,model.file="f:/data/mirt3.odc",parameters=c("theta","a","d","c"),
n.chains=3,n.burn=1000,n.iter=5000,digits=4,n.thin=1,DIC=F,bugs.directory="f:/Winbugs14/",codaPkg=TRUE,debug=TRUE)
我自己修改了几次,大多都是出现这样的错误,有没有哪位前辈大神老师能帮我看看到底错在哪啊?急求指点!