高校生のための統計学習教材(総務省統計局) の解説です。
上記サイトの第2講「多変量データの扱い」をダウンロードし、テキストとしてください。テキスト にそって統計ソフト「RStudio」の適用例を提示します。必要に応じて「なるほど統計学園」の参考ページを参照してください。

当サイト「1_記述統計」の中の「3.2 単回帰分析」 では、
  ・ 散布図に当てはまる近似直線が相関係数を利用して求まること
  ・ 近似直線の当てはまりの度合いは決定係数 \(R^2\) で表されること
を紹介しました。しかし実際には要因が1つということはありません。ここでは複数の要因が結果にどのように影響を及ぼすのかを考えましょう。

1 世界の気象データ

単回帰分析が、1つの目的変数を1つの説明変数で予測したのに対し、重回帰分析は1つの目的変数を複数の説明変数で予測しようというものです。

テキスト p5 では、「世界の気象データ」をもとに、観測値の緯度と気温との関係を調べます。
テキストと同じデータがネット上で見つからなかったので、代替として
世界の統計2022 第1章 地理・気象からexcelデータダウンロードしたものを用います。
データを加工し、RStudioのワーキングディレクトリのdataフォルダに「kion」というファイル名で保存し、Rに読み込んで使用します。

library(readxl)
kion <- read_excel("data/kion.xlsx")
str(kion)
## tibble [42 × 4] (S3: tbl_df/tbl/data.frame)
##  $ 観測地: chr [1:42] "東京" "ニューデリー" "ソウル" "リヤド" ...
##  $ 気温  : num [1:42] 26.4 33.2 25.7 36.6 30.9 28.6 26.7 28.8 23.7 31.7 ...
##  $ 緯度  : num [1:42] 0.61 0.49 0.65 0.42 0.23 0.54 0.68 0.38 0.68 0.42 ...
##  $ 高度  : num [1:42] 25.2 211 86 635 3 9 55 31 891 21 ...

1.1 説明変数が緯度

#説明変数は緯度、目的変数は年最高気温
par(family = "HiraKakuProN-W3") #日本語フォントの指定
plot(kion$緯度,kion$気温,col="white")
par(new=T)
text(cbind(kion$緯度,kion$気温), kion$観測地, cex=0.6)
cor(kion$緯度,kion$気温)
## [1] -0.5857292
result1 <- lm(kion$気温 ~ kion$緯度, data=kion) 
abline(result1, col="cyan", lty=3) 

summary(result1)
## 
## Call:
## lm(formula = kion$気温 ~ kion$緯度, data = kion)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.0040  -2.3413  -0.3335   2.1679  10.2358 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   31.113      1.572  19.787  < 2e-16 ***
## kion$緯度    -11.307      2.474  -4.571  4.6e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.16 on 40 degrees of freedom
## Multiple R-squared:  0.3431, Adjusted R-squared:  0.3267 
## F-statistic: 20.89 on 1 and 40 DF,  p-value: 4.6e-05

決定係数 Multiple R-squared: 0.3431  \(R^2=0.3431\)

自由度調整済み決定係数 Adjusted R-squared: 0.3267   \(AdjR^2=0.3267\)

これらは、全体の変動に対する回帰変動の割合で、1に近いほど「回帰直線の当てはまりがよい」と考えます。どちらも30%そこそこで、あまり当てはまりが良いとは言えないようです。

1.2 説明変数が緯度の余弦

#緯度はcos
library("dplyr")
## 
##  次のパッケージを付け加えます: 'dplyr'
##  以下のオブジェクトは 'package:stats' からマスクされています: 
## 
##      filter, lag
##  以下のオブジェクトは 'package:base' からマスクされています: 
## 
##      intersect, setdiff, setequal, union
kion2 <- mutate(kion, c.lon = cos(kion$緯度) )
str(kion2)
## tibble [42 × 5] (S3: tbl_df/tbl/data.frame)
##  $ 観測地: chr [1:42] "東京" "ニューデリー" "ソウル" "リヤド" ...
##  $ 気温  : num [1:42] 26.4 33.2 25.7 36.6 30.9 28.6 26.7 28.8 23.7 31.7 ...
##  $ 緯度  : num [1:42] 0.61 0.49 0.65 0.42 0.23 0.54 0.68 0.38 0.68 0.42 ...
##  $ 高度  : num [1:42] 25.2 211 86 635 3 9 55 31 891 21 ...
##  $ c.lon : num [1:42] 0.82 0.882 0.796 0.913 0.974 ...
par(family = "HiraKakuProN-W3") #日本語フォントの指定
plot(kion2$c.lon,kion2$気温,col="white")
par(new=T)
text(cbind(kion2$c.lon,kion2$気温), kion2$観測地, cex=0.6)
cor(kion2$c.lon,kion2$気温)
## [1] 0.6539711
result2 <- lm(kion2$気温 ~ kion2$c.lon, data=kion2) 
abline(result2, col="cyan", lty=3) 

summary(result2)
## 
## Call:
## lm(formula = kion2$気温 ~ kion2$c.lon, data = kion2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.6580  -1.1833  -0.1505   1.9590   9.4646 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    4.689      3.682   1.273     0.21    
## kion2$c.lon   24.583      4.496   5.467 2.65e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.883 on 40 degrees of freedom
## Multiple R-squared:  0.4277, Adjusted R-squared:  0.4134 
## F-statistic: 29.89 on 1 and 40 DF,  p-value: 2.646e-06

決定係数 Multiple R-squared: 0.4277  \(R^2=0.4277\)

自由度調整済み決定係数 Adjusted R-squared: 0.4134   \(AdjR^2=0.4134\)

当てはまりは 40%で、少し改善しているようです。

1.3 説明変数が緯度の余弦と標高

result3 <- lm(kion2$気温 ~ kion2$c.lon+kion2$高度, data=kion2) 
summary(result3)
## 
## Call:
## lm(formula = kion2$気温 ~ kion2$c.lon + kion2$高度, data = kion2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9917 -1.9969 -0.0704  1.4023 10.6652 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.332610   3.240540   1.028 0.310092    
## kion2$c.lon 27.407011   4.006303   6.841 3.55e-08 ***
## kion2$高度  -0.003815   0.001045  -3.652 0.000763 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.395 on 39 degrees of freedom
## Multiple R-squared:  0.5735, Adjusted R-squared:  0.5516 
## F-statistic: 26.22 on 2 and 39 DF,  p-value: 6.069e-08

決定係数 Multiple R-squared: 0.5735  \(R^2=0.5735\)

自由度調整済み決定係数 Adjusted R-squared: 0.5516   \(AdjR^2=0.5516\)

当てはまりは 50%を超えました。しかし、他にも「地理的要因」「海流の影響」など考えられる要因があります。

このように重回帰分析では

  • 当てはまりがよくなるように、変数を変換する。
  • 説明変数をふやして、当てはまりを調べる。

このようにして、最も当てはまりの良いモデルを作るのが、重回帰分析の目的です。