R言語を使いWeb教材「アイスクリーム屋さんで学ぶ楽しい統計学」1の「偏相関」について進めていきます(第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 384
[20] 368
最低気温と客数の散布図を描き、 相関を求める。
> plot(最低気温,客数)
> cor(最低気温,客数)
[1] 0.3019116
弱い相関が認められるように見えますが、無相関検定を行って確認してみます。
> cor(最低気温,客数)*sqrt(length(最低気温)-2)/sqrt(1-cor(最低気温,客数)^2)
[1] 1.3436
> qt(0.025,18,lower.tail=FALSE)
[1] 2.100922
> qt(0.025,18)
[1] -2.100922
5%有意水準は2.10のので、1.34だと有意な相関とはいえないという結論になしました。

偏相関係数を求める
最高気温aの影響を除いた最低気温bと客数yの偏相関係数を求める。
> 偏相関係数by<-(相関係数by-(相関係数ay*相関係数ab))/(sqrt(1-相関係数ay^2)*sqrt(1-相関係数ab^2))
> 偏相関係数by
[1] -0.8956004
これはaとyの残差とaとbの残差の相関にあたる。

ちなみに、最高気温bの影響を除いた最低気温aと客数yの偏相関係数は以下のようになる。
> 偏相関係数ay<-(相関係数ay-(相関係数by*相関係数ab))/(sqrt(1-相関係数by^2)*sqrt(1-相関係数ab^2))
> 偏相関係数ay
[1] 0.9732414

  1. web教材「アイスクリーム屋さんで学ぶ楽しい統計学」第5章 偏相関 http://kogolab.chillout.jp/elearn/icecream/chap5/sec0.html