こんにちは。
今回はたまに聞くであろうGLM、すなわち、一般化線形回帰についてです。回帰といえば今まで線形回帰とかちょろっとやりました。せっかくなので回帰についてちょっとだけ復習してから本題に入りましょう。
![](https://research.miidas.jp/wp-content/uploads/2019/05/Screen-Shot-2019-05-07-at-20.51.15-1024x628.png)
上のデータを回帰することを考えます。今まで線形回帰ばかりしてきました。しかし、今回のデータは線形っぽくない。このような時はどうすればいいのか?一般化線形モデルの登場です。
- データが線形ではないとき
- 誤差が
でない
がカテゴリカルとかだったら
上記のような場合、線形回帰よりも一般化線形回帰が有効です。一般化線形モデルに入る前に単回帰、重回帰についてもついでに復習しておきましょう。
![](https://research.miidas.jp/wp-content/uploads/2019/05/Screen-Shot-2019-05-12-at-7.18.33-1024x472.png)
まあ、簡単ですね。では一般化線形モデルへ。
![](https://research.miidas.jp/wp-content/uploads/2019/05/Screen-Shot-2019-05-12-at-7.20.43-1024x467.png)
GLMでは上記の3つのファクターが重要になります。これらによりモデルが決まります。
それぞれ、
- 説明変数の線形モデル
- 線形モデルに移す関数
- 目的変数の従う分布
になります。具体的に例を見ていきましょう。
![](https://research.miidas.jp/wp-content/uploads/2019/05/Screen-Shot-2019-05-12-at-7.22.36-1024x575.png)
普通の線形モデルは上のようになります。これだけだとわからないのでポアソン分布を例にとってみましょう。
![](https://research.miidas.jp/wp-content/uploads/2019/05/Screen-Shot-2019-05-12-at-7.50.34-1024x461.png)
目的変数が非負ということが1つの特徴でしょう。
![Rendered by QuickLaTeX.com \beta_0 + \beta_1 x](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-5759fac612f421c5e293e009000784ac_l3.png)
を
![Rendered by QuickLaTeX.com exp](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-3a204eddb7f0a06fecc03b4856e84413_l3.png)
に食わせることで指数関数を用いてモデルを構成しています。線形予測子を得るためには
![Rendered by QuickLaTeX.com exp](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-3a204eddb7f0a06fecc03b4856e84413_l3.png)
を外せばいいので
![Rendered by QuickLaTeX.com \log](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-1dc6d8e0c48360442484766a5032a3c2_l3.png)
つまり対数がリンク関数になることがわかります。言い換えれば、
![Rendered by QuickLaTeX.com y_i = \beta_0 + \beta_1 x](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-ccad8fa5da6e28b3285d627798a2801c_l3.png)
と単純にモデリングしてしまうと目的変数が正規分布に従わないせいで誤差が大きくなってしまいます。それを避けるためにリンク関数により
![Rendered by QuickLaTeX.com \log \lambda_i = \beta_0 + \beta_1 x](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-25ac4fbf3b4f439ceba76c12054ab7e1_l3.png)
と変形していわば補正をかけます。(
![Rendered by QuickLaTeX.com y_i](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-bb3c186e5c65fcd066bb23dec8f4e48a_l3.png)
が平均
![Rendered by QuickLaTeX.com \lambda_i](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-130188abd4690d701177358e4ad96950_l3.png)
に従うポアソン分布から生成されたと仮定します)
これを用いようとするとPythonよりもRがメジャーな選択肢になりますが、僕はPython派なのでこっちを使います。以下がコードになります。
北大のレジュメの問題はRで解かれておりこれをPythonで解いた結果近い値が得られたのでうまく回帰できたと思います。しかしもう世の中はニューラルネットワークなのか、、、、
でわ