คุณสามารถใส่ GLMM หลายระดับด้วยการแจกแจงแบบปัวซอง (ด้วยการกระจายตัวมากเกินไป) โดยใช้ R ได้หลายวิธี ไม่กี่R
แพคเกจ: lme4
, MCMCglmm
, arm
ฯลฯ อ้างอิงที่ดีที่จะเห็นคือGelman และฮิลล์ (2007)
ผมจะยกตัวอย่างของการทำเช่นนี้โดยใช้แพคเกจในrjags
R
มันเป็นอินเตอร์เฟซระหว่างR
และJAGS
(เช่นOpenBUGS
หรือWinBUGS
)
เข้าสู่ระบบθ ฉันJ = β 0 + β 1 T R อีตันเมตรที่ e n t ฉัน + δ ฉันเจ δ ฉันJ ~ N ( 0 , σ 2 ε ) ฉัน= 1 ... ฉัน,
nij∼Poisson(θij)
logθij=β0+β1 Treatmenti+δij
δij∼N(0,σ2ϵ)
T R อีตันเมตรที่ e n tฉัน = 0 หรือ 1 , ... , J - 1 ถ้า ฉันทีเอช สังเกตอยู่ในกลุ่มการรักษา 1 หรือ 2 , ... , Ji=1…I,j=1…J
Treatmenti=0 or 1,…,J−1 if the ith observation belongs to treatment group 1, or, 2,…,J
δijrate models
JAGS
data{
for (i in 1:I){
ncount[i,1] <- obsTrt1[i]
ncount[i,2] <- obsTrt2[i]
## notice I have only 2 treatments and I individuals
}
}
model{
for (i in 1:I){
nCount[i, 1] ~ dpois( means[i, 1] )
nCount[i, 2] ~ dpois( means[i, 2] )
log( means[i, 1] ) <- mu + b * trt1[i] + disp[i, 1]
log( means[i, 2] ) <- mu + b * trt2[i] + disp[i, 2]
disp[i, 1] ~ dnorm( 0, tau)
disp[i, 2] ~ dnorm( 0, tau)
}
mu ~ dnorm( 0, 0.001)
b ~ dnorm(0, 0.001)
tau ~ dgamma( 0.001, 0.001)
}
นี่คือR
รหัสที่จะดำเนินการใช้มัน (จะบอกว่ามันเป็นชื่อ: overdisp.bug
)
dataFixedEffect <- list("I" = 10,
"obsTrt1" = obsTrt1 , #vector of n_i1
"obsTrt2" = obsTrt2, #vector of n_i2
"trt1" = trt1, #vector of 0
"trt2" = trt2, #vector of 1
)
initFixedEffect <- list(mu = 0.0 , b = 0.0, tau = 0.01)
simFixedEffect <- jags.model(file = "overdisp.bug",
data = dataFixedEffect,
inits = initFixedEffect,
n.chains = 4,
n.adapt = 1000)
sampleFixedEffect <- coda.samples(model = simFixedEffect,
variable.names = c("mu", "b", "means"),
n.iter = 1000)
meansTrt1 <- as.matrix(sampleFixedEffect[ , 2:11])
meansTrt2 <- as.matrix(sampleFixedEffect[ , 12:21])
คุณสามารถเล่นกับผู้ตกแต่งโปสเตอร์ของพารามิเตอร์และคุณสามารถแนะนำพารามิเตอร์เพิ่มเติมเพื่อให้คุณสร้างแบบจำลองที่แม่นยำยิ่งขึ้น ( เราชอบคิดแบบนี้ ) โดยพื้นฐานแล้วคุณจะได้รับความคิด
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานrjags
และJAGS
โปรดดูหน้าของ John Myles White