2

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

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

我对个人进行了重复测量。这些人进一步嵌套在家庭中。注:每户人数不同!

期待您的回音

4

1 回答 1

2

假设我们有两个向量,它们指示数据点属于哪个房子和哪个人(这些是您需要创建的东西,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_vecare1的前 6 个元素和ind_vec范围从 1 到 3 的前 6 个元素),第二个宫有 2 个个体(最后 4 个元素house_vec是 2的最后 4 个元素ind_vec是 4 和 5)。使用这些向量,我们可以在 JAGS 中进行嵌套索引来创建您的随机效应结构。像这样的东西就足够了。这些向量将在您必须包含的 data.list 中提供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

于 2016-11-28T14:55:54.907 回答