【Rによるデータサイエンス】線形回帰分析 〜 変数・モデルの選択
回帰モデルの推定は、回帰係数を求めることだが、求めた回帰モデルの決定係数が悪かったり、残差分析の結果が悪い場合は適切なモデルとはいえない。そのため、変数を入れ替えながら回帰モデルを構築し、より当てはまりが良いモデルを選択する。
それでは、良いモデルの選択基準は、なんだろうか?
調整済みの決定係数、回帰係数のPr(>|t|)値を回帰モデルの選択基準にすることもできるが、AIC(Akaike's Information Criterion)を用いる。
AIC=-2×(モデルの最大対数尤度)+2×(モデルのパラメータ数)
正規分布を仮定する線形回帰モデルのAICは、次の式を用いて求めることも可能である。
ここで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を見ると、バラつきが減っていて精度が上がっているように見えるけど・・・。
変数の選択を実施しなかった前回の結果は次の通り。