2016-11-28 70 views
2

我對在JAGS中擬合下面的嵌套隨機效應模型感興趣。JAGS/WinBUGS中的嵌套隨機效應

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

讓我們假設我們有兩個向量,這表明是數據點屬於哪個房子和個人(這些事情,你將需要創建,在R可以通過使這些通過as.numeric將因子改爲數字)。所以,如果我們有兩個房屋和五個人的10個數據點,他們會看起來像這樣。

house_vec = c(1,1,1,1,1,1,2,2,2,2)#6分的房子1,4家2

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個人(最後4個元素爲house_vec是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通知被Data.List模塊供應。所以模型的其餘部分看起來像。

for(i in 1:N){ 
logit(p[i]) <- beta0 + beta1 * t + mu_ind[ind_vec[i]] 
TestResult[i] ~ dbern(p[i]) 
} 

你會那麼需要設置爲先驗和beta0beta1

+0

我非常感謝您的支持。感謝您花時間幫助我,我真的很感激它 – belaya