rastudylife

機械学習や統計についての勉強ログ

一般化線形モデルとは何か

Rを使って統計モデリングの復習をしているので,メモがてらまとめです.

 

(一般)線形モデル

まずは,導入的に『(一般)線形モデル』のおさらい.

線形モデルは,目的変数が従う確率分布(誤差構造)が正規分布の時しか使えない.

例えば,同世代の人の身長100人分の確率分布などは正規分布なので,線形モデルで最小二乗法等を使って回帰直線を当てはめることが可能.

線形モデルは次のように表記される.

 Y=\beta_0+\beta_1X_1+\beta_2X_2+...+\beta_{p-1}X_{p-1}+E 

しかし,データが正規分布以外の例えばポアソン分布等の場合は線形モデルは使用できない.その場合の一つの方法として,一般線形モデルを使用する方法が考えられる.

 

一般化線形モデル

データがポアソン分布の場合,例えば,ある種類の植物の個体がもつ種子数のデータを集めてきて,それがポアソン分布に従うデータだとする.個体ごとに種子数の他に,サイズや施肥処理が行われてるか否かといったデータも収集している場合,サイズや施肥処理が種子数に与える影響を数式化したいとする.

ある個体 i において種子数がy_iである確率はポアソン分布に従っていて,

p(y_i|\lambda_i)=\frac{\lambda_i^{y_i}exp(-\lambda_i)}{y_i!}

と仮定する.

次に,平均種子数をサイズや施肥処理を変数として表す.

\lambda_i=exp(\beta_1+\beta_2x_i+\beta_3d_i)

サイズは関数\beta_1+\beta_2x_i で表しており,

施肥処理は因子型なのでd_1というダミー変数を使って\beta_3d_iと表している(肥料を与えていない場合d_1=0,肥料を与えている場合d_1=1の数値が入る)

しかし,一般化線形モデルにおいては,このように定式化した目的変数の関数をそのまま使うのではなく,誤差構造に応じた関数で変換することで,モデルの精度が向上する.

ポアソン分布の場合では,この変換に使用する関数は,g(\mu)=log(\mu) である.

すなわち今回のケースでいうとlog(\lambda_i)=\beta_1+\beta_2x_i+\beta_3d_i

このような誤差構造に応じて変換に用いる関数のことをリンク関数といい,リンク関数が表しているパラメーターの線形結合,今回の場合\beta_1+\beta_2x_i+\beta_3d_iは線形予測子とよぶ.

ポアソン分布の今回のケースには\lambda_i,すなわちポアソン分布の平均は必ず0以上であってほしいという条件が,logを使うことで守られるところが嬉しい.

さて,このデータを使って,ポアソン分布を使った統計モデルに当てはめる(ポアソン回帰).

一番当てはまりの良いモデルにするためには,定数尤度logLが最大になるlogL(\beta_1, \beta_2, \beta_3)を求めるとよい.

logL(\beta_1, \beta_2, \beta_3)=\sum_i\log\frac{\lambda_i^{y_i}exp(-\lambda_i)}{y_i!}

 解析的に算出するのは大変だが,Rのglm関数で簡単に可能である. 

誤差構造 / リンク関数 / 線形予測子 | 一般化線形モデルを構成する 3 つの要素