RでのポアソンGLMの適合-レートとカウントの問題


11

現在、いくつかのカウントデータのGLM(および最終的にはGAM)を含むプロジェクトに取り組んでいます。通常、私はSASでこれを行いますが、Rに移動しようとしていて、問題があります。

以下を使用してデータをカウントするようにGLMを適合させた場合:

cdi_model <- glm(counts ~ exposure + covariate + month, data=test, family = poisson)

私は得ます:

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9825  -0.7903  -0.1187   0.5717   1.7649  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  1.97563    0.20117   9.821  < 2e-16 ***
exposure     0.94528    0.30808   3.068  0.00215 ** 
covariate   -0.01317    0.28044  -0.047  0.96254    
months      -0.03203    0.01303  -2.458  0.01398 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 40.219  on 29  degrees of freedom
Residual deviance: 29.297  on 26  degrees of freedom
AIC: 137.7

Number of Fisher Scoring iterations: 5

少しの間、モデル自体のパフォーマンスまたはその欠如を無視します。この時点では、主に構文などで遊んでいます。

ただし、レートデータ(カウント/人/日)を適合させ、次のようにオフセットを使用しようとすると、次のようになります。 cdi_model <- glm(count_rate ~ exposure + covariate + months + offset(log(pd)), data=test, family = poisson)

50以上の警告、すべての「1:dpois(y、mu、log = TRUE):非整数x = 0.002082」などの警告が表示されます。これは、観測ごとに複数です(データセットには30しかありません)。

加えて、モデルの適合はうまくいきそうです。次のように出力します。

 Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-0.0273656  -0.0122169   0.0002396   0.0072269   0.0258643  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) -15.40110   15.12772  -1.018    0.309
exposure      0.84848   22.18012   0.038    0.969
covariate    -0.02751   21.31262  -0.001    0.999
months       -0.01889    0.95977  -0.020    0.984

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 0.0068690  on 29  degrees of freedom
Residual deviance: 0.0054338  on 26  degrees of freedom
AIC: Inf

Number of Fisher Scoring iterations: 9

これにもかかわらず、実際のデータに対して予測率をプロットした場合、近似はそれほど悪くは見えず、実際の効果の見積もりはそれほど大きく変化しないようです。

誰もが何が起こっているのかを知っています-またはすべてがうまくいっていて、私が経験不足のために何かが足りない場合?

回答:


17

オフセットを追加する場合、レートを計算して露出を含める必要はありません(その必要もありません)。

これがエラーの原因であるかどうかはわかりませんが、ケースごとの露出が個人日pdである場合、次のように、従属変数はでcountsあり、オフセットはである必要がありますlog(pd)

cdi_model <- glm(counts ~ covariate + months + offset(log(pd)), 
                 data=test, family = poisson)

(+1)時々、疫学者が関心のある独立変数を「曝露」(例えば、「喫煙タバコへの曝露」)と呼ぶのを見ました。しかし良い点は、従属変数としてレートを使用すべきではないことです。
アンディW

「月」変数はエクスポージャーの長さであると推測しましたが、原理は同じです。
Aniko

@アニコすぐにわかると思います。レートをそのように考えることが合理的である場合(counts/thing)、対数線形モデルはほとんど常にあると考えていましたcounts ~ ... + offset(log(thing))。そして、私たちが2番目に推測している間、私はそれも予測しlog(pd) == exposureます...
共役前の

いくつかを明確にするために-アンディWは正しいです。「露出」は実際には独立した関心のある変数です(この場合、ポリシーの変更)。月は、データの傾向をある程度制御できるようにするための「日付Xからの月数」です。
Fomite

@ConjugatePrior回答でモデルを使用する場合、モデルの出力はレートになりませんか?実行すると、オフセットが含まれているにもかかわらず、すべてがrawカウントとして出力されるようです。または、私が見逃している別のステップはありますか?
Fomite
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.