今日も元気にみどり本です。第3章を終わらせましょう。
(所々、はてなのtex記法[tex: ]
で書いた数式が正しく変換されず、そのまま文字列が表示されてしまっている箇所がありますがご容赦ください…。同じように書いても、正しく表示される時とそうでない時があって、どういう仕様になってるのかまるで分からない…。)
前回は種子数が個体のサイズのみに依存する統計モデルを作りました。
今回は、施肥処理の効果のみに依存するモデル、施肥処理とサイズの両方に依存するモデルを考えていきます。
2. 種子数が個体の施肥効果のみに依存する統計モデル
(説明変数がカテゴリ変数のみの統計モデル)
のときは、のときはとなるようなダミー変数を用意して、平均値を以下の関数で定義。
$$
\lambda_i=exp(\beta_1+\beta_2 d_i)
$$
# statsmodelsを使うときはダミー変数を用意する必要はない fit_f = smf.poisson('y ~ f', data=df).fit() fit_f.summary()
Optimization terminated successfully.
Current function value: 2.376273
Iterations 3
coef | std err | |
---|---|---|
Intercept | 2.0516 | 0.051 |
f[T.T] | 0.0128 | 0.071 |
- f[T.T]は説明変数[tex: f_i]がT(肥料有り)水準でとる値。→f[T.T]が正より、肥料をやると平均種子数は僅かに増加すると推定される。
- (Jupyter Notebookからはてなへのコピペが上手くいかなかったので、結果を載せられていませんが)Log-Likelihood:-237.63となり、サイズ[tex: x_i]だけに依存するモデルより最大対数尤度が小さい。→[tex: x_i]だけに依存するモデルより、あてはまりが悪い
3. 種子数[tex: y_i]が個体[tex: i]の体サイズ[tex: x_i]と施肥効果[tex: f_i]に依存する統計モデル
(説明変数が数量型+カテゴリ変数の統計モデル)
平均を以下で定義。
$$
\lambda_i = exp(\beta_1+\beta_2 x_i+\beta_3 d_i)
$$
# モデル式が説明変数の足し算で表わされているが、実際は対数リンク関数を使っているので、要因ごとの積が平均に影響している fit_xf = smf.poisson('y ~ x + f', data=df).fit() fit_xf.summary()
Optimization terminated successfully.
Current function value: 2.352937
Iterations 4
coef | std err | |
---|---|---|
Intercept | 1.2631 | 0.370 |
f[T.T] | -0.0320 | 0.074 |
x | 0.0801 | 0.037 |
- f[T.T]が負だと推定されている→(2. の施肥処理のみに依存するモデルと異なり)肥料をやると平均種子数は僅かに減少すると推定される。
- Log-Likelihood:-235.29となり、のみに依存するモデルより観測データに対して少し当てはまりが良さそう。
- 今回のモデルでは、は
- が1増加した場合、倍
- 肥料有りの場合、倍
になることがわかる。
余談ですが、このモデルで肥料有りのとき平均種子数は
$$
\lambda_i=exp(1.26+0.08x_i-0.032)
$$
$$
=exp(1.26)×exp(0.08x_i)×exp(-0.032)
$$
$$
=(定数)×(サイズの効果)×(施肥処理の効果)
$$
となり、足し算ではなく、掛け算で要因が平均に効果を及ぼしている。
また、このモデルでは、要因ごとの積が平均に影響しているので、サイズが大きいほど施肥処理有り・無し間の乖離が大きくなることがわかる。
以上で第3章は終わりです。
今回のf[T.T]のように、モデルによってある変数に対する解釈が真逆になることもあるのは興味深いですね。
さて、ここまで3つのモデルを作ってきましたが、結局どれを選べばいいんでしょうか。それについては次回の第4章でお話ししたいと思います。今日もお疲れ様でした。
コメント