第5回(11月12日) Task Check and Weekly Assignment
To Do
□ 単回帰分析をやってみる □ 重回帰分析をやってみる
Assignment
■ 投手のデータ(base_pitch.csv)で年俸を予測する最も適切で良いモデルを作ってください。
まずはデータセットを読み込んでください。これはプロ野球選手のデータで, 2013年の成績,年俸などが含まれているデータセットです。出典はこちら。>>http://baseball-data.com/
batter <- read.csv("base_bat.csv", na.strings = "NA")
summary(batter)
## money year age hight
## Min. : 8600 Min. : 1.00 Min. :24.0 Min. :169
## 1st Qu.:11375 1st Qu.: 7.75 1st Qu.:30.0 1st Qu.:177
## Median :16000 Median :12.00 Median :32.5 Median :180
## Mean :17488 Mean :11.12 Mean :33.4 Mean :181
## 3rd Qu.:20000 3rd Qu.:15.25 3rd Qu.:37.0 3rd Qu.:184
## Max. :57000 Max. :25.00 Max. :42.0 Max. :196
## NA's :5 NA's :5 NA's :5 NA's :5
## weight daritu shiai daseki dasuu
## Min. : 67.0 Min. :0.185 Min. : 9 Min. : 10 Min. : 10
## 1st Qu.: 80.8 1st Qu.:0.230 1st Qu.: 69 1st Qu.:238 1st Qu.:212
## Median : 87.5 Median :0.266 Median :108 Median :424 Median :374
## Mean : 88.4 Mean :0.262 Mean :102 Mean :395 Mean :347
## 3rd Qu.: 94.0 3rd Qu.:0.290 3rd Qu.:141 3rd Qu.:581 3rd Qu.:508
## Max. :130.0 Max. :0.333 Max. :144 Max. :658 Max. :590
## NA's :5
## anda HR datgen steal
## Min. : 2 Min. : 0 Min. : 1.0 Min. : 0.00
## 1st Qu.: 50 1st Qu.: 2 1st Qu.: 17.0 1st Qu.: 0.00
## Median : 88 Median : 6 Median : 40.0 Median : 1.00
## Mean : 95 Mean :10 Mean : 45.7 Mean : 5.65
## 3rd Qu.:147 3rd Qu.:16 3rd Qu.: 67.0 3rd Qu.: 6.00
## Max. :180 Max. :41 Max. :136.0 Max. :47.00
##
## four dead K gida
## Min. : 0.0 Min. : 0.00 Min. : 3.0 Min. : 0.00
## 1st Qu.: 16.0 1st Qu.: 1.00 1st Qu.: 38.0 1st Qu.: 0.00
## Median : 33.0 Median : 2.00 Median : 54.0 Median : 1.00
## Mean : 38.8 Mean : 3.63 Mean : 62.6 Mean : 3.19
## 3rd Qu.: 54.0 3rd Qu.: 5.00 3rd Qu.: 81.0 3rd Qu.: 5.00
## Max. :105.0 Max. :15.00 Max. :164.0 Max. :19.00
##
「グラウンドには銭が埋まっている」とかいいますが,ホームラン一本打ったらどれぐらい年俸が上がるのでしょうか。 ホームランはHR13,年俸はmoney13という変数に入っていますので,まずこの2変数間に相関があるかどうか調べましょう。
cor(batter$HR, batter$money, use = "complete.obs")
## [1] 0.3807
plot(batter$HR, batter$money)
相関係数は0.38と,そこそこ関係がああるようです。しかし,相関があることはわかっても,一本のホームランがいくらになるかはわかりません。これを明らかにするには,回帰分析という方法を使います。 回帰分析は次のようにして行います。
reg <- lm(money ~ HR, data = batter)
reg
##
## Call:
## lm(formula = money ~ HR, data = batter)
##
## Coefficients:
## (Intercept) HR
## 14059 328
これは直線の関数,すなわち一次関数y=ax+bをデータに当てはめたことを意味します。 結果から,年俸=328.4×本塁打+14058.7という関係が分かります。
直線の関数ですから,散布図この線を書き足すと,次のようになります。
plot(batter$HR, batter$money)
abline(reg, col = "red")
回帰分析のレポートには,当てはまりのよさ(適合度)を入れる必要があります。 当てはまりの良さは重相関係数の二乗(Multiple R-squared)で表現します。
summary(reg)
##
## Call:
## lm(formula = money ~ HR, data = batter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13255 -4733 -601 2949 32431
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14059 1606 8.75 1.2e-11 ***
## HR 328 113 2.91 0.0054 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7870 on 50 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.145, Adjusted R-squared: 0.128
## F-statistic: 8.47 on 1 and 50 DF, p-value: 0.00537
これを見ると0.1449であり,年俸の分散の14%しか本塁打が説明していないことがわかります(86%は別の要因)。
ホームランだけでは説明できないようで,説明する変数を増やしたいと思います。 複数の変数で説明するのが重回帰分析といい,モデルの書き方は次の通りです。
reg2 <- lm(money ~ HR + hight + weight, data = batter)
reg2
##
## Call:
## lm(formula = money ~ HR + hight + weight, data = batter)
##
## Coefficients:
## (Intercept) HR hight weight
## 82680 296 -511 273
summary(reg2)
##
## Call:
## lm(formula = money ~ HR + hight + weight, data = batter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13497 -4340 -988 3777 30309
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 82680 46449 1.78 0.081 .
## HR 296 125 2.36 0.022 *
## hight -511 294 -1.74 0.089 .
## weight 273 134 2.04 0.047 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7680 on 48 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.218, Adjusted R-squared: 0.169
## F-statistic: 4.47 on 3 and 48 DF, p-value: 0.0076
しかしこれでは,もし単位が違ったら,大きさを過大・過小評価してしまいます。 そこで,データの標準化を考えます。
head(batter)
## money year age hight weight daritu shiai daseki dasuu anda HR datgen
## 1 13000 19 37 181 90 0.245 73 216 184 45 5 24
## 2 25000 1 36 185 101 0.243 143 604 478 116 26 94
## 3 NA NA NA NA NA 0.265 62 201 185 49 11 33
## 4 20000 5 32 188 102 0.333 134 558 483 161 41 136
## 5 14000 2 31 191 118 0.233 55 171 150 35 1 16
## 6 9300 2 35 175 88 0.319 144 623 518 165 4 55
## steal four dead K gida
## 1 0 27 0 42 1
## 2 4 105 15 164 0
## 3 0 10 2 45 0
## 4 1 62 9 118 0
## 5 0 15 5 52 0
## 6 40 85 7 87 8
batter.z <- scale(batter)
batter.z <- data.frame(batter.z)
head(batter.z)
## money year age hight weight daritu shiai daseki
## 1 -0.5324 1.306 0.8604 0.01485 0.13479 -0.44883 -0.7315 -0.9188
## 2 0.8910 -1.675 0.6249 0.78727 1.08666 -0.50147 1.0194 1.0699
## 3 NA NA NA NA NA 0.07758 -1.0067 -0.9957
## 4 0.2979 -1.013 -0.3170 1.36658 1.17320 1.86735 0.7943 0.8341
## 5 -0.4138 -1.510 -0.5525 1.94589 2.55774 -0.76467 -1.1818 -1.1494
## 6 -0.9713 -1.510 0.3894 -1.14377 -0.03827 1.49887 1.0444 1.1672
## dasuu anda HR datgen steal four dead K gida
## 1 -0.9555 -0.9385 -0.5232 -0.7096 -0.5578 -0.4492 -0.8973 -0.5943 -0.4825
## 2 0.7705 0.3928 1.6743 1.5811 -0.1628 2.5098 2.8090 2.9260 -0.7025
## 3 -0.9496 -0.8635 0.1046 -0.4151 -0.5578 -1.0942 -0.4031 -0.5077 -0.7025
## 4 0.7998 1.2365 3.2440 2.9556 -0.4591 0.8785 1.3265 1.5987 -0.7025
## 5 -1.1551 -1.1260 -0.9418 -0.9714 -0.5578 -0.9045 0.3381 -0.3058 -0.7025
## 6 1.0053 1.3115 -0.6279 0.3049 3.3921 1.7511 0.8323 0.7042 1.0576
summary(batter.z)
## money year age hight
## Min. :-1.054 Min. :-1.675 Min. :-2.201 Min. :-2.302
## 1st Qu.:-0.725 1st Qu.:-0.557 1st Qu.:-0.788 1st Qu.:-0.758
## Median :-0.177 Median : 0.147 Median :-0.199 Median :-0.178
## Mean : 0.000 Mean : 0.000 Mean : 0.000 Mean : 0.000
## 3rd Qu.: 0.298 3rd Qu.: 0.685 3rd Qu.: 0.860 3rd Qu.: 0.498
## Max. : 4.687 Max. : 2.300 Max. : 2.038 Max. : 2.911
## NA's :5 NA's :5 NA's :5 NA's :5
## weight daritu shiai daseki
## Min. :-1.855 Min. :-2.028 Min. :-2.332 Min. :-1.975
## 1st Qu.:-0.666 1st Qu.:-0.844 1st Qu.:-0.832 1st Qu.:-0.806
## Median :-0.082 Median : 0.104 Median : 0.144 Median : 0.147
## Mean : 0.000 Mean : 0.000 Mean : 0.000 Mean : 0.000
## 3rd Qu.: 0.481 3rd Qu.: 0.736 3rd Qu.: 0.969 3rd Qu.: 0.952
## Max. : 3.596 Max. : 1.867 Max. : 1.044 Max. : 1.347
## NA's :5
## dasuu anda HR datgen
## Min. :-1.977 Min. :-1.745 Min. :-1.046 Min. :-1.462
## 1st Qu.:-0.791 1st Qu.:-0.845 1st Qu.:-0.837 1st Qu.:-0.939
## Median : 0.160 Median :-0.132 Median :-0.419 Median :-0.186
## Mean : 0.000 Mean : 0.000 Mean : 0.000 Mean : 0.000
## 3rd Qu.: 0.947 3rd Qu.: 0.974 3rd Qu.: 0.628 3rd Qu.: 0.698
## Max. : 1.428 Max. : 1.593 Max. : 3.244 Max. : 2.956
##
## steal four dead K
## Min. :-0.558 Min. :-1.474 Min. :-0.897 Min. :-1.720
## 1st Qu.:-0.558 1st Qu.:-0.867 1st Qu.:-0.650 1st Qu.:-0.710
## Median :-0.459 Median :-0.222 Median :-0.403 Median :-0.248
## Mean : 0.000 Mean : 0.000 Mean : 0.000 Mean : 0.000
## 3rd Qu.: 0.035 3rd Qu.: 0.575 3rd Qu.: 0.338 3rd Qu.: 0.531
## Max. : 4.083 Max. : 2.510 Max. : 2.809 Max. : 2.926
##
## gida
## Min. :-0.703
## 1st Qu.:-0.703
## Median :-0.482
## Mean : 0.000
## 3rd Qu.: 0.398
## Max. : 3.478
##
ということで,あらためて。
reg3 <- lm(money ~ HR + hight + weight, data = batter.z)
reg3
##
## Call:
## lm(formula = money ~ HR + hight + weight, data = batter.z)
##
## Coefficients:
## (Intercept) HR hight weight
## -0.0156 0.3360 -0.3139 0.3748
summary(reg3)
##
## Call:
## lm(formula = money ~ HR + hight + weight, data = batter.z)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.601 -0.515 -0.117 0.448 3.595
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0156 0.1266 -0.12 0.903
## HR 0.3360 0.1421 2.36 0.022 *
## hight -0.3139 0.1808 -1.74 0.089 .
## weight 0.3748 0.1838 2.04 0.047 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.911 on 48 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.218, Adjusted R-squared: 0.169
## F-statistic: 4.47 on 3 and 48 DF, p-value: 0.0076
こうして得られる標準化された回帰係数のことを特に,標準偏回帰係数と言います。 身長や体重のデータはほとんど年俸に影響していなかったことが明らかです。
変数が増えていくと,どの変数とどの変数を入れて分析しようか迷うことがあります。そんな時は統計的な当てはまりの良さの基準から,自動的に変数を選択してくれる変数選択法を使いましょう。
少し乱暴ですが,今回のデータですべての変数を説明変数にしたモデルを作ります。 その上で,ステップワイズ法による変数選択を行います。
reg.all <- lm(money ~ ., data = batter.z)
summary(reg.all)
##
## Call:
## lm(formula = money ~ ., data = batter.z)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.597 -0.412 -0.186 0.374 2.189
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0280 0.1220 -0.23 0.820
## year -0.0262 0.2269 -0.12 0.909
## age 0.0787 0.2076 0.38 0.707
## hight -0.1909 0.2057 -0.93 0.360
## weight 0.3252 0.2363 1.38 0.177
## daritu -0.2035 0.3785 -0.54 0.594
## shiai 0.0636 0.6095 0.10 0.917
## daseki 4.0325 14.6744 0.27 0.785
## dasuu -2.8102 12.9760 -0.22 0.830
## anda -0.5087 1.8583 -0.27 0.786
## HR 0.5498 0.4673 1.18 0.247
## datgen -0.2993 0.8109 -0.37 0.714
## steal -0.0138 0.2207 -0.06 0.951
## four -0.0624 1.9425 -0.03 0.975
## dead 0.0867 0.3772 0.23 0.819
## K -0.6777 0.3147 -2.15 0.038 *
## gida -0.1532 0.3611 -0.42 0.674
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.864 on 35 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.487, Adjusted R-squared: 0.253
## F-statistic: 2.08 on 16 and 35 DF, p-value: 0.0349
result.step <- step(reg.all)
## Start: AIC=-1.76
## money ~ year + age + hight + weight + daritu + shiai + daseki +
## dasuu + anda + HR + datgen + steal + four + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - four 1 0.00 26.1 -3.76
## - steal 1 0.00 26.1 -3.75
## - shiai 1 0.01 26.1 -3.74
## - year 1 0.01 26.1 -3.74
## - dasuu 1 0.04 26.2 -3.69
## - dead 1 0.04 26.2 -3.68
## - anda 1 0.06 26.2 -3.65
## - daseki 1 0.06 26.2 -3.65
## - datgen 1 0.10 26.2 -3.56
## - age 1 0.11 26.2 -3.54
## - gida 1 0.13 26.3 -3.49
## - daritu 1 0.22 26.4 -3.33
## - hight 1 0.64 26.8 -2.49
## <none> 26.1 -1.76
## - HR 1 1.03 27.2 -1.74
## - weight 1 1.41 27.6 -1.02
## - K 1 3.46 29.6 2.71
##
## Step: AIC=-3.76
## money ~ year + age + hight + weight + daritu + shiai + daseki +
## dasuu + anda + HR + datgen + steal + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - steal 1 0.00 26.1 -5.75
## - shiai 1 0.01 26.1 -5.74
## - year 1 0.01 26.1 -5.74
## - anda 1 0.06 26.2 -5.65
## - datgen 1 0.11 26.2 -5.55
## - age 1 0.11 26.2 -5.54
## - dead 1 0.21 26.4 -5.33
## - daritu 1 0.22 26.4 -5.33
## - gida 1 0.56 26.7 -4.66
## - dasuu 1 0.66 26.8 -4.47
## - hight 1 0.70 26.8 -4.38
## <none> 26.1 -3.76
## - HR 1 1.20 27.3 -3.43
## - weight 1 1.56 27.7 -2.73
## - daseki 1 2.84 29.0 -0.39
## - K 1 3.47 29.6 0.73
##
## Step: AIC=-5.75
## money ~ year + age + hight + weight + daritu + shiai + daseki +
## dasuu + anda + HR + datgen + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - shiai 1 0.01 26.2 -7.73
## - year 1 0.01 26.2 -7.73
## - anda 1 0.10 26.2 -7.55
## - age 1 0.11 26.3 -7.53
## - datgen 1 0.12 26.3 -7.51
## - daritu 1 0.22 26.4 -7.31
## - dead 1 0.22 26.4 -7.31
## - gida 1 0.59 26.7 -6.59
## - hight 1 0.74 26.9 -6.29
## - dasuu 1 0.84 27.0 -6.11
## <none> 26.1 -5.75
## - HR 1 1.22 27.4 -5.38
## - weight 1 1.63 27.8 -4.60
## - daseki 1 3.35 29.5 -1.48
## - K 1 5.18 31.3 1.65
##
## Step: AIC=-7.73
## money ~ year + age + hight + weight + daritu + daseki + dasuu +
## anda + HR + datgen + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - year 1 0.01 26.2 -9.71
## - anda 1 0.11 26.3 -9.52
## - datgen 1 0.12 26.3 -9.50
## - age 1 0.16 26.3 -9.42
## - daritu 1 0.21 26.4 -9.31
## - dead 1 0.21 26.4 -9.30
## - gida 1 0.58 26.7 -8.59
## - hight 1 0.75 26.9 -8.26
## - dasuu 1 0.83 27.0 -8.11
## <none> 26.2 -7.73
## - HR 1 1.22 27.4 -7.35
## - weight 1 1.62 27.8 -6.60
## - daseki 1 3.83 30.0 -2.63
## - K 1 5.18 31.3 -0.33
##
## Step: AIC=-9.71
## money ~ age + hight + weight + daritu + daseki + dasuu + anda +
## HR + datgen + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - anda 1 0.11 26.3 -11.50
## - datgen 1 0.12 26.3 -11.48
## - age 1 0.19 26.4 -11.35
## - daritu 1 0.21 26.4 -11.31
## - dead 1 0.22 26.4 -11.28
## - gida 1 0.58 26.7 -10.58
## - hight 1 0.76 26.9 -10.23
## - dasuu 1 0.83 27.0 -10.09
## <none> 26.2 -9.71
## - HR 1 1.22 27.4 -9.35
## - weight 1 1.98 28.1 -7.92
## - daseki 1 3.83 30.0 -4.61
## - K 1 5.75 31.9 -1.38
##
## Step: AIC=-11.5
## money ~ age + hight + weight + daritu + daseki + dasuu + HR +
## datgen + dead + K + gida
##
## Df Sum of Sq RSS AIC
## - dead 1 0.16 26.4 -13.18
## - datgen 1 0.23 26.5 -13.04
## - age 1 0.34 26.6 -12.83
## - gida 1 0.50 26.8 -12.52
## - hight 1 0.72 27.0 -12.10
## <none> 26.3 -11.50
## - HR 1 1.55 27.8 -10.52
## - daritu 1 1.67 27.9 -10.30
## - weight 1 1.87 28.1 -9.92
## - dasuu 1 2.81 29.1 -8.22
## - daseki 1 4.26 30.5 -5.68
## - K 1 6.12 32.4 -2.61
##
## Step: AIC=-13.18
## money ~ age + hight + weight + daritu + daseki + dasuu + HR +
## datgen + K + gida
##
## Df Sum of Sq RSS AIC
## - datgen 1 0.20 26.6 -14.79
## - age 1 0.36 26.8 -14.47
## - gida 1 0.43 26.9 -14.35
## - hight 1 0.80 27.2 -13.63
## <none> 26.4 -13.18
## - daritu 1 1.60 28.0 -12.13
## - HR 1 1.64 28.1 -12.06
## - weight 1 1.99 28.4 -11.41
## - dasuu 1 3.95 30.4 -7.94
## - daseki 1 5.73 32.2 -4.97
## - K 1 5.99 32.4 -4.55
##
## Step: AIC=-14.79
## money ~ age + hight + weight + daritu + daseki + dasuu + HR +
## K + gida
##
## Df Sum of Sq RSS AIC
## - age 1 0.28 26.9 -16.24
## - gida 1 0.38 27.0 -16.06
## - hight 1 0.79 27.4 -15.28
## <none> 26.6 -14.79
## - weight 1 1.79 28.4 -13.41
## - daritu 1 2.46 29.1 -12.19
## - HR 1 2.63 29.3 -11.89
## - dasuu 1 4.04 30.7 -9.44
## - daseki 1 5.55 32.2 -6.94
## - K 1 6.19 32.8 -5.91
##
## Step: AIC=-16.24
## money ~ hight + weight + daritu + daseki + dasuu + HR + K + gida
##
## Df Sum of Sq RSS AIC
## - gida 1 0.53 27.5 -17.22
## - hight 1 1.03 28.0 -16.28
## <none> 26.9 -16.24
## - weight 1 1.89 28.8 -14.71
## - HR 1 2.75 29.7 -13.19
## - daritu 1 2.80 29.7 -13.08
## - dasuu 1 4.60 31.5 -10.03
## - daseki 1 6.16 33.1 -7.52
## - K 1 6.70 33.6 -6.67
##
## Step: AIC=-17.22
## money ~ hight + weight + daritu + daseki + dasuu + HR + K
##
## Df Sum of Sq RSS AIC
## - hight 1 0.93 28.4 -17.48
## <none> 27.5 -17.22
## - weight 1 2.48 29.9 -14.72
## - daritu 1 3.19 30.6 -13.50
## - HR 1 4.11 31.6 -11.97
## - dasuu 1 4.39 31.8 -11.51
## - daseki 1 5.88 33.3 -9.13
## - K 1 6.99 34.4 -7.42
##
## Step: AIC=-17.48
## money ~ weight + daritu + daseki + dasuu + HR + K
##
## Df Sum of Sq RSS AIC
## <none> 28.4 -17.48
## - weight 1 1.55 29.9 -16.72
## - daritu 1 2.70 31.1 -14.75
## - HR 1 3.80 32.2 -12.96
## - dasuu 1 5.48 33.9 -10.30
## - daseki 1 7.08 35.5 -7.91
## - K 1 8.15 36.5 -6.36
最終的に残ったモデルがこちら。
summary(result.step)
##
## Call:
## lm(formula = money ~ weight + daritu + daseki + dasuu + HR +
## K, data = batter.z)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.667 -0.456 -0.152 0.431 2.380
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0268 0.1112 -0.24 0.8103
## weight 0.2179 0.1390 1.57 0.1239
## daritu -0.3381 0.1633 -2.07 0.0442 *
## daseki 4.2068 1.2559 3.35 0.0016 **
## dasuu -3.5720 1.2118 -2.95 0.0051 **
## HR 0.4755 0.1938 2.45 0.0181 *
## K -0.7133 0.1984 -3.59 0.0008 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.794 on 45 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.443, Adjusted R-squared: 0.369
## F-statistic: 5.98 on 6 and 45 DF, p-value: 0.000118
これでスッキリ説明できました,と思いきや,ひとつ問題があります。 重回帰分析の場合は,独立変数同士が無相関でなければなりません。 独立変数同士が相関すると,回帰係数が正確な値として推定されないからです。 これを検証するのがVIFと呼ばれる指標で,carパッケージのvif関数を使います。
library(car)
vif(result.step)
## weight daritu daseki dasuu HR K
## 1.561 2.179 114.116 106.515 3.176 3.101
この数値が2.0より小さいと問題なし,10を超えるとよろしくないと言われています。 今回は打席(daseki)と安打(dasuu)が10をはるかに超えるインフレをおこしていますので,これらの変数を除外して正しく求めることにします。
reg.model <- lm(money ~ weight + HR + K, data = batter)
vif(reg.model)
## weight HR K
## 1.268 2.153 1.823
result.step.last <- step(reg.model)
## Start: AIC=932.7
## money ~ weight + HR + K
##
## Df Sum of Sq RSS AIC
## - weight 1 6.44e+07 2.81e+09 932
## <none> 2.75e+09 933
## - K 1 2.64e+08 3.01e+09 935
## - HR 1 5.21e+08 3.27e+09 940
##
## Step: AIC=931.9
## money ~ HR + K
##
## Df Sum of Sq RSS AIC
## <none> 2.81e+09 932
## - K 1 2.88e+08 3.10e+09 935
## - HR 1 8.06e+08 3.62e+09 943
summary(result.step.last)
##
## Call:
## lm(formula = money ~ HR + K, data = batter)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12588 -4986 -1574 4016 27121
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 17876.2 2301.0 7.77 4.3e-10 ***
## HR 547.4 146.1 3.75 0.00047 ***
## K -93.5 41.7 -2.24 0.02969 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7580 on 49 degrees of freedom
## (5 observations deleted due to missingness)
## Multiple R-squared: 0.224, Adjusted R-squared: 0.193
## F-statistic: 7.08 on 2 and 49 DF, p-value: 0.00198
最後には非標準化係数で示しましたが,これを見ると年俸は本塁打一本ごとに547万円上がり,三振一回で93万円下がることがわかりますね。
回帰分析は色々なシーンで使えますので,試してみてください。