回帰分析 - 線形単回帰分析

今回は、データ解析の基本である線形単回帰分析の復習をしてみる

lm関数

Rには、線形回帰分析を行う関数として、lmが用意されている

lm(formula, data, weights, subset, na.action)
  • formula : モデルの形式
  • data : データセット
  • weights : 説明変数に重みをつける場合に指定する
  • na.action : 欠損値の扱いを指定

データの用意

今回は、UCIマシンラーニング•レポジトリにあるAuto MPG Data Setの中の自動車の排気量と重量の二つの変数を使う。

ats <- read.table("auto-mpg.data", header=T)
ats <- ats[, c("displacement", "weight")]
head(ats)
  displacement weight
1          307   3504
2          350   3693
3          318   3436
4          304   3433
5          302   3449
6          429   4341

相関係数を確認

cor(ats$displacement, ats$weight)
[1] 0.9328241

相関係数を確認すると、0.9を超えているので、かなり強い相関関係があることが分かる

散布図の描画

plot(ats)



回帰分析の結果の要約

summary(ats.lm)
Call:
lm(formula = ats$weight ~ ats$displacement)

Residuals:
     Min       1Q   Median       3Q      Max 
-1866.13  -175.35   -44.68   181.79  1042.20 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      1505.0187    32.3062   46.59   <2e-16 ***
ats$displacement    7.5761     0.1471   51.52   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 305.5 on 396 degrees of freedom
Multiple R-squared: 0.8702,	Adjusted R-squared: 0.8698 
F-statistic:  2654 on 1 and 396 DF,  p-value: < 2.2e-16 
Residuals
  • 残差の四分位数。
  • lm関数で求めたモデルによる値と実データの値の差の事で、残差の最小値、第1四分位数、中央値、第2四分位数、最大値が出力される
Coefficients
  • 推定された回帰係数。
  • Interceptの行に、定数項、その下に、モデルで指定した説明変数の係数があり、ここではats.s$displacementになっている。
  • 各行は、係数の推測値、その標準誤差、t値、p値の順に並べられている。
  • 係数の横にある、t値、p値は、係数が回帰モデルに役立っているかどうかに関する統計量で、p値が小さいほど、その係数が役立っている事を示す。
  • 一番右にある、アスタリスクは、役に立ってる度を表している。3つが最大。
    • 追記: 係数がこの回帰モデルに役立っているかどうかで、実際のデータへの当てはまりに役立っているかどうかは別です。
Multiple R-squared、Adjusted R-squared
  • 決定係数と自由度調整済み決定係数
  • 求めた回帰モデルがどの程度データにフィットしているかを評価する指標で、これらが1に近づくほど回帰モデルがデータに良くフィットしていることになる。
  • 調整をする理由は、決定係数が、その定義上説明変数が多くなれば実際より大きくなってしまう傾向があるため

散布図+回帰直線の描画

線形単回帰分析の場合、散布図に回帰直線を引くことで、データの傾向を概観することが出来る

plot(ats)
abline(ats.lm,col="red")


回帰診断図

回帰分析では残差を視覚的に分析したりする。
plotに、lmの結果を入れると、回帰診断図という図を出力することが出来る。
今回のデータは、残差の影響が大きい事が分かる

par(mfrow=c(2,2))
plot(ats.lm)

左上から、「残差とフィット値のプロット」、「残差の正規Q-Qプロット」、「残差の平方根プロット」、「残差と影響力プロット」

  • 残差とフィット値のプロット
    • 残差とフィット値の散布図で、図から残差の全体像を見る事が出来る
  • 正規Q-Qプロット
    • データの正規性を考察するための図
    • データが正規分布に従う場合、点が直線上で並ぶ
    • 回帰分析では、残差が標準正規分布に従うと仮定しているため、この図が直線に近いほど良いことになる
  • 残差の平方根プロット
    • 標準化した残差の絶対値の平方根を縦軸にし、予測値を横軸とした散布図
    • この図も残差の変動状況を考察することが目的
  • 残差と影響力プロット
    • 横軸が、梃子値、縦軸が標準化した残差で、点線でクックの距離0.5を示している
    • 梃子値が大きいほど当てはまりが良く、クックの距離が0.5以上で影響力が大きい、1以上だと特異に大きいと言われる

信頼区間と予測区間

  • predict関数で、信頼区間と予測区間を求めることが出来る。
    • 信頼区間 : 母集団の母数の推定範囲
    • 予測区間 : 今後の観測値の予測範囲
ats.clim <- predict(ats.lm, interval="confidence")
ats.plim <- predict(ats.lm, interval="prediction")
  • グラフ描画
matplot(ats$displacement,cbind(ats.clim, ats.plim[,-1]),
		lty=c(1,2,2,3,3), type="l", ylab="predicted weight", xlab="displacement")


参考書籍

  • 多次元データ解析法 (Rで学ぶデータサイエンス 2)


  • Rによるデータサイエンス - データ解析の基礎から最新手法まで