データ解析のための統計モデリング入門をpythonでやる(3)-一般化線形モデル-
【あらすじ】
種子データを一般化線形モデルであらわしてみた。
【本文】
説明変数を組み込んだ統計モデルを扱う。
つまり、個々のデータが独自の説明変数の値を持ち、それによって従うモデルが変わるようになる。
このようなモデルを一般化線形モデルという。
今回はある植物のデータとして
であるデータを扱う。
前回のポアソン分布
において、が体サイズによって変わることを考える。
今回は以下の式に従うと考える。
ここで、logを取ると
となる。
右辺のようにの線形結合になるものを線形予測子と呼ぶ。
このように
となる場合、左辺のをリンク関数と呼ぶ。
今回は対数を取っているので対数リンク関数である。
平均がこの場合の対数尤度を求める。
つまり、
が最大となる を求める。
pythonでざっくり当てはめるにはstatsmodelを使う。
[python のコード]
model = sm.formula.api.glm(formula="y ~ x", data=data, family=sm.api.families.Poisson(link=sm.api.families.links.log))
formula="y ~ x" は yの説明変数はx であることを示している。
もしy の説明変数をfと考える場合(つまり、体サイズx は関係なく、施肥の有無によってのみ種子数がかわる)は"y ~ f"とする。
また、y の説明変数をxとfの両方と考える場合(体サイズと施肥の両方が関係する)は"y ~ x + f"とする
yに対する説明変数がxのみの場合、一般化線形モデルではxの値の位置に依存した異なる分布でyの値が表現される。
データの特徴を反映した確率分布とリンク関数を使いましょう。