คุณสามารถใส่ 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 modelsJAGS
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