आप मल्टीलेवल 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 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
, कृपया जॉन मायल्स व्हाइट का पेज देखें