R言語を使いWeb教材「アイスクリーム屋さんで学ぶ楽しい統計学」1の「重回帰」について進めていきます(第6回)。

前回(第5回)の偏相関と同じデータを用いたので、前回と同じようにあらかじめcsv形式のファイル(data.csv)を作成しておく。

重回帰モデル
  • 前処理
> getwd()
[1] "C:/Users/Katsumasa/Documents"
> list.files()
[1] "data.csv"
> データ<-read.csv("data.csv")
> データ
データ番号 最高気温 最低気温 客数
1 1 33 22 382
2 2 33 26 324
3 3 34 27 338
4 4 34 28 317
5 5 35 28 341
6 6 35 27 360
7 7 34 28 339
8 8 32 25 329
9 9 28 24 218
10 10 35 24 402
11 11 33 26 342
12 12 28 25 205
13 13 32 23 368
14 14 25 22 196
15 15 28 21 304
16 16 30 23 294
17 17 29 23 275
18 18 32 25 336
19 19 34 26 384
20 20 35 27 368
> 最高気温<-データ$最高気温
> 最高気温
[1] 33 33 34 34 35 35 34 32 28 35 33 28 32 25 28 30 29 32 34 35
> 最低気温<-データ$最低気温
> 最低気温
[1] 22 26 27 28 28 27 28 25 24 24 26 25 23 22 21 23 23 25 26 27
> 客数<-データ$客数
> 客数
[1] 382 324 338 317 341 360 339 329 218 402 342 205 368 196 304 294 275 336
[19] 384 368

> 相関係数ay<-cor(最高気温,客数)
> 相関係数by<-cor(最低気温,客数)
> 相関係数ab<-cor(最高気温,最低気温
重回帰では、最高気温と最低気温の2つで、客数を予測するモデルを次のように考える。
客数の予測値=定数m+定数p×最高気温+定数q×最低気温
定数mが単回帰モデルのy切片に相当し、定数pと定数qは回帰直線の傾きに相当する。
定数m・p・qは以下で求まる。
  • 定数m=客数の平均-p×最高気温の平均-q×最低気温の平均
  • 定数p=客数と最高気温の偏回帰係数
  • 定数q=客数と最低気温の偏回帰係数
> 切片<-mean(客数)-偏回帰係数ay*mean(最高気温)-偏回帰係数by*mean(最低気温)
> 切片 #定数mに相当
[1] -90.64045

> 標準偏回帰係数ay<-(相関係数ay-(相関係数by*相関係数ab))/(1-相関係数ab^2)
> 偏回帰係数ay<-標準偏回帰係数ay*(sd(客数)/sd(最高気温))
> 偏回帰係数ay #定数pに相当
[1] 25.95678

> 標準偏回帰係数by<-(相関係数by-(相関係数ay*相関係数ab))/(1-相関係数ab^2)
> 偏回帰係数by<-標準偏回帰係数by*(sd(客数)/sd(最低気温))
> 偏回帰係数by #定数qに相当
[1] -16.70314
R関数で一発表示
> 重回帰結果<-lm(客数~最高気温+最低気温)
> coef(重回帰結果)
(Intercept) 最高気温 最低気温
-90.64045 25.95678 -16.70314

重回帰モデルによる予測
実際にこの重回帰モデルが正確に客数を予測できるかどうか調べる。
> 重回帰予測値<-切片+(偏回帰係数ay*最高気温)+(偏回帰係数by*最低気温)
> cbind(最高気温,最低気温,客数,重回帰予測値)
最高気温 最低気温 客数 重回帰予測値
[1,] 33 22 382 398.4640
[2,] 33 26 324 331.6515
[3,] 34 27 338 340.9051
[4,] 34 28 317 324.2020
[5,] 35 28 341 350.1587
[6,] 35 27 360 366.8619
[7,] 34 28 339 324.2020
[8,] 32 25 329 322.3978
[9,] 28 24 218 235.2739
[10,] 35 24 402 416.9713
[11,] 33 26 342 331.6515
[12,] 28 25 205 218.5707
[13,] 32 23 368 355.8041
[14,] 25 22 196 190.8098
[15,] 28 21 304 285.3833
[16,] 30 23 294 303.8906
[17,] 29 23 275 277.9338
[18,] 32 25 336 322.3978
[19,] 34 26 384 357.6082
[20,] 35 27 368 366.8619

  1. web教材「アイスクリーム屋さんで学ぶ楽しい統計学」第6章 重回帰 http://kogolab.chillout.jp/elearn/icecream/chap6/sec0.html