JAGS / WinBUGS中的嵌套随机效应

时间:2016-11-28 10:03:40

标签: jags winbugs random-effects

我有兴趣在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;

我的问题:如何指定随机效果部分?

我对个人进行了多次测量。这些人进一步嵌套在家庭中。注意:每个家庭的人数有所不同!

期待收到你的回复

1 个答案:

答案 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个元素是1ind_vec的前6个元素来自1到3)并且第二个房子有2个人(house_vec的最后4个元素是2,ind_vec的最后4个元素是4和5)。使用这些向量,我们可以在JAGS中进行嵌套索引以创建随机效果结构。这样的东西就足够了。这些向量将在您必须包含TestResult

的data.list中提供
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])
}

然后,您需要为beta0beta1

设置先验