आप मल्टीलेवल GLMM को कई तरीकों से R का उपयोग करके पॉइसन वितरण (अधिक फैलाव के साथ) में फिट कर सकते हैं। कुछ Rसंकुल हैं: lme4, MCMCglmm, arm, आदि एक अच्छा संदर्भ को देखने के लिए है Gelman और हिल (2007)
rjagsमें पैकेज का उपयोग करके ऐसा करने का एक उदाहरण दूंगा R। यह Rऔर JAGS(जैसे OpenBUGSया WinBUGS) के बीच एक इंटरफेस है ।
के लिए लॉग इन θ मैं j = β 0 + β 1 टी आर ई एक टी एम ई एन टी मैं + δ मैं j δ मैं j ~ एन ( 0 , σ 2 ϵ ) i = 1 … I ,
nij∼Poisson(θij)
logθij=β0+β1 Treatmenti+δij
δij∼N(0,σ2ϵ)
i=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, कृपया जॉन मायल्स व्हाइट का पेज देखें