分析結果の解釈については、書籍をご参照ください。以下は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("ch6.csv")
data1
## pref her hinc univ stu popd rcpi
## 1 北海道 43.3 525.9 0.69 12.32 240.5 100.3
## 2 青森 43.6 433.3 0.76 12.09 405.1 99.5
## 3 岩手 44.2 500.2 0.39 11.44 344.5 99.6
## 4 宮城 49.5 395.8 0.60 13.35 739.8 98.4
## 5 秋田 44.6 454.7 0.68 11.71 319.3 99.0
## 6 山形 44.8 555.6 0.53 12.10 389.6 101.4
## 7 福島 45.7 631.5 0.42 12.57 453.9 100.7
## 8 茨城 50.5 592.7 0.31 13.84 733.9 98.4
## 9 栃木 52.0 567.2 0.46 14.51 661.9 99.5
## 10 群馬 52.6 489.7 0.66 13.81 865.6 97.2
## 11 埼玉 56.9 601.5 0.41 15.90 2811.4 100.9
## 12 千葉 56.0 557.3 0.43 15.82 1750.7 99.8
## 13 東京 66.5 560.6 1.01 16.47 9528.5 102.1
## 14 神奈川 61.5 513.9 0.33 16.41 6205.8 102.5
## 15 新潟 46.2 512.8 0.78 13.45 508.1 99.5
## 16 富山 52.0 629.6 0.47 12.42 578.6 98.9
## 17 石川 54.7 596.3 1.04 13.12 829.1 101.2
## 18 福井 56.0 547.0 0.64 13.46 730.3 100.2
## 19 山梨 56.3 552.1 0.84 13.15 874.8 99.1
## 20 長野 48.9 558.6 0.43 13.13 650.7 98.0
## 21 岐阜 55.1 541.1 0.59 13.87 918.9 97.7
## 22 静岡 53.0 547.9 0.38 14.48 1345.8 98.5
## 23 愛知 58.7 550.7 0.67 16.11 2504.6 98.7
## 24 三重 50.5 490.9 0.39 13.52 881.8 99.0
## 25 滋賀 55.0 564.3 0.57 13.86 1080.8 100.5
## 26 京都 66.4 495.3 1.30 13.66 2223.8 101.0
## 27 大阪 60.5 490.7 0.62 15.71 6643.3 100.4
## 28 兵庫 60.6 415.5 0.69 14.05 1988.8 101.1
## 29 奈良 58.9 557.1 0.81 14.12 1594.7 97.7
## 30 和歌山 49.5 533.2 0.31 12.57 864.1 100.7
## 31 鳥取 43.5 495.7 0.52 11.42 636.6 99.3
## 32 島根 47.0 555.8 0.29 10.51 534.6 100.8
## 33 岡山 50.5 511.8 0.88 13.60 866.0 99.0
## 34 広島 59.9 532.5 0.70 13.72 1230.7 99.8
## 35 山口 42.7 576.4 0.71 11.90 823.0 99.8
## 36 徳島 51.7 519.5 0.53 11.68 748.1 99.4
## 37 香川 50.6 609.7 0.41 12.24 970.9 99.2
## 38 愛媛 52.2 490.8 0.36 12.60 827.9 99.2
## 39 高知 47.4 515.2 0.41 9.48 626.1 100.1
## 40 福岡 54.4 502.7 0.67 15.37 1847.4 98.6
## 41 佐賀 43.0 555.8 0.24 11.94 623.6 98.2
## 42 長崎 44.6 449.2 0.73 12.27 821.6 100.6
## 43 熊本 46.1 490.7 0.50 12.71 638.8 99.2
## 44 大分 46.4 535.4 0.43 12.12 648.4 98.6
## 45 宮崎 45.1 449.1 0.63 12.25 596.8 97.6
## 46 鹿児島 42.7 545.1 0.36 10.91 497.5 97.4
## 47 沖縄 39.2 427.6 0.56 12.91 1226.2 99.5
都道府県名(pref)、進学率(her)、世帯収入(hinc)、大学数(univ)、生徒数(stu)、人口密度(popd)、消費者物価地域差指数(rcpi)となっています。
本章で使用するパッケージを読み込みますが、パッケージはインストールしておく必要があります。 以下のようにコマンドでインストールするか、RやRStudioからクリックでインストールすることもできます。
install.packages(“stargazer”, dependencies = TRUE)
パッケージの機能が使えるように読み込みます。
library(psych)
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
実質世帯収入(rhinc)、人口密度の対数(lpopd)、1万円単位にした実質世帯収入(rhinc10)を作成します。
data1$rhinc <- round(data1$hinc*100/data1$rcpi,1)
data1$lpopd <- round(log(data1$popd),2)
data1$rhinc10 <- data1$rhinc/10
記述統計の計算に使用するために、必要な変数だけでデータフレーム(data2)をつくります。
attach(data1)
data2 <- data.frame(her, rhinc, univ, stu, lpopd)
表6-1 記述統計
describe(data2, fast=TRUE)
## vars n mean sd min max range se
## her 1 47 51.09 6.59 39.20 66.50 27.30 0.96
## rhinc 2 47 528.60 53.97 402.20 636.60 234.40 7.87
## univ 3 47 0.58 0.22 0.24 1.30 1.06 0.03
## stu 4 47 13.21 1.56 9.48 16.47 6.99 0.23
## lpopd 5 47 6.84 0.76 5.48 9.16 3.68 0.11
記述統計を出すために、以下のようにsummary関数を使った場合は標準偏差が出ないので、sd関数も使う必要があります。
summary(data2)
## her rhinc univ stu
## Min. :39.20 Min. :402.2 Min. :0.2400 Min. : 9.48
## 1st Qu.:45.40 1st Qu.:497.6 1st Qu.:0.4100 1st Qu.:12.18
## Median :50.50 Median :533.6 Median :0.5600 Median :13.13
## Mean :51.09 Mean :528.6 Mean :0.5774 Mean :13.21
## 3rd Qu.:55.55 3rd Qu.:560.6 3rd Qu.:0.6900 3rd Qu.:13.87
## Max. :66.50 Max. :636.6 Max. :1.3000 Max. :16.47
## lpopd
## Min. :5.480
## 1st Qu.:6.440
## Median :6.710
## Mean :6.835
## 3rd Qu.:7.115
## Max. :9.160
sd(data2$her)
## [1] 6.593639
基本の回帰モデル(6.1)式
reg1 <- lm(her~rhinc+univ+stu, data=data1)
summary(reg1)
##
## Call:
## lm(formula = her ~ rhinc + univ + stu, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.2216 -2.3877 -0.6028 2.5130 8.4340
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09741 8.00144 0.012 0.99034
## rhinc 0.01704 0.01188 1.434 0.15877
## univ 8.67383 3.03392 2.859 0.00653 **
## stu 2.79971 0.41204 6.795 2.55e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.202 on 43 degrees of freedom
## Multiple R-squared: 0.6204, Adjusted R-squared: 0.5939
## F-statistic: 23.42 on 3 and 43 DF, p-value: 3.84e-09
実質世帯収入を1万円単位にした場合
reg2 <- lm(her~rhinc10+univ+stu, data=data1)
summary(reg2)
##
## Call:
## lm(formula = her ~ rhinc10 + univ + stu, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.2216 -2.3877 -0.6028 2.5130 8.4340
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09741 8.00144 0.012 0.99034
## rhinc10 0.17041 0.11883 1.434 0.15877
## univ 8.67383 3.03392 2.859 0.00653 **
## stu 2.79971 0.41204 6.795 2.55e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.202 on 43 degrees of freedom
## Multiple R-squared: 0.6204, Adjusted R-squared: 0.5939
## F-statistic: 23.42 on 3 and 43 DF, p-value: 3.84e-09
実質世帯収入の2次項を作成し、表6-2をつくるため、使用する変数だけでデータフレーム(data3)をつくります。
data1$rhinc2 <- data1$rhinc^2
attach(data1)
## 以下のオブジェクトは data1 (pos = 3) からマスクされています:
##
## her, hinc, lpopd, popd, pref, rcpi, rhinc, rhinc10, stu, univ
data3 <- data.frame(her, rhinc, rhinc2, univ, stu)
表6-2 実質世帯収入を2乗した変数の追加
head(data3)
## her rhinc rhinc2 univ stu
## 1 43.3 524.3 274890.5 0.69 12.32
## 2 43.6 435.5 189660.2 0.76 12.09
## 3 44.2 502.2 252204.8 0.39 11.44
## 4 49.5 402.2 161764.8 0.60 13.35
## 5 44.6 459.3 210956.5 0.68 11.71
## 6 44.8 547.9 300194.4 0.53 12.10
実質世帯収入の2次項(rhinc2)を使った回帰モデル(6.2)式
reg3 <- lm(her~rhinc+rhinc2+univ+stu, data=data1)
summary(reg3)
##
## Call:
## lm(formula = her ~ rhinc + rhinc2 + univ + stu, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.6739 -2.5038 -0.7806 2.5165 9.1531
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.920e+01 4.443e+01 -0.657 0.51458
## rhinc 1.319e-01 1.717e-01 0.768 0.44665
## rhinc2 -1.107e-04 1.651e-04 -0.671 0.50615
## univ 8.593e+00 3.056e+00 2.812 0.00746 **
## stu 2.791e+00 4.149e-01 6.728 3.57e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.229 on 42 degrees of freedom
## Multiple R-squared: 0.6244, Adjusted R-squared: 0.5886
## F-statistic: 17.46 on 4 and 42 DF, p-value: 1.655e-08
対数化した実質世帯収入(lrhinc)を使った回帰モデル(6.3)式
data1$lrhinc <- log(data1$rhinc)
reg3a <- lm(her~lrhinc+univ+stu, data=data1)
summary(reg3a)
##
## Call:
## lm(formula = her ~ lrhinc + univ + stu, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.095 -2.410 -0.637 2.480 8.391
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -47.1372 38.1492 -1.236 0.22331
## lrhinc 8.9818 6.0786 1.478 0.14680
## univ 8.6888 3.0270 2.870 0.00634 **
## stu 2.7970 0.4115 6.797 2.53e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.196 on 43 degrees of freedom
## Multiple R-squared: 0.6214, Adjusted R-squared: 0.595
## F-statistic: 23.53 on 3 and 43 DF, p-value: 3.618e-09
対数化した人口密度を加えた回帰モデル
reg4 <- lm(her~rhinc+univ+stu+lpopd, data=data1)
summary(reg4)
##
## Call:
## lm(formula = her ~ rhinc + univ + stu + lpopd, data = data1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.6631 -2.0735 -0.0494 1.9474 6.6751
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -10.61564 7.20729 -1.473 0.148232
## rhinc 0.02196 0.01010 2.174 0.035428 *
## univ 7.99297 2.56730 3.113 0.003325 **
## stu 0.89445 0.56537 1.582 0.121141
## lpopd 4.92562 1.15196 4.276 0.000107 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.549 on 42 degrees of freedom
## Multiple R-squared: 0.7355, Adjusted R-squared: 0.7103
## F-statistic: 29.2 on 4 and 42 DF, p-value: 1.221e-11
表6-3 推定に使用した変数の相関行列(N=47)
round(cor(data2), digit=3)
## her rhinc univ stu lpopd
## her 1.000 0.126 0.404 0.737 0.794
## rhinc 0.126 1.000 -0.223 0.076 -0.019
## univ 0.404 -0.223 1.000 0.228 0.236
## stu 0.737 0.076 0.228 1.000 0.797
## lpopd 0.794 -0.019 0.236 0.797 1.000
ここでは、round関数で小数点以下第3位までの表示にしています。
付録
ここまでの結果をまとめています。
stargazer(reg1, reg2, reg3, reg4, type="text", keep.stat=c("n", "rsq", "adj.rsq"))
##
## ================================================
## Dependent variable:
## -----------------------------------
## her
## (1) (2) (3) (4)
## ------------------------------------------------
## rhinc 0.017 0.132 0.022**
## (0.012) (0.172) (0.010)
##
## rhinc10 0.170
## (0.119)
##
## rhinc2 -0.0001
## (0.0002)
##
## univ 8.674*** 8.674*** 8.593*** 7.993***
## (3.034) (3.034) (3.056) (2.567)
##
## stu 2.800*** 2.800*** 2.791*** 0.894
## (0.412) (0.412) (0.415) (0.565)
##
## lpopd 4.926***
## (1.152)
##
## Constant 0.097 0.097 -29.205 -10.616
## (8.001) (8.001) (44.432) (7.207)
##
## ------------------------------------------------
## Observations 47 47 47 47
## R2 0.620 0.620 0.624 0.736
## Adjusted R2 0.594 0.594 0.589 0.710
## ================================================
## Note: *p<0.1; **p<0.05; ***p<0.01