【Rによるデータサイエンス】線形回帰分析 〜 変数・モデルの選択

回帰モデルの推定は、回帰係数を求めることだが、求めた回帰モデルの決定係数が悪かったり、残差分析の結果が悪い場合は適切なモデルとはいえない。そのため、変数を入れ替えながら回帰モデルを構築し、より当てはまりが良いモデルを選択する。

それでは、良いモデルの選択基準は、なんだろうか?

調整済みの決定係数、回帰係数のPr(>|t|)値を回帰モデルの選択基準にすることもできるが、AIC(Akaike's Information Criterion)を用いる。

AIC=-2×(モデルの最大対数尤度)+2×(モデルのパラメータ数)

正規分布を仮定する線形回帰モデルのAICは、次の式を用いて求めることも可能である。

AIC=n\times\log(\frac{\sum{z^2}}{m})+2\times(pm)
ここでzは残差、pmはモデルのパラメータ数である。

RにはAICを用いてモデルを選択する関数stepがあるので、それを使用する。
なお、AICの値が小さいほど良いモデルとなる。

> air.lm3<-step(air.lm2)
Start:  AIC=662.37
Ozone ~ (Solar.R + Wind + Temp)^2

               Df Sum of Sq   RSS    AIC
- Solar.R:Wind  1    429.42 38635 661.61
<none>                      38205 662.37
- Solar.R:Temp  1   1574.75 39780 664.86
- Wind:Temp     1   2748.20 40954 668.08

Step:  AIC=661.61
Ozone ~ Solar.R + Wind + Temp + Solar.R:Temp + Wind:Temp

               Df Sum of Sq   RSS    AIC
<none>                      38635 661.61
- Solar.R:Temp  1    2141.1 40776 665.60
- Wind:Temp     1    4339.8 42975 671.43

回帰係数を求める。

> round(coefficients(air.lm3),2)
 (Intercept)      Solar.R         Wind         Temp Solar.R:Temp     Wind:Temp
     -136.81        -0.35        11.15         2.45         0.01         -0.19 

回帰診断図を作成する。

> par(mfrow=c(2,2))
> plot(air.lm3)

たしかに、Residuals vs Fittedを見ると、バラつきが減っていて精度が上がっているように見えるけど・・・。
変数の選択を実施しなかった前回の結果は次の通り。