井出草平の研究ノート

ゼロ過剰ポアソンモデルをRで動かす選択肢[R]

対応パッケージ(代表例)

  1. glmmTMB

  2. 最尤推定ベースで、ゼロ過剰(zi)項を明示的に入れられる一般化線形混合モデル(GLMM)実装である。ゼロ過剰ポアソンはもちろん、過分散(負の二項)やランダム効果まで同一の枠組みで扱いやすい。(CRAN)

  3. pscl

  4. 古典的に有名な zeroinfl()(ゼロ過剰)と hurdle()(ハードル)を提供する。まずZIPの挙動を理解し、最短で回して感触を掴む用途に強い。(CRAN)

  5. brms

  6. Stanを用いたベイズ推定で、分布として zero_inflated_poisson() を直接指定できる。ゼロ過剰確率(zi)側にも回帰を入れる「分布回帰」も自然に書ける。(CRAN)

  7. gamlss / gamlss.dist

  8. 「ゼロ過剰ポアソン(ZIP)」分布(例:ZIP, ZIP2)を分布として提供し、GAMLSS枠組みで扱う。ゼロ過剰に限らず、分布の形そのものを柔軟に選んでいく路線に向く。(CRAN)

  9. mgcv

  10. GAMとしてゼロ過剰(ハードル型を含む)を扱えるファミリ(ziplssziP)を提供する。ただし「ゼロが多い=ゼロ過剰」と短絡して乱用しがちなので注意が必要、という警告も明示されている。(Seminar for Statistics)

(このほかVGAM等にも関連機能はあるが、まずは上の5つで実務・学習ともに十分にカバーできる。)

同梱のデモデータ

1) glmmTMB に同梱のデータ

  • Salamanders

    • 内容: 森林タイプ(old growth / logged)などの条件下でのサンショウウオ個体数カウントのデータである。(CRAN)
    • ZIP向きの理由: 生態データは「構造的にゼロが出やすい(いない場所が多い)」ことが多く、ゼロ過剰の典型例になりやすい。
  • Owls

    • 内容: フクロウ雛の行動(例:交渉回数/雛)に関する599観測のデータで、巣(Nest)というクラスタを持つ。説明変数として給餌条件(FoodTreatment)や親の性別(SexParent)などがある。(CRAN)
    • ZIP向きの理由: ランダム効果(巣)を含むカウントモデルの教材として使いやすく、例示として「一定のゼロ過剰(zi = ~1)」を入れたモデルも示されている。(CRAN)
  • spider_long

    • 内容: クモの生態に関するカウントデータ(ロング形式)として同梱されている。(CRAN)
    • ZIP向きの理由: 目的変数がカウントで、設計次第でゼロ過剰・過分散・階層性を試しやすい類型である(ただしゼロ過剰が必ず強いとは限らないので、まず分布確認が前提である)。

2) pscl に同梱のデータ

  • bioChemists

    • 内容: 生化学者の論文数(art)などのカウントを含むデータで、915観測、性別(fem)、既婚(mar)、子ども数(kid5)、指導教官の論文数(phd)などが入っている。(CRAN)
    • ZIP向きの理由: 「カウント回帰(ポアソン/負の二項)+ゼロ過剰/ハードル」を説明する定番の題材として扱いやすい。

加えて、psclには ZIP/ハードルを体系的に説明した公式vignette(countreg)があり、デモの設計(何を比較し、どう診断するか)を決めるときの道標になる。(CRAN)

3) brms に同梱(vignetteで使用される)データ

  • zinb

    • 内容: 釣果のカウントデータ例として使われており、変数として persons(人数), child(子ども), camper(キャンプか)などと、目的変数 count(釣れた数)が示されている。vignette内では250観測として扱われている。(CRAN)
    • ZIP向きの理由: vignetteがそのまま family = zero_inflated_poisson() の例を提示しており、zi(ゼロ過剰確率)を「一定」→「説明変数で予測」に拡張する流れも一続きで確認できる。(CRAN)