分析結果の解釈については、書籍をご参照ください。以下はWindows10、R version 4.2.1で実行しています。
データを読み込むにあたって、作業場所の指定とそこにデータが置いてあることが前提になります。 R本体を操作している場合は、「ファイル」→「ディレクトリの変更」でデータの置いてある場所を指定するのが簡単です。 RStudioを操作している場合は、例えばデスクトップの「R」という名前のフォルダにデータがあるとすると
setwd("C:/Users/ユーザー名/Desktop/R")
を最初に実行するのがよいでしょう。ユーザー名は各自異なるので注意です。
使用するデータを読み込み、表示します。なお、R version 4.1以前で読み込む際には
data1 <- read.csv("ファイル名.csv", fileEncoding = "UTF-8-BOM")
のように、エンコードのオプションを指定する必要があります。version 4.2以降では必要ありませんので、以下ではオプションを指定していません。
data1 <- read.csv("ch7.csv")
表7-1 賃金の属性別集計データ
data1
## agecl age exp sal bon educ eduy
## 1 -19 18.5 1.4 214.8 68.0 中学 9
## 2 20-24 22.7 2.6 224.8 164.4 中学 9
## 3 25-29 27.5 4.3 250.1 332.4 中学 9
## 4 30-34 32.5 5.7 270.1 397.9 中学 9
## 5 35-39 37.5 8.0 297.3 475.8 中学 9
## 6 40-44 42.7 10.7 313.7 548.0 中学 9
## 7 45-49 47.5 12.9 322.5 569.7 中学 9
## 8 50-54 52.3 15.2 319.0 595.5 中学 9
## 9 55-59 57.5 18.3 307.5 618.6 中学 9
## 10 -19 19.1 0.9 190.9 132.6 高校 12
## 11 20-24 22.5 3.1 220.3 468.2 高校 12
## 12 25-29 27.5 5.4 248.1 536.7 高校 12
## 13 30-34 32.5 7.7 271.4 623.3 高校 12
## 14 35-39 37.6 10.0 294.6 708.9 高校 12
## 15 40-44 42.6 12.7 316.7 795.0 高校 12
## 16 45-49 47.6 15.6 331.8 889.2 高校 12
## 17 50-54 52.4 17.3 334.0 881.1 高校 12
## 18 55-59 57.4 19.9 335.3 917.4 高校 12
## 19 20-24 22.8 1.8 230.9 332.6 専門 14
## 20 25-29 27.4 4.1 256.4 515.6 専門 14
## 21 30-34 32.7 6.6 283.0 641.8 専門 14
## 22 35-39 37.5 8.9 304.4 740.2 専門 14
## 23 40-44 42.6 11.1 323.6 824.7 専門 14
## 24 45-49 47.4 14.3 345.2 971.1 専門 14
## 25 50-54 52.2 15.1 349.0 960.2 専門 14
## 26 55-59 57.3 16.9 351.2 975.9 専門 14
## 27 20-24 22.7 2.0 219.5 436.9 短大 14
## 28 25-29 27.4 4.7 251.1 699.0 短大 14
## 29 30-34 32.6 7.5 273.0 777.4 短大 14
## 30 35-39 37.6 9.9 296.5 875.9 短大 14
## 31 40-44 42.6 12.2 311.6 946.5 短大 14
## 32 45-49 47.5 14.3 326.1 1053.7 短大 14
## 33 50-54 52.3 17.1 350.2 1187.6 短大 14
## 34 55-59 57.4 18.8 344.8 1150.0 短大 14
## 35 20-24 23.6 1.3 244.6 349.0 大学 16
## 36 25-29 27.5 3.7 285.4 799.2 大学 16
## 37 30-34 32.5 6.7 330.9 983.5 大学 16
## 38 35-39 37.5 9.8 376.3 1206.8 大学 16
## 39 40-44 42.5 12.7 416.8 1407.1 大学 16
## 40 45-49 47.5 16.3 458.1 1639.0 大学 16
## 41 50-54 52.4 20.5 521.0 1986.1 大学 16
## 42 55-59 57.4 22.8 511.1 1864.4 大学 16
## 43 20-24 24.5 0.6 256.5 68.1 大学院 18
## 44 25-29 27.6 2.7 316.0 953.5 大学院 18
## 45 30-34 32.4 5.8 378.1 1325.8 大学院 18
## 46 35-39 37.4 9.2 463.6 1774.2 大学院 18
## 47 40-44 42.4 12.2 518.9 2152.6 大学院 18
## 48 45-49 47.4 15.4 571.6 2391.9 大学院 18
## 49 50-54 52.4 18.7 636.2 2838.0 大学院 18
## 50 55-59 57.3 20.1 701.8 2926.3 大学院 18
年齢階級(agecl)、年齢(age)、勤続年数(exp)、月給(sal)、ボーナス(bon)、学歴(edu)、修学年数(eduy)となっています。
本章で使用するパッケージを読み込みますが、パッケージはインストールしておく必要があります。 以下のようにコマンドでインストールするか、RやRStudioからクリックでインストールすることもできます。
install.packages(“stargazer”, dependencies = TRUE)
これまで、パッケージdummiesがダミー変数を作成する際に有用でしたが、2022年11月5日現在、公開されていないため、ここでは素朴な方法でダミー変数を作成します。 パッケージdummiesでダミー変数を作成する方法は、最後に付録として紹介します。
パッケージの機能が使えるように読み込みます。
library(ggplot2)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
年収(ainc)を作成します。
data1$ainc <- (data1$sal*12+data1$bon)/10
学歴(educ)から高校以外の学歴ダミーを作成します。 1、0で示すためにas.integerを使います。
data1$jhigh <- as.integer(data1$educ=="中学")
data1$voca <- as.integer(data1$educ=="専門")
data1$jcol <- as.integer(data1$educ=="短大")
data1$univ <- as.integer(data1$educ=="大学")
data1$grad <- as.integer(data1$educ=="大学院")
表7-2 年収と学歴ダミーを追加したデータセット
data1
## agecl age exp sal bon educ eduy ainc jhigh voca jcol univ grad
## 1 -19 18.5 1.4 214.8 68.0 中学 9 264.56 1 0 0 0 0
## 2 20-24 22.7 2.6 224.8 164.4 中学 9 286.20 1 0 0 0 0
## 3 25-29 27.5 4.3 250.1 332.4 中学 9 333.36 1 0 0 0 0
## 4 30-34 32.5 5.7 270.1 397.9 中学 9 363.91 1 0 0 0 0
## 5 35-39 37.5 8.0 297.3 475.8 中学 9 404.34 1 0 0 0 0
## 6 40-44 42.7 10.7 313.7 548.0 中学 9 431.24 1 0 0 0 0
## 7 45-49 47.5 12.9 322.5 569.7 中学 9 443.97 1 0 0 0 0
## 8 50-54 52.3 15.2 319.0 595.5 中学 9 442.35 1 0 0 0 0
## 9 55-59 57.5 18.3 307.5 618.6 中学 9 430.86 1 0 0 0 0
## 10 -19 19.1 0.9 190.9 132.6 高校 12 242.34 0 0 0 0 0
## 11 20-24 22.5 3.1 220.3 468.2 高校 12 311.18 0 0 0 0 0
## 12 25-29 27.5 5.4 248.1 536.7 高校 12 351.39 0 0 0 0 0
## 13 30-34 32.5 7.7 271.4 623.3 高校 12 388.01 0 0 0 0 0
## 14 35-39 37.6 10.0 294.6 708.9 高校 12 424.41 0 0 0 0 0
## 15 40-44 42.6 12.7 316.7 795.0 高校 12 459.54 0 0 0 0 0
## 16 45-49 47.6 15.6 331.8 889.2 高校 12 487.08 0 0 0 0 0
## 17 50-54 52.4 17.3 334.0 881.1 高校 12 488.91 0 0 0 0 0
## 18 55-59 57.4 19.9 335.3 917.4 高校 12 494.10 0 0 0 0 0
## 19 20-24 22.8 1.8 230.9 332.6 専門 14 310.34 0 1 0 0 0
## 20 25-29 27.4 4.1 256.4 515.6 専門 14 359.24 0 1 0 0 0
## 21 30-34 32.7 6.6 283.0 641.8 専門 14 403.78 0 1 0 0 0
## 22 35-39 37.5 8.9 304.4 740.2 専門 14 439.30 0 1 0 0 0
## 23 40-44 42.6 11.1 323.6 824.7 専門 14 470.79 0 1 0 0 0
## 24 45-49 47.4 14.3 345.2 971.1 専門 14 511.35 0 1 0 0 0
## 25 50-54 52.2 15.1 349.0 960.2 専門 14 514.82 0 1 0 0 0
## 26 55-59 57.3 16.9 351.2 975.9 専門 14 519.03 0 1 0 0 0
## 27 20-24 22.7 2.0 219.5 436.9 短大 14 307.09 0 0 1 0 0
## 28 25-29 27.4 4.7 251.1 699.0 短大 14 371.22 0 0 1 0 0
## 29 30-34 32.6 7.5 273.0 777.4 短大 14 405.34 0 0 1 0 0
## 30 35-39 37.6 9.9 296.5 875.9 短大 14 443.39 0 0 1 0 0
## 31 40-44 42.6 12.2 311.6 946.5 短大 14 468.57 0 0 1 0 0
## 32 45-49 47.5 14.3 326.1 1053.7 短大 14 496.69 0 0 1 0 0
## 33 50-54 52.3 17.1 350.2 1187.6 短大 14 539.00 0 0 1 0 0
## 34 55-59 57.4 18.8 344.8 1150.0 短大 14 528.76 0 0 1 0 0
## 35 20-24 23.6 1.3 244.6 349.0 大学 16 328.42 0 0 0 1 0
## 36 25-29 27.5 3.7 285.4 799.2 大学 16 422.40 0 0 0 1 0
## 37 30-34 32.5 6.7 330.9 983.5 大学 16 495.43 0 0 0 1 0
## 38 35-39 37.5 9.8 376.3 1206.8 大学 16 572.24 0 0 0 1 0
## 39 40-44 42.5 12.7 416.8 1407.1 大学 16 640.87 0 0 0 1 0
## 40 45-49 47.5 16.3 458.1 1639.0 大学 16 713.62 0 0 0 1 0
## 41 50-54 52.4 20.5 521.0 1986.1 大学 16 823.81 0 0 0 1 0
## 42 55-59 57.4 22.8 511.1 1864.4 大学 16 799.76 0 0 0 1 0
## 43 20-24 24.5 0.6 256.5 68.1 大学院 18 314.61 0 0 0 0 1
## 44 25-29 27.6 2.7 316.0 953.5 大学院 18 474.55 0 0 0 0 1
## 45 30-34 32.4 5.8 378.1 1325.8 大学院 18 586.30 0 0 0 0 1
## 46 35-39 37.4 9.2 463.6 1774.2 大学院 18 733.74 0 0 0 0 1
## 47 40-44 42.4 12.2 518.9 2152.6 大学院 18 837.94 0 0 0 0 1
## 48 45-49 47.4 15.4 571.6 2391.9 大学院 18 925.11 0 0 0 0 1
## 49 50-54 52.4 18.7 636.2 2838.0 大学院 18 1047.24 0 0 0 0 1
## 50 55-59 57.3 20.1 701.8 2926.3 大学院 18 1134.79 0 0 0 0 1
図7-2 勤続年数と年収の散布図
ggplot(data1,aes(x=exp,y=ainc))+geom_point()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()
図7-3 学歴で区別した勤続年数と年収の散布図
ggplot(data1,aes(x=exp,y=ainc, shape=educ))+geom_point()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()+labs(shape="学歴")+scale_shape_discrete(limits=c("中学","高校","専門","短大","大学","大学院"))
(7.1)式の推定
reg1 <-lm(ainc~exp+eduy, data=data1)
summary(reg1)
##
## Call:
## lm(formula = ainc ~ exp + eduy, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -150.29 -55.52 -26.63 35.97 288.01
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -196.982 67.811 -2.905 0.00558 **
## exp 19.583 2.217 8.832 1.5e-11 ***
## eduy 36.118 4.745 7.612 9.7e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 96.22 on 47 degrees of freedom
## Multiple R-squared: 0.765, Adjusted R-squared: 0.755
## F-statistic: 76.52 on 2 and 47 DF, p-value: 1.652e-15
図7-4 就学年数を使った回帰による年収の予測値
data1$painc1 <- predict(reg1)
ggplot(data1,aes(x=exp,y=painc1, shape=educ))+geom_point()+geom_line()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()+labs(shape="学歴")+scale_shape_discrete(limits=c("中学","高校","専門","短大","大学","大学院"))
(7.2)式の推定
reg2 <-lm(ainc~exp+jhigh+voca+jcol+univ+grad, data=data1)
summary(reg2)
##
## Call:
## lm(formula = ainc ~ exp + jhigh + voca + jcol + univ + grad,
## data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -240.98 -24.58 15.82 35.39 186.38
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 197.949 29.349 6.745 3.02e-08 ***
## exp 20.145 1.658 12.148 1.71e-15 ***
## jhigh 2.865 33.862 0.085 0.933
## voca 44.705 34.817 1.284 0.206
## jcol 29.242 34.820 0.840 0.406
## univ 165.421 34.891 4.741 2.35e-05 ***
## grad 345.552 34.813 9.926 1.08e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 71.64 on 43 degrees of freedom
## Multiple R-squared: 0.8808, Adjusted R-squared: 0.8642
## F-statistic: 52.97 on 6 and 43 DF, p-value: < 2.2e-16
図7-6 学歴ダミーを使った推定による予測値
data1$painc2 <- predict(reg2)
ggplot(data1,aes(x=exp,y=painc2, shape=educ))+geom_point()+geom_line()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()+labs(shape="学歴")+scale_shape_discrete(limits=c("中学","高校","専門","短大","大学","大学院"))
(7.3)式の推定
reg3 <-lm(ainc~exp*jhigh+exp*voca+exp*jcol+exp*univ+exp*grad, data=data1)
summary(reg3)
##
## Call:
## lm(formula = ainc ~ exp * jhigh + exp * voca + exp * jcol + exp *
## univ + exp * grad, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -52.726 -18.806 7.298 16.190 34.835
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 271.0066 16.8302 16.102 < 2e-16 ***
## exp 13.0443 1.4010 9.311 2.39e-11 ***
## jhigh 13.7208 23.4371 0.585 0.56172
## voca 31.1783 26.1738 1.191 0.24096
## jcol 29.1465 26.3305 1.107 0.27527
## univ 63.6186 24.2616 2.622 0.01250 *
## grad 72.9331 23.9705 3.043 0.00424 **
## exp:jhigh -2.4470 2.1047 -1.163 0.25223
## exp:voca 1.0569 2.2867 0.462 0.64659
## exp:jcol 0.3527 2.1780 0.162 0.87223
## exp:univ 9.5522 1.8885 5.058 1.11e-05 ***
## exp:grad 25.9494 1.9505 13.304 7.06e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.06 on 38 degrees of freedom
## Multiple R-squared: 0.9861, Adjusted R-squared: 0.982
## F-statistic: 244.4 on 11 and 38 DF, p-value: < 2.2e-16
図7-8 学歴を定数項ダミーと係数ダミーでとらえた推定からの予測値
data1$painc3 <- predict(reg3)
ggplot(data1,aes(x=exp,y=painc3, shape=educ))+geom_point()+geom_line()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()+labs(shape="学歴")+scale_shape_discrete(limits=c("中学","高校","専門","短大","大学","大学院"))
(7.4)式の推定
reg4 <-lm(ainc~exp+exp:jhigh+exp:voca+exp:jcol+exp:univ+exp:grad, data=data1)
summary(reg4)
##
## Call:
## lm(formula = ainc ~ exp + exp:jhigh + exp:voca + exp:jcol + exp:univ +
## exp:grad, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -72.99 -19.17 4.38 17.93 56.55
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 305.8265 7.9760 38.343 < 2e-16 ***
## exp 10.5618 0.9762 10.819 7.50e-14 ***
## exp:jhigh -1.6841 1.2161 -1.385 0.1732
## exp:voca 3.2478 1.2106 2.683 0.0103 *
## exp:jcol 2.4191 1.1503 2.103 0.0414 *
## exp:univ 13.8079 1.0828 12.752 3.31e-16 ***
## exp:grad 30.9825 1.1300 27.418 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.6 on 43 degrees of freedom
## Multiple R-squared: 0.981, Adjusted R-squared: 0.9784
## F-statistic: 370.3 on 6 and 43 DF, p-value: < 2.2e-16
図7-9 学歴を係数ダミーのみでとらえた推定からの予測値
data1$painc4 <- predict(reg4)
ggplot(data1,aes(x=exp,y=painc4, shape=educ))+geom_point()+geom_line()+xlab("勤続年数")+ylab("年収(万円)")+theme_classic()+labs(shape="学歴")+scale_shape_discrete(limits=c("中学","高校","専門","短大","大学","大学院"))
表7-3 推定結果のまとめ
stargazer(reg1,reg2,reg3,reg4,type="text",digits=3,star.cutoffs=c(0.1,0.05,0.01),keep.stat = c("n","rsq","adj.rsq"))
##
## =========================================================
## Dependent variable:
## --------------------------------------------
## ainc
## (1) (2) (3) (4)
## ---------------------------------------------------------
## exp 19.583*** 20.145*** 13.044*** 10.562***
## (2.217) (1.658) (1.401) (0.976)
##
## eduy 36.118***
## (4.745)
##
## jhigh 2.865 13.721
## (33.862) (23.437)
##
## voca 44.705 31.178
## (34.817) (26.174)
##
## jcol 29.242 29.146
## (34.820) (26.330)
##
## univ 165.421*** 63.619**
## (34.891) (24.262)
##
## grad 345.552*** 72.933***
## (34.813) (23.970)
##
## exp:jhigh -2.447 -1.684
## (2.105) (1.216)
##
## exp:voca 1.057 3.248**
## (2.287) (1.211)
##
## exp:jcol 0.353 2.419**
## (2.178) (1.150)
##
## exp:univ 9.552*** 13.808***
## (1.888) (1.083)
##
## exp:grad 25.949*** 30.983***
## (1.950) (1.130)
##
## Constant -196.982*** 197.949*** 271.007*** 305.827***
## (67.811) (29.349) (16.830) (7.976)
##
## ---------------------------------------------------------
## Observations 50 50 50 50
## R2 0.765 0.881 0.986 0.981
## Adjusted R2 0.755 0.864 0.982 0.978
## =========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
付録
2022年11月5日時点でパッケージdummiesが公開されていませんが、持っている場合は以下のように実行できます。
library(dummies)
data1$edu <- as.factor(data1$educ)
data1 <- dummy.data.frame(data1, names = c("edu") , sep = ".", all = TRUE)