Você pode ajustar o GLMM multinível com uma distribuição Poisson (com excesso de dispersão) usando R de várias maneiras. Alguns R
pacotes são: lme4
, MCMCglmm
, arm
, etc. Uma referência boa para ver é Gelman e Hill (2007)
Vou dar um exemplo de fazer isso usando rjags
pacote no R
. É uma interface entre R
e JAGS
(como OpenBUGS
ou WinBUGS
).
log θ i j = β 0 + β 1 t r e um t m e n t i + δ i j δ i j ~ N ( 0 , σ 2 ϵ ) i = 1 ... I ,
neu j~ P o i s s o n ( θeu j)
registroθeu j= β0 0+ β1 T r o e uma T me n tEu+ δeu j
δeu j∼ N( 0 , σ2ϵ)
i = 1 ... eu,j = 1 ... J
T r o e uma T me n tEu= 0 ou 1 , … , J- 1 se o it h observação pertence ao grupo de tratamento 1 , ou 2,…,J
δeu 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)
}
Aqui está o R
código para implementar usá-lo (diga que é nomeado 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])
Você pode brincar com as partes posteriores dos seus parâmetros e introduzir mais parâmetros para tornar a modelagem mais precisa ( gostamos de pensar isso ). Basicamente, você entendeu a idéia.
Para mais detalhes sobre o uso rjags
e JAGS
, consulte a página de John Myles White
Não é necessário deixar o pacote lme4 para dar conta de sobredispersão; inclua apenas um efeito aleatório para o número de observação. As soluções BUGS / JAGS mencionadas provavelmente são um exagero para você e, se não forem, você deverá ter os resultados do lme4 fáceis de ajustar para comparação.
Isso é discutido aqui: http://article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 informal e academicamente por Elston et al. (2001) .
fonte
Eu acho que o pacote glmmADMB é exatamente o que você está procurando.
Mas, do ponto de vista bayesiano, você pode usar o pacote MCMCglmm ou o software BUGS / JAGS , eles são muito flexíveis e você pode ajustar esse tipo de modelo. (e a sintaxe é próxima da R)
EDIT graças a @randel
Se você deseja instalar os pacotes
glmmADMB
eR2admb
, é melhor fazer:fonte
install.packages("glmmADMB",repos="http://glmmadmb.r-forge.r-project.org/repos")
plusinstall.packages('R2admb')
.Boas sugestões até agora. Aqui está mais um. Você pode ajustar um modelo de regressão binomial negativa hierárquica usando a
rhierNegbinRw
função dobayesm
pacote.fonte