いろいろな方法があるが、それぞれ見ていくことにする。ここではlog.mid.priceをmhw(mid rangeのhorse.power)とmid rangeのdisplacementで回帰することとする。
授業で習ったやり方
授業で習ったやり方はこんな感じ。cbindはベクトルを束ねて、行列にするような関数。lsfit(cbind(mhw,mid.displacement),log.mid.price)
これを元に様々な情報を得ることが出来る。例えば、回帰係数を出したければ以下のようにする。interceptは切片項のことである。
lsfit(cbind(mhw,mid.displacement),log.mid.price)$coef Intercept mhw mid.displacement 8.8390413 6.8435105 0.1805099
残差を求めたければ、以下のようにする。
lsfit(cbind(mhw,mid.displacement),log.mid.price)$residuals #lsfit(cbind(mhw,mid.displacement),log.mid.price)$resでのいける
回帰した係数の標準偏差を求めたければ、以下のコマンドを。
ls.diag(lsfit(cbind(mhw,mid.displacement),log.mid.price))$std.err
これまで説明した係数を求めるやつと係数の標準偏差より、各係数のt値を求めてみる。
lsfit(cbind(mhw,mid.displacement),log.mid.price)$coef/ls.diag(lsfit(cbind(mhw,mid.displacement),log.mid.price))$std.err [,1] Intercept 127.40636 mhw 13.02275 mid.displacement 12.12672
このようにして求めることができる。このやり方は何も間違っていないが、実際のデータか解析をやることを考えると結構面倒なのも、また事実である。ということでこれをやるための簡単なやり方が下のやり方。
簡単なやり方
lmという関数を使うともっと簡単にできる。「従属変数~説明変数1+説明変数2」という感じの書き方をする。cbindとかはいらない。線形で回帰したい場合は「+」のところをいじらないこと。lsfitでやっていたのと同じことをlmを使ってやってみる。lm(log.mid.price~mhw+mid.displacement) Call: lm(formula = log.mid.price ~ mhw + mid.displacement) Coefficients: (Intercept) mhw mid.displacement 8.8390 6.8435 0.1805
lsfitでやったものと同じ係数を得ることができた。もっと詳細な情報を得たければ、summaryという関数を使う。
summary(lm(log.mid.price~mhw+mid.displacement)) Call: lm(formula = log.mid.price ~ mhw + mid.displacement) Residuals: Min 1Q Median 3Q Max -1.02233 -0.17670 -0.01824 0.18200 0.87581 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 8.83904 0.06938 127.41 <2e-16 *** mhw 6.84351 0.52550 13.02 <2e-16 *** mid.displacement 0.18051 0.01489 12.13 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.2704 on 259 degrees of freedom Multiple R-Squared: 0.6593, Adjusted R-squared: 0.6567 F-statistic: 250.6 on 2 and 259 DF, p-value: < 2.2e-16
標準偏差、t値も出すことができた。また、このやり方だと決定係数も一度に知ることができて、解析を簡単にすることができる。ちなみに、見方が分からないと困るので一応書いておく。
Coefficients | 係数 |
Estimated | 推定された係数の値 |
Std. Erro | 推定された係数の標準偏差 |
t value | t値 |
Multiple R-Squared | 決定係数 |
Adjusted R-squared | 自由度修正済決定係数 |
また、lmした結果をplotすると様々な情報を見ることができるようである。
plot(lm(log.mid.price~mhw+mid.displacement))