アイスクリーム統計学 第2章 相関係数をR(R言語)で (書籍なら、タイトルは『統計学がわかる 【回帰分析・因子分析編】 (ファーストブック)』

Rコード

# アイスクリーム統計学 ch02




#
# 手計算は省略
#




# この店のデータ
日付_vec1 <- c(1:10)
最高気温_vec1 <- c(29, 29, 30, 32, 33, 32, 31, 26, 28, 31)
客数_vec1 <- c(326, 364, 283, 369, 417, 436, 438, 296, 263, 389)

この店のデータ <- data.frame(日付_df1 = 日付_vec1, 最高気温_df1 = 最高気温_vec1, 客数_df1 = 客数_vec1)
この店のデータ




# 散布図
par(family = "Osaka") # 文字化けするなら。
plot(この店のデータ$最高気温_df1, この店のデータ$客数_df1,
    pch = 18, col = "blue", cex = 3,
    xlab = "気温", ylab = "客数", main = "この店における気温と客数の関係(平日のみ)")




# 相関係数
cor.test(この店のデータ$最高気温_df1, この店のデータ$客数_df1)
round(cor(この店のデータ$最高気温_df1, この店のデータ$客数_df1), 2)




# X店のデータ
日付_vec2 <- c(1:10)
最高気温_vec2 <- c(29, 30, 29, 32, 33, 27, 28, 32, 34, 32)
客数_vec2 <- c(312, 348, 284, 369, 420, 275, 294, 368, 451, 405)

X店のデータ <- data.frame(日付_df2 = 日付_vec2, 最高気温_df2 = 最高気温_vec2, 客数_df2 = 客数_vec2)
X店のデータ




# 散布図
plot(X店のデータ$最高気温_df2, X店のデータ$客数_df2,
    pch = 18, col = "blue", cex = 3,
    xlab = "気温", ylab = "客数", main = "X店における気温と客数の関係(平日のみ)")




# 相関係数
cor.test(X店のデータ$最高気温_df2, X店のデータ$客数_df2)
round(cor(X店のデータ$最高気温_df2, X店のデータ$客数_df2), 2)




# 第1章で使用したデータ
# データフレーム名は、駅からの距離と平均客数のデータに変更した
# 店舗別8月の平均客数データ(12店舗)
店舗_vec3 <- c(1:12)
駅からの距離_vec3 <- c(10, 1200, 500, 50, 740, 30, 10, 360, 150, 930, 620, 65) # 単位 : m
平均客数_vec3 <- c(795, 213, 465, 694, 403, 782, 769, 561, 692, 361, 385, 723)

駅からの距離と平均客数のデータ <- data.frame(店舗_df3 = 店舗_vec3, 駅からの距離_df3 = 駅からの距離_vec3, 平均客数_df3 = 平均客数_vec3)

駅からの距離と平均客数のデータ




# 相関係数
cor.test(駅からの距離と平均客数のデータ$駅からの距離_df3, 駅からの距離と平均客数のデータ$平均客数_df3)
round(cor(駅からの距離と平均客数のデータ$駅からの距離_df3, 駅からの距離と平均客数のデータ$平均客数_df3), 2)

R Console

> # アイスクリーム統計学 ch02
> 
> 
> 
> 
> #
> # 手計算は省略
> #
> 
> 
> 
> 
> # この店のデータ
> 日付_vec1 <- c(1:10)
> 最高気温_vec1 <- c(29, 29, 30, 32, 33, 32, 31, 26, 28, 31)
> 客数_vec1 <- c(326, 364, 283, 369, 417, 436, 438, 296, 263, 389)
> 
> この店のデータ <- data.frame(日付_df1 = 日付_vec1, 最高気温_df1 = 最高気温_vec1, 客数_df1 = 客数_vec1)
> この店のデータ
   日付_df1 最高気温_df1 客数_df1
1         1           29      326
2         2           29      364
3         3           30      283
4         4           32      369
5         5           33      417
6         6           32      436
7         7           31      438
8         8           26      296
9         9           28      263
10       10           31      389
> 
> 
> 
> 
> # 散布図
> par(family = "Osaka") # 文字化けするなら。
> plot(この店のデータ$最高気温_df1, この店のデータ$客数_df1,
+     pch = 18, col = "blue", cex = 3,
+     xlab = "気温", ylab = "客数", main = "この店における気温と客数の関係(平日のみ)")
> 
> 
> 
> 
> # 相関係数
> cor.test(この店のデータ$最高気温_df1, この店のデータ$客数_df1)

    Pearson's product-moment correlation

data:  この店のデータ$最高気温_df1 and この店のデータ$客数_df1
t = 3.3077, df = 8, p-value = 0.01073
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.2500639 0.9398864
sample estimates:
      cor 
0.7600265 

> round(cor(この店のデータ$最高気温_df1, この店のデータ$客数_df1), 2)
[1] 0.76
> 
> 
> 
> 
> # X店のデータ
> 日付_vec2 <- c(1:10)
> 最高気温_vec2 <- c(29, 30, 29, 32, 33, 27, 28, 32, 34, 32)
> 客数_vec2 <- c(312, 348, 284, 369, 420, 275, 294, 368, 451, 405)
> 
> X店のデータ <- data.frame(日付_df2 = 日付_vec2, 最高気温_df2 = 最高気温_vec2, 客数_df2 = 客数_vec2)
> X店のデータ
   日付_df2 最高気温_df2 客数_df2
1         1           29      312
2         2           30      348
3         3           29      284
4         4           32      369
5         5           33      420
6         6           27      275
7         7           28      294
8         8           32      368
9         9           34      451
10       10           32      405
> 
> 
> 
> 
> # 散布図
> plot(X店のデータ$最高気温_df2, X店のデータ$客数_df2,
+     pch = 18, col = "blue", cex = 3,
+     xlab = "気温", ylab = "客数", main = "X店における気温と客数の関係(平日のみ)")
> 
> 
> 
> 
> # 相関係数
> cor.test(X店のデータ$最高気温_df2, X店のデータ$客数_df2)

    Pearson's product-moment correlation

data:  X店のデータ$最高気温_df2 and X店のデータ$客数_df2
t = 10.185, df = 8, p-value = 7.4e-06
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.8489333 0.9915947
sample estimates:
      cor 
0.9635381 

> round(cor(X店のデータ$最高気温_df2, X店のデータ$客数_df2), 2)
[1] 0.96
> 
> 
> 
> 
> # 第1章で使用したデータ
> # データフレーム名は、駅からの距離と平均客数のデータに変更した
> # 店舗別8月の平均客数データ(12店舗)
> 店舗_vec3 <- c(1:12)
> 駅からの距離_vec3 <- c(10, 1200, 500, 50, 740, 30, 10, 360, 150, 930, 620, 65) # 単位 : m
> 平均客数_vec3 <- c(795, 213, 465, 694, 403, 782, 769, 561, 692, 361, 385, 723)
> 
> 駅からの距離と平均客数のデータ <- data.frame(店舗_df3 = 店舗_vec3, 駅からの距離_df3 = 駅からの距離_vec3, 平均客数_df3 = 平均客数_vec3)
> 
> 駅からの距離と平均客数のデータ
   店舗_df3 駅からの距離_df3 平均客数_df3
1         1               10          795
2         2             1200          213
3         3              500          465
4         4               50          694
5         5              740          403
6         6               30          782
7         7               10          769
8         8              360          561
9         9              150          692
10       10              930          361
11       11              620          385
12       12               65          723
> 
> 
> 
> 
> # 相関係数
> cor.test(駅からの距離と平均客数のデータ$駅からの距離_df3, 駅からの距離と平均客数のデータ$平均客数_df3)

    Pearson's product-moment correlation

data:  駅からの距離と平均客数のデータ$駅からの距離_df3 and 駅からの距離と平均客数のデータ$平均客数_df3
t = -15.385, df = 10, p-value = 2.74e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9944144 -0.9263900
sample estimates:
       cor 
-0.9795221 

> round(cor(駅からの距離と平均客数のデータ$駅からの距離_df3, 駅からの距離と平均客数のデータ$平均客数_df3), 2)
[1] -0.98

散布図のスクリーンショット

f:id:my_notes:20170627164052p:plain

f:id:my_notes:20170627164104p:plain

参考Webサイト

アイスクリーム統計学にようこそ!

書籍

統計学がわかる 【回帰分析・因子分析編】 (ファーストブック)

統計学がわかる 【回帰分析・因子分析編】 (ファーストブック)

第1章の当ブログ記事

my-notes.hatenablog.com