我有兴趣在JAGS中拟合以下嵌套随机效应模型。
SAS代码
proc nlmixed data=data1 qpoints=20;
parms beta0=2 beta1=1 ;
bounds vara >=0, varb_a >=0;
eta = beta0+ beta1*t+ b2+b3;
p = exp(eta)/(1+exp(eta));
model TestResult ~ binary(p);
random b2 ~ normal(0,vara) subject = HHcode;
random b3 ~ normal(0,varb_a) subject = IDNo_N(HHcode);
run;
我的问题:如何指定随机效果部分?
我对个人进行了多次测量。这些人进一步嵌套在家庭中。注意:每个家庭的人数有所不同!
期待收到你的回复
答案 0 :(得分:1)
我们假设我们有两个向量来指示数据点属于哪个房屋和哪个人(这些是您需要创建的内容,在R
中您可以通过更改因子来制作这些内容通过as.numeric
来计算数字。因此,如果我们有来自2个房屋和5个人的10个数据点,他们将会是这样的。
house_vec = c(1,1,1,1,1,1,2,2,2,2)
房子1#6分,房子2 4分
ind_vec = c(1,1,2,2,3,3,4,4,5,5)
#每个人都有两个观察结果
N = 10
#个数据点数
所以,上面的向量告诉我们第一宫有3个人(因为house_vec
的前6个元素是1
,ind_vec
的前6个元素来自1到3)并且第二个房子有2个人(house_vec
的最后4个元素是2,ind_vec
的最后4个元素是4和5)。使用这些向量,我们可以在JAGS中进行嵌套索引以创建随机效果结构。这样的东西就足够了。这些向量将在您必须包含TestResult
for(i in 1:N){
mu_house[house_vec[i]] ~ dnorm(0, taua)
mu_ind[ind_vec[i]] ~ dnorm(mu_house[house_vec[i]], taub_a)
}
# priors
taua ~ dgamma(0.01, 0.01) # precision
sda <- 1 / sqrt(taua) # derived standard deviation
taub_a ~ dgamma(0.01, 0.01) # precision
sdb_a <- 1 / sqrt(taub_a) # derived standard deviation
您只需要在线性预测器中包含mu_ind
,因为它由mu_house
通知。所以模型的其余部分看起来像。
for(i in 1:N){
logit(p[i]) <- beta0 + beta1 * t + mu_ind[ind_vec[i]]
TestResult[i] ~ dbern(p[i])
}
然后,您需要为beta0
和beta1