【Rによるデータサイエンス】非線形回帰分析 〜 加法モデル
◎定義
加法回帰モデル(additive regression model)とは。。。
・線形回帰モデルおよび関数nlsによる非線形回帰モデルは、加法モデルの特殊なケースと考えられる。
・が全て線形関数の場合は、線形回帰モデルとなる。
一般化線形モデルを加法モデル化したとき、一般化加法モデル(GAM:Generalized Additive Model)と呼ぶ。
Rで一般化加法モデルの関数gamを使うには、パッケージmgcvをダウンロードすれば良い。
◎ケーススタディ
パッケージmgcvのダウンロードと読み込み。
> install.packages("mgcv");library(mgcv)
一般化加法モデルの適用。
> airq2<-na.exclude(airquality[,1:4]) #欠損値を取り除く > airq.gam<-gam(Ozone~s(Solar.R)+s(Wind)+s(Temp),data=airq2) #関数gamの実行。全ての説明変数に平滑化スプライン(s)をリンクしている。 > summary(airq.gam) Family: gaussian Link function: identity Formula: Ozone ~ s(Solar.R) + s(Wind) + s(Temp) Parametric coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 42.099 1.663 25.32 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Approximate significance of smooth terms: edf Ref.df F p-value s(Solar.R) 2.760 3.447 3.826 0.0093 ** s(Wind) 2.910 3.657 13.695 1.66e-08 *** s(Temp) 3.833 4.753 11.769 7.40e-09 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 R-sq.(adj) = 0.723 Deviance explained = 74.7% GCV score = 338.9 Scale est. = 306.83 n = 111
◎考察
一般化加法モデル(GAM)と、一般化線形モデル(GLM)を比較する。
まず一般化線形モデルの結果を用意する。
> airq.glm<-glm(Ozone~Solar.R+Wind+Temp,data=airq2) > summary(airq.glm) Call: glm(formula = Ozone ~ Solar.R + Wind + Temp, data = airq2) Deviance Residuals: Min 1Q Median 3Q Max -40.485 -14.219 -3.551 10.097 95.619 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -64.34208 23.05472 -2.791 0.00623 ** Solar.R 0.05982 0.02319 2.580 0.01124 * Wind -3.33359 0.65441 -5.094 1.52e-06 *** Temp 1.65209 0.25353 6.516 2.42e-09 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for gaussian family taken to be 448.6242) Null deviance: 121802 on 110 degrees of freedom Residual deviance: 48003 on 107 degrees of freedom AIC: 998.72 Number of Fisher Scoring iterations: 2
> AIC(airq.gam) [1] 962.596 > AIC(airq.glm) [1] 998.7171
GAMの方が精度が良いことが分かる。