Rによる統計的学習入門 〜重回帰分析〜
今回は重回帰分析について、まとめてみる。(未完)
目次
1、重回帰分析って何?〜概要
2、何してるの?〜アルゴリズム
3、例えば?〜分析
4、終わりに
1、重回帰分析って何?〜概要
単回帰分析では一つのYに対して一つのXだったが、重回帰分析ではXが2つ以上。
世の中の原因と結果は大体主な理由が1つのものから来てることの方が少ないかもしれない。大体いくつか原因と結果があるものだ。
2、何してるの?〜アルゴリズム
線形回帰と同じように、係数を最小二乗法で推測していきます。行列代数を使うみたいなので、今回はこの本でも省かれていたので、また今度詳細は書きます。
重回帰を行うときに4つ大切なことがある。
1、X1, X2, X3 ..., Xpの予測変数とYの応答変数の関係
応答変数と予測変数の間に関係があるかどうかはであるかを調べる。
帰無仮説は
対立仮説は、
:のうち少なくとも1つは非零である。
ここではまた、F統計量を計算する。
モデルの仮定が正しければ、
が真ならば、
XとYが関係ないものなら、F値は1に近くなって、が真であるなら、Fは1より大きくなる。
2、予測変数のなかで、重要な、Yをちゃんと説明しているものを選ぶ。
F値を見た後はp値を見る。
少なくとも一つの予測変数が応答変数に関係してる場合、次はどの予測変数が実際に関係しているかを考える。
もし、p=2ならば、
1、どの変数も含まない、
2、X1のみ、
3、X2のみ、
4、X1とX2両方を含むモデル
を考えて、一番良いモデルを選ぶ。その際使われるのは、MallowのCp、赤池情報量基準(AIC)、ベイズ情報量基準(BIC)、そして、自由度調整済みなどがある。pがより大きいものも含めて、これらは後のブログでまた詳しく書く、
3、モデルの当てはめ
モデルの当てはめではRSEとがよく使われる。
が1に近いということはモデルが応答変数の分散のうち多くの部分を説明しているということ。
RSEは重回帰分析だとこの式を使う。
4、予測(3つの不確かなもの)
1、最小二乗法による予測と母回帰との差
式
2、世の中のモデルはだいたい直線ではない
3、もし母回帰がわかっていても、完璧に応答変数を予測することはできない。
以上を踏まえて、分析を行う。
3、例えば?〜分析
本にあるMASSパッケージとISLRパッケージをまず読み込み、
fix()は別ウィンドでデータを表示できる。
names()で中身を見れる。
> library(MASS)
> install.packages("ISLR2")
> library(ISLR2)
> fix(Boston)
> names(Boston)
[1] "crim" "zn" "indus" "chas" "nox"
[6] "rm" "age" "dis" "rad" "tax"
[11] "ptratio" "lstat" "medv"
最小二乗法の当てはめはlm()関数を使う。lm(y~x,data)のようにlm()関数は使う。
重回帰分析なので、lm(y~x1+x2+x3)のように使う。summary()関数で全ての予測変数の回帰係数が表示される。
プログラム> lm.fit <- lm(medv ~ lstat + age, data = Boston)
> summary(lm.fit)
Call:
lm(formula = medv ~ lstat + age, data = Boston)Residuals:
Min 1Q Median 3Q Max
-15.981 -3.978 -1.283 1.968 23.158Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 33.22276 0.73085 45.458 < 2e-16 ***
lstat -1.03207 0.04819 -21.416 < 2e-16 ***
age 0.03454 0.01223 2.826 0.00491 **
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 6.173 on 503 degrees of freedom
Multiple R-squared: 0.5513,Adjusted R-squared: 0.5495
F-statistic: 309 on 2 and 503 DF,p-value: < 2.2e-16
分析結果の値をそれぞれ見る、値の説明*1は前回の線形回帰で説明した。
数値がどうで、どんな判断をするのかよくわかっていない。本には細かく書かれていなく、自分の統計学の知識が足りないため、ここの部分、それぞれの数値がどんな分析結果を導き出せるのかは、後ほど書くことにする。疑問のまま残しておく。
今は、一度いろんな分析方法をまとめることが目的。
もろもろ必要なものをダウンロードして、vif()は分散拡大要因を計算するもの。この中でageのp値が高いので取り除いて、回帰を当てはめる
プログラム> install.packages("car")> install.packages("vctrs")
> install.packages("hms")
> library(car)
> vif(lm.fit)
crim zn indus chas nox rm
1.767486 2.298459 3.987181 1.071168 4.369093 1.912532
age dis rad tax ptratio lstat
3.088232 3.954037 7.445301 9.002158 1.797060 2.870777
> lm.fit1 <- lm(medv ~ . - age, data = Boston)
> summary(lm.fit1)Call:
lm(formula = medv ~ . - age, data = Boston)Residuals:
Min 1Q Median 3Q Max
-15.1851 -2.7330 -0.6116 1.8555 26.3838Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 41.525128 4.919684 8.441 3.52e-16 ***
crim -0.121426 0.032969 -3.683 0.000256 ***
zn 0.046512 0.013766 3.379 0.000785 ***
indus 0.013451 0.062086 0.217 0.828577
chas 2.852773 0.867912 3.287 0.001085 **
nox -18.485070 3.713714 -4.978 8.91e-07 ***
rm 3.681070 0.411230 8.951 < 2e-16 ***
dis -1.506777 0.192570 -7.825 3.12e-14 ***
rad 0.287940 0.066627 4.322 1.87e-05 ***
tax -0.012653 0.003796 -3.333 0.000923 ***
ptratio -0.934649 0.131653 -7.099 4.39e-12 ***
lstat -0.547409 0.047669 -11.483 < 2e-16 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 4.794 on 494 degrees of freedom
Multiple R-squared: 0.7343, Adjusted R-squared: 0.7284
F-statistic: 124.1 on 11 and 494 DF, p-value: < 2.2e-16ここで何をしているのか?先ほどよりたくさんの係数が増えた。
重回帰分析については、もう少し、理解度をあげて再挑戦しようと思う。
4、終わりに
こちらの本やサイトなどを参考にさせていただきました!