我是贝叶斯分析的新手,并开始使用matjags。我试图在我的运动数据上运行一个模型,这是一个1x2000阵列,由5个科目组成数据。这是我的模特:
model {
for ( i in 1:Ntotal ) {
y[s[i],t] ~ dnorm( A1[s[i]] * exp( -lambda1[s[i]] ) + A2[s[i]] * exp( lambda1[s[i]]*r[s[i]] ) , sigmaY )
}
for ( j in Nsubj ) {
lambda1[j] ~ dgamma( 1/10 , 1/10 )
A1[j] ~ dgamma( 1/10 , 1/10 )
A2[j] ~ dgamma( 1/10 , 1/10 )
r ~ dbeta( 1 , 1 )
}
sigmaY ~ dgamma( 1/10 , 1/10 )
}
s
是1x2000阵列,将数据分配给每个主题(即1:400是主题1,401:800主题2等...)。 exp()
函数是时间常数,应描述每个主题的数据学习时间。第二个时间段总是比第一个时间段大,所以0< r< 1. t是我的1x2000时间向量。
现在我遇到以下错误:y的子集表达式中的维度不匹配
我首先想到的问题在于我的时间向量t,但是当我删除它时,我得到了以下错误:子集超出范围:r[5]
Nsubj
是5,我想要每个主题的r值,但是,我还想要每个数据点的值,因为时间段1和时间段2之间的差异的大小可以在整个运动集中改变。我一直试图解决这个问题,我想我只是错过了一些东西,但我无法弄清楚问题。
我希望有人可以帮助我!