Answers:
您可以通过多种方式使用R将多级GLMM与泊松分布(具有过度分散)配合。几个R
包是:lme4
,MCMCglmm
,arm
,等一个很好的参考,看看是盖尔曼和希尔(2007年)
我将举一个使用rjags
package中的例子来做这件事R
。它是R
和之间JAGS
(如OpenBUGS
或WinBUGS
)的接口。
登录θ 我Ĵ = β 0 + β 1 Ť ř Ë 一吨米ë Ñ Ť 我 + δ 我Ĵ δ 我Ĵ〜Ñ (0 ,σ 2 ϵ)i = 1 … I ,
上面代码中的部分为过度分散建模。但是,没有人阻止您对个人之间的关联(您不相信个人真正独立)和个人内部的关联进行建模(重复测量)。同样,速率参数可以按的其他常数进行缩放。请参阅Gelman和Hill(2007)以获取更多参考。这是简单模型的代码:rate 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
,请参见John Myles White的页面。
无需离开lme4软件包即可解决过度分散的问题;只是包括一个随机效应的观察数。提到的BUGS / JAGS解决方案可能对您来说是过大的,如果不是,那么您应该具有易于拟合的lme4结果以进行比较。
data$obs_effect<-1:nrow(data)
overdisp.fit<-lmer(y~1+obs_effect+x+(1|obs_effect)+(1+x|subject_id),data=data,family=poisson)
这在这里进行了讨论:Elston等人非正式地和学术地http://article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 。(2001)。
我认为glmmADMB软件包正是您所需要的。
install.packages(“ glmmADMB”,repos =“ http://r-forge.r-project.org”)
但是从贝叶斯角度来看,您可以使用MCMCglmm软件包或BUGS / JAGS软件,它们非常灵活,可以适合这种模型。(并且语法接近R一)
编辑感谢@randel
如果要安装glmmADMB
和R2admb
软件包,最好执行以下操作:
install.packages("glmmADMB", repos="http://glmmadmb.r-forge.r-project.org/repos")
install.packages("R2admb")
install.packages("glmmADMB",repos="http://glmmadmb.r-forge.r-project.org/repos")
plus 安装该软件包install.packages('R2admb')
。