Vous pouvez adapter GLMM multiniveau avec une distribution de Poisson (avec sur-dispersion) en utilisant R de plusieurs manières. Peu de R
paquets sont: lme4
, MCMCglmm
, arm
, etc. Une bonne référence pour voir est Gelman et Hill (2007)
Je vais vous donner un exemple de cela en utilisant rjags
package in R
. C'est une interface entre R
et JAGS
(comme OpenBUGS
ou WinBUGS
).
log θ i j = β 0 + β 1 T r e a t m e n t i + δ i j δ i j ~ N ( 0 , σ 2 ϵ ) i = 1 … I ,
nje j∼ P o i s s o n ( θje j)
bûcheθje j= β0+ β1 T r e a t me n tje+ δje j
δje j∼ N( 0 , σ2ε)
i = 1 … I,j = 1 … J
T r e a t me n tje= 0 ou 1 , … , J- 1 si le it h l'observation appartient au groupe de traitement 1 , ou, 2,…,J
δje jrate 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)
}
Voici le R
code pour mettre en œuvre l' utiliser (dire qu'il est nommé: 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])
Vous pouvez jouer avec les postérieurs de vos paramètres et vous pouvez introduire plus de paramètres pour vous rendre la modélisation plus précise ( nous aimons penser cela ). Fondamentalement, vous avez l'idée.
Pour plus de détails sur l'utilisation de rjags
et JAGS
, veuillez consulter la page de John Myles White
Pas besoin de quitter le paquet lme4 pour tenir compte de la surdispersion; il suffit d'inclure un effet aléatoire pour le numéro d'observation. Les solutions BUGS / JAGS mentionnées sont probablement exagérées pour vous, et si elles ne le sont pas, vous devriez avoir les résultats lme4 faciles à adapter pour la comparaison.
Ceci est discuté ici: http://article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 de manière informelle et académique par Elston et al. (2001) .
la source
Je pense que le package glmmADMB est exactement ce que vous recherchez.
Mais d'un point de vue bayésien, vous pouvez utiliser le package MCMCglmm ou le logiciel BUGS / JAGS , ils sont très flexibles et vous pouvez adapter ce type de modèle. (et la syntaxe est proche de celle de R)
EDIT grâce à @randel
Si vous souhaitez installer les packages
glmmADMB
etR2admb
il est préférable de faire:la source
install.packages("glmmADMB",repos="http://glmmadmb.r-forge.r-project.org/repos")
plusinstall.packages('R2admb')
.Bonnes suggestions jusqu'à présent. En voici un de plus. Vous pouvez adapter un modèle de régression binomiale négative hiérarchique à l'aide de la
rhierNegbinRw
fonction dubayesm
package.la source