過剰分散ポアソン結果のマルチレベルモデルをどのように適合させるのですか?


32

Rを使用して、多レベルGLMMをポアソン分布(過剰分散)に適合させたいと思っています。現時点では、lme4を使用していますが、最近quasipoissonファミリーが削除されたことに気付きました。

他の場所で、観測ごとに1レベルのランダム切片を追加することで、二項分布の加法的な過分散をモデル化できることを見てきました。これはポアソン分布にも当てはまりますか?

それを行うより良い方法はありますか?推奨する他のパッケージはありますか?

回答:


22

Rを複数の方法で使用して、マルチレベルGLMMをポアソン分布(過剰分散)に適合させることができます。いくつかのRパッケージは、次のとおりです。lme4MCMCglmmarm、などのA良いの参照がある見るためにゲルマンとヒル(2007)

rjagsパッケージを使用してこれを行う例をで示しますRRand JAGSOpenBUGSまたはのようなWinBUGS)間のインターフェースです。

ログθ I J = β 0 + β 1 T R E A T のM E N tはI + δ I J δ I JN 0 σ 2 ϵi = 1 I

njPossonθj
ログθj=β0+β1 Treatment+δj
δjN0σϵ2
=1j=1J
Treatment=0 または 1J1 もし th 観察は治療グループに属する 1、または 2J

δjrate 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については、John Myles Whiteのページを参照してください


ありがとう!! 私は最近、ベイジアン分析を検討し始めましたが、まだ把握するのが少し難しいと感じています。これについてもう少し学ぶ機会になると思います。
ジョージ

1
なぜガンマ分散がないのですか?
パトリックマッキャン

2
@Patrickは間違いなくそうすることができます。しかし、平均値を記録しているので、通常の表示効果を好みます。対数正規分布は、ガンマ分布に似た分布をモデル化する別の方法です。HTH。
suncoolsu

20

過剰分散を考慮するために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)

これについては、http//article.gmane.org/gmane.comp.lang.r.lme4.devel/4727で非公式および学術的にElstonらによって説明されています(2001)


モデルが2つのノミナル変数、1つの連続変数(すべて固定効果として)、1つのグループ化変数(ランダム効果)で3次相互作用を持ち、さらに測定対象の数が観測数またはレコード数に等しい場合データセット?モデルでこれをどのようにカバーする必要がありますか?
ラディスラフナオ14年

7

glmmADMBパッケージはまさにあなたが探しているものだと思います。

install.packages( "glmmADMB"、repos = "http://r-forge.r-project.org")

しかし、ベイジアンの観点では、MCMCglmmパッケージまたはBUGS / JAGSソフトウェアを使用できます。これらは非常に柔軟性があり、この種のモデルに適合できます。(および構文はRに近い)

EDITの @randelのおかげで

glmmADMBR2admbパッケージをインストールする場合は、次のことをお勧めします。

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')
ランデル14

5

これまでのところ良い提案。もう1つあります。パッケージのrhierNegbinRw関数を使用して、階層的な負の二項回帰モデルを近似できbayesmます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.