『マンガでわかる統計学 回帰分析編』第3章 重回帰分析 をR(R言語)で

Rコード

#
# 一ヶ月の売上額が目的変数
# 他は説明変数
#




カザミベーカリー <- data.frame(店舗名 = c("夢の丘店", "寺井駅ビル店", "曽根店",
                                    "橋本通り店", "桔梗町店", "郵便局前店",
                                    "水道町駅前店", "六条駅ビル店", "若葉沿い店",
                                    "三里店"),
                            お店の面積 = c(10, 8, 8, 5, 7,
                                        8, 7, 9, 6, 9),
                            最寄り駅からの距離 = c(80, 0, 200, 200, 300,
                                                230, 40, 0, 330, 180),
                            一ヶ月の売上額 = c(469, 366, 371, 208, 246,
                                            297, 363, 436, 198, 364))

カザミベーカリー




お店の面積 <- カザミベーカリー$お店の面積
お店の面積

最寄り駅からの距離 <- カザミベーカリー$最寄り駅からの距離
最寄り駅からの距離

一ヶ月の売上額 <- カザミベーカリー$一ヶ月の売上額
一ヶ月の売上額




# 散布図
# お店の面積と一ヶ月の売上げ額
#
# 文字化けするなら
par(family = "Osaka")
plot(お店の面積, 一ヶ月の売上額)
plot(最寄り駅からの距離, 一ヶ月の売上額)


lm1 <- lm(一ヶ月の売上額 ~ お店の面積+最寄り駅からの距離, data = カザミベーカリー)
lm1
summary(lm1)
# 寄与率 Multiple R-squared:  0.9452
# 自由度調整済み寄与率 Adjusted R-squared:  0.9296




# データフレームに説明変数を追加
店長の年齢 <- c(42, 29, 33, 41, 33, 35, 40, 46, 44, 34)
カザミベーカリー2 <- transform(カザミベーカリー, 店長の年齢 = 店長の年齢)
カザミベーカリー2


lm2 <- lm(一ヶ月の売上額 ~ お店の面積+最寄り駅からの距離+店長の年齢, data = カザミベーカリー2)
lm2
summary(lm2)
# 寄与率 Multiple R-squared:  0.9495
# 自由度調整済み寄与率 Adjusted R-squared:  0.9243




#
# lm1に戻る。データフレームでいえば、カザミベーカリーに戻る
#
summary(lm1)




# 95%信頼区間
# lm1_conf <- predict(lm1, interval = "confidence", level = 0.95)
# (メモとして残す)




# 予測する
#
# 伊勢崎店, お店の面積 10, 最寄駅からの距離 110, の売上額
#
coef(lm1)
b <- round(coef(lm1)[[1]], 1)
a1 <- round(coef(lm1)[[2]], 1)
a2 <- round(coef(lm1)[[3]], 1)
#
# 計算式
# y = a1*x1 + a2*x2 + b # 41.5*10 - 0.3*110 + 65.3
y1 <- a1*10 + a2*110 + b
y1
# 売上額の予測 [1] 447.3




#
# データや分析自体にちょっと苦しいものを感じた。
# が、この書籍(マンガ)の都合上、仕方ないと思う。
#

R Console

> #
> # 一ヶ月の売上額が目的変数
> # 他は説明変数
> #
> 
> 
> 
> 
> カザミベーカリー <- data.frame(店舗名 = c("夢の丘店", "寺井駅ビル店", "曽根店",
+                                     "橋本通り店", "桔梗町店", "郵便局前店",
+                                     "水道町駅前店", "六条駅ビル店", "若葉沿い店",
+                                     "三里店"),
+                             お店の面積 = c(10, 8, 8, 5, 7,
+                                         8, 7, 9, 6, 9),
+                             最寄り駅からの距離 = c(80, 0, 200, 200, 300,
+                                                 230, 40, 0, 330, 180),
+                             一ヶ月の売上額 = c(469, 366, 371, 208, 246,
+                                             297, 363, 436, 198, 364))
> 
> カザミベーカリー
         店舗名 お店の面積 最寄り駅からの距離 一ヶ月の売上額
1      夢の丘店         10                 80            469
2  寺井駅ビル店          8                  0            366
3        曽根店          8                200            371
4    橋本通り店          5                200            208
5      桔梗町店          7                300            246
6    郵便局前店          8                230            297
7  水道町駅前店          7                 40            363
8  六条駅ビル店          9                  0            436
9    若葉沿い店          6                330            198
10       三里店          9                180            364
> 
> 
> 
> 
> お店の面積 <- カザミベーカリー$お店の面積
> お店の面積
 [1] 10  8  8  5  7  8  7  9  6  9
> 
> 最寄り駅からの距離 <- カザミベーカリー$最寄り駅からの距離
> 最寄り駅からの距離
 [1]  80   0 200 200 300 230  40   0 330 180
> 
> 一ヶ月の売上額 <- カザミベーカリー$一ヶ月の売上額
> 一ヶ月の売上額
 [1] 469 366 371 208 246 297 363 436 198 364
> 
> 
> 
> 
> # 散布図
> # お店の面積と一ヶ月の売上げ額
> #
> # 文字化けするなら
> par(family = "Osaka")
> plot(お店の面積, 一ヶ月の売上額)
> plot(最寄り駅からの距離, 一ヶ月の売上額)
> 
> 
> lm1 <- lm(一ヶ月の売上額 ~ お店の面積+最寄り駅からの距離, data = カザミベーカリー)
> lm1

Call:
lm(formula = 一ヶ月の売上額 ~ お店の面積 + 最寄り駅からの距離, 
    data = カザミベーカリー)

Coefficients:
       (Intercept)          お店の面積  最寄り駅からの距離  
           65.3239             41.5135             -0.3409  

> summary(lm1)

Call:
lm(formula = 一ヶ月の売上額 ~ お店の面積 + 最寄り駅からの距離, 
    data = カザミベーカリー)

Residuals:
    Min      1Q  Median      3Q     Max 
-31.432 -12.103  -3.429  12.680  41.745 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)        65.32392   55.73834   1.172 0.279546    
お店の面積         41.51348    6.25612   6.636 0.000294 ***
最寄り駅からの距離 -0.34088    0.07814  -4.362 0.003304 ** 
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 24.42 on 7 degrees of freedom
Multiple R-squared:  0.9452, Adjusted R-squared:  0.9296 
F-statistic: 60.41 on 2 and 7 DF,  p-value: 3.844e-05

> # 寄与率 Multiple R-squared:  0.9452
> # 自由度調整済み寄与率 Adjusted R-squared:  0.9296
> 
> 
> 
> 
> # データフレームに説明変数を追加
> 店長の年齢 <- c(42, 29, 33, 41, 33, 35, 40, 46, 44, 34)
> カザミベーカリー2 <- transform(カザミベーカリー, 店長の年齢 = 店長の年齢)
> カザミベーカリー2
         店舗名 お店の面積 最寄り駅からの距離 一ヶ月の売上額 店長の年齢
1      夢の丘店         10                 80            469         42
2  寺井駅ビル店          8                  0            366         29
3        曽根店          8                200            371         33
4    橋本通り店          5                200            208         41
5      桔梗町店          7                300            246         33
6    郵便局前店          8                230            297         35
7  水道町駅前店          7                 40            363         40
8  六条駅ビル店          9                  0            436         46
9    若葉沿い店          6                330            198         44
10       三里店          9                180            364         34
> 
> 
> lm2 <- lm(一ヶ月の売上額 ~ お店の面積+最寄り駅からの距離+店長の年齢, data = カザミベーカリー2)
> lm2

Call:
lm(formula = 一ヶ月の売上額 ~ お店の面積 + 最寄り駅からの距離 + 
    店長の年齢, data = カザミベーカリー2)

Coefficients:
       (Intercept)          お店の面積  最寄り駅からの距離          店長の年齢  
           17.6998             42.2088             -0.3327              1.0874  

> summary(lm2)

Call:
lm(formula = 一ヶ月の売上額 ~ お店の面積 + 最寄り駅からの距離 + 
    店長の年齢, data = カザミベーカリー2)

Residuals:
    Min      1Q  Median      3Q     Max 
-20.905 -11.451  -6.948   7.922  46.287 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)        17.69976   88.27609   0.201 0.847710    
お店の面積         42.20883    6.56029   6.434 0.000667 ***
最寄り駅からの距離 -0.33271    0.08184  -4.066 0.006609 ** 
店長の年齢          1.08740    1.52345   0.714 0.502175    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 25.32 on 6 degrees of freedom
Multiple R-squared:  0.9495, Adjusted R-squared:  0.9243 
F-statistic: 37.62 on 3 and 6 DF,  p-value: 0.000276

> # 寄与率 Multiple R-squared:  0.9495
> # 自由度調整済み寄与率 Adjusted R-squared:  0.9243
> 
> 
> 
> 
> #
> # lm1に戻る。データフレームでいえば、カザミベーカリーに戻る
> #
> summary(lm1)

Call:
lm(formula = 一ヶ月の売上額 ~ お店の面積 + 最寄り駅からの距離, 
    data = カザミベーカリー)

Residuals:
    Min      1Q  Median      3Q     Max 
-31.432 -12.103  -3.429  12.680  41.745 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)        65.32392   55.73834   1.172 0.279546    
お店の面積         41.51348    6.25612   6.636 0.000294 ***
最寄り駅からの距離 -0.34088    0.07814  -4.362 0.003304 ** 
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 24.42 on 7 degrees of freedom
Multiple R-squared:  0.9452, Adjusted R-squared:  0.9296 
F-statistic: 60.41 on 2 and 7 DF,  p-value: 3.844e-05

> 
> 
> 
> 
> # 95%信頼区間
> # lm1_conf <- predict(lm1, interval = "confidence", level = 0.95)
> # (メモとして残す)
> 
> 
> 
> 
> # 予測する
> #
> # 伊勢崎店, お店の面積 10, 最寄駅からの距離 110, の売上額
> #
> coef(lm1)
       (Intercept)         お店の面積 最寄り駅からの距離 
        65.3239164         41.5134783         -0.3408827 
> b <- round(coef(lm1)[[1]], 1)
> a1 <- round(coef(lm1)[[2]], 1) 
> a2 <- round(coef(lm1)[[3]], 1)
> #
> # 計算式
> # y = a1*x1 + a2*x2 + b # 41.5*10 - 0.3*110 + 65.3
> y1 <- a1*10 + a2*110 + b
> y1
[1] 447.3
> # 売上額の予測 [1] 447.3
> 
> 
> 
> 
> #
> # データや分析自体にちょっと苦しいものを感じた。
> # が、この書籍(マンガ)の都合上、仕方ないと思う。
> #

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

f:id:my_notes:20170618212636p:plain

f:id:my_notes:20170618212652p:plain

参考文献

マンガでわかる統計学 回帰分析編

マンガでわかる統計学 回帰分析編