| trt_dummy | 路線数 | 駅数 | 自治体数 | 県 |
|---|---|---|---|---|
| 0 | 45 | 485 | 114 | 14 |
| 1 | 38 | 384 | 91 | 26 |
| NA | 83 | 869 | 205 | 40 |
report_feb15_2024
DIDによる鉄道存廃の社会的影響の識別
1980年代、国鉄特定地方交通線として指定され、その存廃が地域の決定に委ねられた出来事を自然実験としてとらえ、鉄道存廃の政策効果識別を試みる。
政策効果識別に当たっては、2005年の「平成の大合併」後の自治体区分を適用して推定することで、現代の自治体政策への示唆を得ることを目的とする。
鉄道インフラが社会に与える影響についての因果推論
日本の鉄道を含む公共交通政策は、独立採算原則の元、公的な財源配分の最小化を目標とした政策が続けられてきた。しかし、特に鉄道は費用逓減という産業特性上、赤字が避けられないために、不動産などの兼業、または都市部から地方への内部補助が大きな役割を果たしてきた。
さらに、兼業も内部補助も困難な地方の民間鉄道が実は企業数の大勢を占めている。(約200社中160社以上が中小民間鉄道)これらの鉄道は、第3セクターとして行政の資本参画と負担があるものも多く、その行政側の関与の目的としては、産業のもう一つの特性である、社会への外部経済のメリットを目指してのものと考えられる。
このような社会的な関与方針、政策が、
その目指す効果を得られているのか、
「負担が大きく地域だけでは支えられない」とされる鉄道への支援が、本当に過大な負担となっているのか、
という点について、検証を試みる。
国鉄末期と同様に、地方部における鉄道システムの維持可能性が、アフターコロナの大きな社会的課題として浮上している。地域社会と鉄道インフラの関係についての研究は、社会的な意義が大きいと考える。
既存研究
政策選択の結果としての鉄道システムの経済的効率性などについては十分な先行研究の蓄積があるが(Smith and Nash 2014), (Cantos and Maudos 2001), (Tomikawa and Goto 2022), (Oum, Waters, and Yu 1999), (Mizutani and Uranishi 2010), (須田 and 依田 2004)、社会側から見た鉄道インフラの効果については、以下の二つの視点からの研究がある。
- 新幹線、高速交通システム(HSR)が地価や地域の税収、生産関数に与えた影響に関する研究(片岡 将 et al. 2019), (竹林, 瀬谷, and 村田 2024), (落合, 里穂 and 寺部, 慎太郎 2018), (Murakami and Cervero 2017), (Wetwitoo and Kato 2017)
- 廃線、駅の廃止が人口動態などに与えた影響に関する研究 (浅妻 2021), (永東 et al., n.d.), (植村, 松中, and 大庭 2022), (植村, 松中, and 大庭 2021), (藤田 2022),
政策効果の統計的因果推論の研究蓄積が豊富な欧米、中国では、鉄道に関する政策が、2000年代以降、交通と地域政策、都市政策のパッケージ化と路線新設という方向性が明確であり、また日本も整備新幹線については推進の方針であるため、前者の研究の蓄積が進んでいる。
後者はデータの制約、地域環境(過疎傾向など)の影響で、廃線などの決定に関する政策効果の統計的識別が難しい。また日本以外の諸外国では、公的関与のもとでサービスレベルを向上させる政策が主流であるため、廃線の社会的影響については国内の研究が主である、
自然実験としての国鉄末期の政策選択について
国鉄再建法により“特定地方交通路線”83路線が指定され、対象路線と駅が存在する地方自治体は、廃止または地域自治体出資による新会社による運営の選択を余儀なくされた。
統計的因果推論手法による自然実験としての特性
- 条件付き交換性(Conditional exhangeability) (大久保 2019)
対象の同質性
- SUTVA(Stable Unit Treatment Value Assumption) (Imbens and Rubin 2015, 9 - 10)
処置レベルに差がなく同一であり、観察されるユニット間の相互の影響がない
- Strongly Ignorable Treatment Assignment (Imbens and Rubin 2015, 39)
処置群、対象群の割り当てがランダムであり、交絡がない
DID(Difference in Difference)による政策効果の推定
(Card and Krueger 1993; Callaway 2020)
(植村, 松中, and 大庭 2021; 大平 2019, 2019)
処置群(公的関与による存続)と対照群(廃線とバス転換)が明確である
83路線の指定は自治体意向にかかわらず一方的な指定(割り当て)であり、この点についての自己選択バイアスは少ない。(ただし、存続か廃線かの決定については自己選択バイアスが存在する)
当時国は存廃決定を自治体に委ねており、地方行政の意思で政策を選択できた。このような誘導のない政策決定は日本においては稀な事例であり、政策効果の因果推論に適したテーマである。
ATT: Average Treatment Effect on Treatedの推定
処置Dが行われた場合を\(D=1\)、処置が行われなかった時を\(D=0\)とした時、
\[ATT = E(Y^{1} - Y^{0} | D = 1)\]
同一個体での比較が本来は必要であるが、\(Y^{0} | D =1\)の部分が反実仮想となる:
*RCTの状況では\(ATE = ATT = E(Y^{1}) - E(Y^{0})\)である。
Method and Data
Two Way Fixed Effects Modelによる ATTの推定
DIDは共通トレンドの仮定の元で処置群(T)、対象群(C)、それぞれに\(Y_{preTreat}\)と\(Y_{postTreat}\)を比較sする。
\[DID = Y^1_{postTreat} - Y^1_{preTreat} - (Y^0_{postTreat} - Y^0_{preTreat})\]
回帰式で表すと以下の処置効果\(\beta_3\)を固定効果モデルで推定するとなる。
\[\begin{array}{r} Y=\beta_0+\beta_1 {Treated }+\beta_2 { postTreat }+ \\ \beta_3{ Treated } \times{ postTreat }+\varepsilon \end{array}\]
階差を取る(あるいはDemeaningをする)固定効果モデルとする、パネルデータの固定効果モデルと同様に時間不変の観察不可能な交絡要因を取り除ける(OVBバイアスの除去)。 \[\begin{array}{r} \Delta Y=\Delta \beta_0 + \Delta \beta_1{ Treated } + \Delta \beta_2{ postTreat }+ \\ \Delta \beta_3{ Treated } \times{postTreat }+\varepsilon \end{array}\]
固定効果モデルにより各個体の異質性と時間の影響、二つのFixed effectsのコントールが可能
Data
GISによる対象路線駅と自治体の抽出
- 地方特定交通線に関するGISデータ
国土数値情報鉄道時系列データから83の路線を抽出し、路線に含まれる駅を日本地図データ(自治体境界データ)と重ねて、これらの駅が存在した基礎自治体を抽出した。
https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N05-v2_0.html
- 基礎自治体区域地図
GACM地図データ https://gadm.org/maps/JPN.html
自治体に関する統計データ
国勢調査などのデータに関し、現在の自治体区分で合併前の自治体を”合成”したデータを使用し、地方特定交通線が存在した自治体に関する人口や製造品出荷額、税収等のデータの抽出を行なった。
- 経済財政諮問会議「選択する未来」委員会(平成26年1月設置)発表データ
https://www5.cao.go.jp/keizai-shimon/kaigi/special/future/keizai-jinkou_data.html
全国の市区町村(2014年4月時点)について、1975年から約40年間の人口・経済関係のデータ
- estat 「都道府県・市区町村のすがた(社会・人口統計体系)」
https://www.e-stat.go.jp/regional-statistics/ssdsview
1980年以降のデータが存在し、主に1990年以降のデータを目的変数として使用
パネルデータ構造
データセットは、存続・3セク化または廃止・バス転換が行われた1983年から1990年を処置期間、その前を処置前、その後2005年までを処置後とする3期間のパネル構造を基本とする。
データセットに期間ファクター”period”と処置タイミングダミー”post”を追加
1975年から1983年を”period 1”, 1984-1990(treamtment period)を”period 2”, 1991-2000を”period 3”とする。
処置タイミングはperiod 3に有効とし、“post = 1”のダミー変数を入れる。
“name”列を数値型とした”id”列を追加し、駅ごととなっている行の重複を取り除き、分析用のデータセット”df_did2”を作成
| Unique (#) | Missing (%) | Mean | SD | Min | Median | Max | |
|---|---|---|---|---|---|---|---|
| id | 201 | 0 | 101.0 | 58.0 | 1.0 | 101.0 | 201.0 |
| year | 27 | 0 | 1991.9 | 8.1 | 1975.0 | 1992.0 | 2005.0 |
| agri_output | 3298 | 0 | 8323.8 | 9850.4 | 0.0 | 5143.5 | 69860.0 |
| employed | 1173 | 78 | 30505.8 | 76584.6 | 480.0 | 9278.5 | 837396.0 |
| fisical_index | 129 | 4 | 0.4 | 0.2 | 0.1 | 0.3 | 1.7 |
| newborn | 1614 | 0 | 722.3 | 1641.7 | 3.0 | 241.0 | 18444.0 |
| offices | 1017 | 78 | 3668.2 | 8333.5 | 92.0 | 1230.5 | 77996.0 |
| prdctn_output | 5183 | 1 | 182761.1 | 644116.9 | 49.0 | 24991.0 | 11037871.0 |
| sales | 1724 | 68 | 72755.3 | 180701.8 | 593.0 | 21199.0 | 2022503.0 |
| taxableincome_cpt | 5427 | 0 | 2611.4 | 607.7 | 977.3 | 2693.1 | 5846.9 |
| taxableincome_rgn | 5426 | 0 | 72565840.4 | 184988485.8 | 594866.0 | 20175258.0 | 2020536234.0 |
| totalpop | 1392 | 74 | 66512.6 | 144515.1 | 1070.0 | 24689.0 | 1401279.0 |
| A4101_出生数 | 923 | 59 | 628.3 | 1451.3 | 3.0 | 192.0 | 13422.0 |
| A4200_死亡数 | 1366 | 4 | 499.4 | 953.1 | 4.0 | 217.0 | 9205.0 |
| F2705_他市区町村への通勤者数 | 684 | 86 | 6832.2 | 30277.7 | 13.0 | 1101.0 | 337817.0 |
| A9101_婚姻件数組 | 1151 | 4 | 394.9 | 957.2 | 0.0 | 124.0 | 9983.0 |
| A9201_離婚件数組 | 584 | 4 | 110.7 | 292.2 | 0.0 | 34.0 | 3881.0 |
| A1303_65歳以上口 | 1159 | 78 | 10110.9 | 20340.0 | 198.0 | 4157.5 | 220985.0 |
| A6103_流出口県内他市区町村で従業・通学している口 | 707 | 86 | 7746.8 | 34889.3 | 53.0 | 1292.0 | 383435.0 |
| K3101_交通事故発生件数件 | 1167 | 5 | 433.3 | 1291.5 | 0.0 | 96.0 | 16265.0 |
| K4201_刑法犯認知件数件 | 1580 | 11 | 990.4 | 3530.1 | 0.0 | 201.0 | 57578.0 |
| H110202_空き家数戸 | 56 | 99 | 4311.5 | 12308.4 | 140.0 | 1490.0 | 76700.0 |
| A1407_0~17歳口 | 400 | 93 | 12212.4 | 26690.4 | 148.0 | 4134.5 | 236085.0 |
| E2501_小学校児童数 | 3533 | 4 | 5126.0 | 11074.7 | 52.0 | 1819.0 | 107206.0 |
| E3501_中学校生徒数 | 2837 | 4 | 2737.4 | 5864.8 | 23.0 | 1001.5 | 55148.0 |
| E4501_高等学校生徒数 | 2689 | 7 | 2711.9 | 6185.2 | 0.0 | 836.0 | 59396.0 |
| type | 1 | 0 | 2.0 | 0.0 | 2.0 | 2.0 | 2.0 |
| begin_service | 62 | 0 | 1935.0 | 21.6 | 1882.0 | 1933.0 | 1976.0 |
| begin | 20 | 0 | 1955.3 | 7.8 | 1950.0 | 1950.0 | 1976.0 |
| end | 8 | 0 | 1985.8 | 1.7 | 1982.0 | 1986.0 | 1989.0 |
| line_length | 75 | 0 | 51.1 | 41.5 | 1.9 | 30.6 | 148.9 |
| pass_dnsty | 79 | 0 | 1210.6 | 721.7 | 82.0 | 1085.0 | 3292.0 |
| trt_year | 8 | 0 | 1986.8 | 1.7 | 1983.0 | 1987.0 | 1990.0 |
| trt_dummy | 2 | 0 | 0.4 | 0.5 | 0.0 | 0.0 | 1.0 |
| area | 201 | 0 | 381036872.7 | 329291714.6 | 7763687.6 | 286308656.3 | 1502765617.7 |
| dist_tokyo | 201 | 0 | 693522.9 | 291853.5 | 64044.7 | 839263.1 | 1086808.8 |
| count | 16 | 0 | 4.5 | 3.3 | 1.0 | 4.0 | 18.0 |
| period | 4 | 19 | 2.2 | 0.8 | 1.0 | 2.0 | 3.0 |
| post | 3 | 19 | 0.5 | 0.5 | 0.0 | 0.0 | 1.0 |
2期間(preTreat=0, postTreat=1)のみのDID推定
# Get the names of the dependent variables
dependent_vars <- names(df_did2)[c(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 19, 25, 26, 27)]
dependent_vars [1] "agri_output" "employed"
[3] "fisical_index" "newborn"
[5] "offices" "prdctn_output"
[7] "sales" "taxableincome_cpt"
[9] "taxableincome_rgn" "totalpop"
[11] "F2705_他市区町村への通勤者数" "A9101_婚姻件数組"
[13] "A1303_65歳以上口" "E2501_小学校児童数"
[15] "E3501_中学校生徒数" "E4501_高等学校生徒数"
# Create a list of models
models <- map(dependent_vars, ~ feols(as.formula(paste("log(", .x, ")~ post:trt_dummy | id + period")), data = df_did2)) |>
set_names(dependent_vars)
etable(models) agri_output employed fisical_index
Dependent Var.: log(agri_output) log(employed) log(fisical_index)
post x trt_dummy -0.0990*** (0.0263) 0.0665** (0.0249) 0.0795*** (0.0211)
Fixed-Effects: ------------------- ----------------- ------------------
id Yes Yes Yes
period Yes Yes Yes
________________ ___________________ _________________ __________________
S.E.: Clustered by: id by: id by: id
Observations 4,412 1,005 4,221
R2 0.98142 0.99296 0.96701
Within R2 0.02039 0.01866 0.03654
newborn offices prdctn_output
Dependent Var.: log(newborn) log(offices) log(prdctn_output)
post x trt_dummy 0.0703** (0.0244) 0.0319. (0.0181) 0.1033. (0.0535)
Fixed-Effects: ----------------- ---------------- ------------------
id Yes Yes Yes
period Yes Yes Yes
________________ _________________ ________________ __________________
S.E.: Clustered by: id by: id by: id
Observations 4,422 1,005 4,389
R2 0.98748 0.99584 0.97571
Within R2 0.01206 0.00803 0.00703
sales taxableincome_cpt
Dependent Var.: log(sales) log(taxableincome_cpt)
post x trt_dummy 0.1221*** (0.0304) 0.0377*** (0.0068)
Fixed-Effects: ------------------ ----------------------
id Yes Yes
period Yes Yes
________________ __________________ ______________________
S.E.: Clustered by: id by: id
Observations 1,357 4,422
R2 0.98973 0.85261
Within R2 0.04120 0.00842
taxableincome_rgn totalpop
Dependent Var.: log(taxableincome_rgn) log(totalpop)
post x trt_dummy 0.1155*** (0.0212) 0.0732*** (0.0206)
Fixed-Effects: ---------------------- ------------------
id Yes Yes
period Yes Yes
________________ ______________________ __________________
S.E.: Clustered by: id by: id
Observations 4,422 1,206
R2 0.98476 0.99504
Within R2 0.02532 0.03412
F2705_他市区町村への通勤者数 A9101_婚姻件数組 A1303_65歳以上口
Dependent Var.: log(F2705_他市区町村への通勤者数) log(A9101_婚姻件数組) log(A1303_65歳以上口)
post x trt_dummy 0.0889* (0.0356) 0.0467. (0.0255) 0.0146 (0.0118)
Fixed-Effects: ---------------------- ---------------- -----------------
id Yes Yes Yes
period Yes Yes Yes
________________ ______________________ ________________ _________________
S.E.: Clustered by: id by: id by: id
Observations 620 4,220 1,005
R2 0.99156 0.98483 0.99536
Within R2 0.01709 0.00435 0.00173
E2501_小学校児童数 E3501_中学校生徒数 E4501_高等学校生徒数
Dependent Var.: log(E2501_小学校児童数) log(E3501_中学校生徒数) log(E4501_高等学校生徒数)
post x trt_dummy 0.0569** (0.0209) 0.0840** (0.0254) 0.0951* (0.0400)
Fixed-Effects: ----------------- ----------------- ------------------
id Yes Yes Yes
period Yes Yes Yes
________________ _________________ _________________ __________________
S.E.: Clustered by: id by: id by: id
Observations 4,215 4,215 3,491
R2 0.99131 0.99013 0.97925
Within R2 0.01236 0.02429 0.01389
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelsummary(models, statistic = c("p={p.value}"), stars = TRUE)| agri_output | employed | fisical_index | newborn | offices | prdctn_output | sales | taxableincome_cpt | taxableincome_rgn | totalpop | F2705_他市区町村への通勤者数 | A9101_婚姻件数組 | A1303_65歳以上口 | E2501_小学校児童数 | E3501_中学校生徒数 | E4501_高等学校生徒数 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| post × trt_dummy | −0.099*** | 0.066** | 0.080*** | 0.070** | 0.032+ | 0.103+ | 0.122*** | 0.038*** | 0.115*** | 0.073*** | 0.089* | 0.047+ | 0.015 | 0.057** | 0.084** | 0.095* |
| p= | p=0.008 | p= | p=0.004 | p=0.079 | p=0.055 | p= | p= | p= | p= | p=0.014 | p=0.068 | p=0.216 | p=0.007 | p=0.001 | p=0.019 | |
| Num.Obs. | 4412 | 1005 | 4221 | 4422 | 1005 | 4389 | 1357 | 4422 | 4422 | 1206 | 620 | 4220 | 1005 | 4215 | 4215 | 3491 |
| R2 | 0.981 | 0.993 | 0.967 | 0.987 | 0.996 | 0.976 | 0.990 | 0.853 | 0.985 | 0.995 | 0.992 | 0.985 | 0.995 | 0.991 | 0.990 | 0.979 |
| R2 Adj. | 0.981 | 0.991 | 0.965 | 0.987 | 0.995 | 0.975 | 0.988 | 0.846 | 0.984 | 0.994 | 0.989 | 0.984 | 0.994 | 0.991 | 0.990 | 0.978 |
| R2 Within | 0.020 | 0.019 | 0.037 | 0.012 | 0.008 | 0.007 | 0.041 | 0.008 | 0.025 | 0.034 | 0.017 | 0.004 | 0.002 | 0.012 | 0.024 | 0.014 |
| R2 Within Adj. | 0.020 | 0.017 | 0.036 | 0.012 | 0.007 | 0.007 | 0.040 | 0.008 | 0.025 | 0.033 | 0.015 | 0.004 | 0.000 | 0.012 | 0.024 | 0.014 |
| AIC | −2739.8 | −1052.7 | −6961.8 | −3424.2 | −1669.9 | 2380.3 | −995.9 | −7318.6 | −2368.8 | −1950.3 | −288.1 | −2330.6 | −1694.6 | −5101.8 | −4713.7 | −1072.3 |
| BIC | −1435.8 | −50.5 | −5666.8 | −2119.8 | −667.7 | 3683.2 | 62.3 | −6014.2 | −1064.3 | −910.9 | 274.4 | −1035.7 | −692.4 | −3807.2 | −3419.1 | 11.5 |
| RMSE | 0.17 | 0.12 | 0.10 | 0.16 | 0.09 | 0.30 | 0.14 | 0.10 | 0.18 | 0.09 | 0.16 | 0.17 | 0.09 | 0.13 | 0.13 | 0.20 |
| Std.Errors | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id |
| FE: id | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| FE: period | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
3期間構造(pre, treatment, post)を導入したモデル
# 処置×期間効果の推定
models_3periods <- map(dependent_vars, ~ feols(as.formula(paste("log(", .x, ")~ i(period, trt_dummy, 2) | id + period")), data = df_did2)) |>
set_names(dependent_vars)
etable(models_3periods) agri_output employed
Dependent Var.: log(agri_output) log(employed)
trt_dummy x period = 1 0.0736*** (0.0210) -0.0500** (0.0185)
trt_dummy x period = 3 -0.0684** (0.0227) 0.0332* (0.0154)
Fixed-Effects: ------------------ ------------------
id Yes Yes
period Yes Yes
______________________ __________________ __________________
S.E.: Clustered by: id by: id
Observations 4,412 1,005
R2 0.98154 0.99300
Within R2 0.02640 0.02452
fisical_index newborn offices
Dependent Var.: log(fisical_index) log(newborn) log(offices)
trt_dummy x period = 1 -0.0600*** (0.0143) -0.0174 (0.0148) -0.0219 (0.0138)
trt_dummy x period = 3 0.0577** (0.0189) 0.0630** (0.0214) 0.0173 (0.0106)
Fixed-Effects: ------------------- ----------------- ----------------
id Yes Yes Yes
period Yes Yes Yes
______________________ ___________________ _________________ ________________
S.E.: Clustered by: id by: id by: id
Observations 4,221 4,422 1,005
R2 0.96736 0.98748 0.99585
Within R2 0.04665 0.01246 0.01014
prdctn_output sales
Dependent Var.: log(prdctn_output) log(sales)
trt_dummy x period = 1 -0.1181** (0.0433) -0.0340 (0.0230)
trt_dummy x period = 3 0.0541 (0.0442) 0.1107*** (0.0293)
Fixed-Effects: ------------------ ------------------
id Yes Yes
period Yes Yes
______________________ __________________ __________________
S.E.: Clustered by: id by: id
Observations 4,389 1,357
R2 0.97583 0.98974
Within R2 0.01196 0.04244
taxableincome_cpt taxableincome_rgn
Dependent Var.: log(taxableincome_cpt) log(taxableincome_rgn)
trt_dummy x period = 1 -0.0247*** (0.0061) -0.0897*** (0.0146)
trt_dummy x period = 3 0.0274*** (0.0057) 0.0781*** (0.0163)
Fixed-Effects: ---------------------- ----------------------
id Yes Yes
period Yes Yes
______________________ ______________________ ______________________
S.E.: Clustered by: id by: id
Observations 4,422 4,422
R2 0.85290 0.98489
Within R2 0.01036 0.03349
totalpop F2705_他市区町村への通勤者数
Dependent Var.: log(totalpop) log(F2705_他市区町村への通勤者数)
trt_dummy x period = 1 -0.0553*** (0.0158) -0.0785. (0.0411)
trt_dummy x period = 3 0.0456*** (0.0131) 0.0627* (0.0283)
Fixed-Effects: ------------------- ----------------------
id Yes Yes
period Yes Yes
______________________ ___________________ ______________________
S.E.: Clustered by: id by: id
Observations 1,206 620
R2 0.99511 0.99162
Within R2 0.04872 0.02451
A9101_婚姻件数組 A1303_65歳以上口 E2501_小学校児童数
Dependent Var.: log(A9101_婚姻件数組) log(A1303_65歳以上口) log(E2501_小学校児童数)
trt_dummy x period = 1 -0.0359* (0.0158) 0.0027 (0.0083) -0.0460** (0.0153)
trt_dummy x period = 3 0.0337 (0.0226) 0.0155 (0.0098) 0.0403* (0.0172)
Fixed-Effects: ----------------- ----------------- ------------------
id Yes Yes Yes
period Yes Yes Yes
______________________ _________________ _________________ __________________
S.E.: Clustered by: id by: id by: id
Observations 4,220 1,005 4,215
R2 0.98485 0.99536 0.99134
Within R2 0.00560 0.00176 0.01627
E3501_中学校生徒数 E4501_高等学校生徒数
Dependent Var.: log(E3501_中学校生徒数) log(E4501_高等学校生徒数)
trt_dummy x period = 1 -0.0684*** (0.0186) -0.0432 (0.0373)
trt_dummy x period = 3 0.0593** (0.0209) 0.0804* (0.0324)
Fixed-Effects: ------------------- ------------------
id Yes Yes
period Yes Yes
______________________ ___________________ __________________
S.E.: Clustered by: id by: id
Observations 4,215 3,491
R2 0.99021 0.97928
Within R2 0.03209 0.01523
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelsummary(models_3periods, statistic = c("p={p.value}"), stars = TRUE)| agri_output | employed | fisical_index | newborn | offices | prdctn_output | sales | taxableincome_cpt | taxableincome_rgn | totalpop | F2705_他市区町村への通勤者数 | A9101_婚姻件数組 | A1303_65歳以上口 | E2501_小学校児童数 | E3501_中学校生徒数 | E4501_高等学校生徒数 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| period = 1 × trt_dummy | 0.074*** | −0.050** | −0.060*** | −0.017 | −0.022 | −0.118** | −0.034 | −0.025*** | −0.090*** | −0.055*** | −0.079+ | −0.036* | 0.003 | −0.046** | −0.068*** | −0.043 |
| p= | p=0.008 | p= | p=0.241 | p=0.114 | p=0.007 | p=0.140 | p= | p= | p= | p=0.058 | p=0.025 | p=0.746 | p=0.003 | p= | p=0.248 | |
| period = 3 × trt_dummy | −0.068** | 0.033* | 0.058** | 0.063** | 0.017 | 0.054 | 0.111*** | 0.027*** | 0.078*** | 0.046*** | 0.063* | 0.034 | 0.015 | 0.040* | 0.059** | 0.080* |
| p=0.003 | p=0.032 | p=0.003 | p=0.004 | p=0.106 | p=0.222 | p= | p= | p= | p= | p=0.028 | p=0.138 | p=0.115 | p=0.020 | p=0.005 | p=0.014 | |
| Num.Obs. | 4412 | 1005 | 4221 | 4422 | 1005 | 4389 | 1357 | 4422 | 4422 | 1206 | 620 | 4220 | 1005 | 4215 | 4215 | 3491 |
| R2 | 0.982 | 0.993 | 0.967 | 0.987 | 0.996 | 0.976 | 0.990 | 0.853 | 0.985 | 0.995 | 0.992 | 0.985 | 0.995 | 0.991 | 0.990 | 0.979 |
| R2 Adj. | 0.981 | 0.991 | 0.966 | 0.987 | 0.995 | 0.975 | 0.988 | 0.846 | 0.984 | 0.994 | 0.989 | 0.984 | 0.994 | 0.991 | 0.990 | 0.978 |
| R2 Within | 0.026 | 0.025 | 0.047 | 0.012 | 0.010 | 0.012 | 0.042 | 0.010 | 0.033 | 0.049 | 0.025 | 0.006 | 0.002 | 0.016 | 0.032 | 0.015 |
| R2 Within Adj. | 0.026 | 0.022 | 0.046 | 0.012 | 0.008 | 0.011 | 0.041 | 0.010 | 0.033 | 0.047 | 0.021 | 0.005 | −0.001 | 0.016 | 0.032 | 0.015 |
| AIC | −2764.9 | −1056.7 | −7004.3 | −3424.0 | −1670.0 | 2360.5 | −995.7 | −7325.3 | −2404.0 | −1966.7 | −290.8 | −2333.8 | −1692.6 | −5116.6 | −4745.5 | −1075.1 |
| BIC | −1454.6 | −49.6 | −5703.0 | −2113.1 | −662.9 | 3669.8 | 67.8 | −6014.4 | −1093.2 | −922.2 | 276.2 | −1032.6 | −685.5 | −3815.5 | −3444.5 | 14.9 |
| RMSE | 0.17 | 0.12 | 0.10 | 0.16 | 0.09 | 0.30 | 0.14 | 0.10 | 0.18 | 0.09 | 0.16 | 0.17 | 0.09 | 0.13 | 0.13 | 0.20 |
| Std.Errors | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id | by: id |
| FE: id | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| FE: period | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 |
iplot(models_3periods, main =" Effect on log(dependent vars)")Doubly Robust DID
データを年ごとにグループ化してネストさせる
nested_data <- df_did2 |>
group_by(year) |>
nest()
nested_data# A tibble: 27 × 2
# Groups: year [27]
year data
<dbl> <list>
1 1975 <tibble [201 × 47]>
2 1980 <tibble [201 × 47]>
3 1981 <tibble [201 × 47]>
4 1982 <tibble [201 × 47]>
5 1983 <tibble [201 × 47]>
6 1984 <tibble [201 × 47]>
7 1985 <tibble [201 × 47]>
8 1986 <tibble [201 × 47]>
9 1987 <tibble [201 × 47]>
10 1988 <tibble [201 × 47]>
# ℹ 17 more rows
nested_data$data[[17]]# A tibble: 201 × 47
id name agri_output employed fisical_index newborn offices prdctn_output
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 45 北海… 23860 NA 0.53 1868 NA 114577
2 34 北海… 35250 NA 0.42 1238 NA 144180
3 44 北海… 26710 NA 0.38 774 NA 69524
4 74 北海… 17130 NA 0.4 414 NA 39015
5 67 北海… 1130 NA 0.38 240 NA 35689
6 72 北海… 6030 NA 0.35 392 NA 68006
7 73 北海… 5630 NA 0.32 232 NA 58011
8 37 北海… 14000 NA 0.24 227 NA 20485
9 35 北海… 10800 NA 0.26 358 NA 21369
10 19 北海… 2030 NA 0.17 64 NA 29791
# ℹ 191 more rows
# ℹ 39 more variables: sales <dbl>, taxableincome_cpt <dbl>,
# taxableincome_rgn <dbl>, totalpop <dbl>, A4101_出生数 <dbl>,
# A4200_死亡数 <dbl>, F2705_他市区町村への通勤者数 <dbl>,
# A9101_婚姻件数組 <dbl>, A9201_離婚件数組 <dbl>, A1303_65歳以上口 <dbl>,
# `A6103_流出口県内他市区町村で従業・通学している口` <dbl>,
# K3101_交通事故発生件数件 <dbl>, K4201_刑法犯認知件数件 <dbl>, …
DRDIDパッケージは2期間データのみ扱えるため、処置前として1980年、処置後として1995年のデータによりATTを推定する。
- 出生数についての推定
nb_did_df <- bind_rows(nested_data$data[[2]] ,nested_data$data[[17]])
nb_drdid<- drdid(yname = "newborn", idname = "id", tname = "post", dname = "trt_dummy",
xformla = ~ log(area) + log(dist_tokyo) + log(count),
data = nb_did_df,
panel = TRUE
)
summary(nb_drdid) Call:
drdid(yname = "newborn", tname = "post", idname = "id", dname = "trt_dummy",
xformla = ~log(area) + log(dist_tokyo) + log(count), data = nb_did_df,
panel = TRUE)
------------------------------------------------------------------
Further improved locally efficient DR DID estimator for the ATT:
ATT Std. Error t value Pr(>|t|) [95% Conf. Interval]
403.4738 219.06 1.8418 0.0655 -25.8839 832.8315
------------------------------------------------------------------
Estimator based on panel data.
Outcome regression est. method: weighted least squares.
Propensity score est. method: inverse prob. tilting.
Analytical standard error.
------------------------------------------------------------------
See Sant'Anna and Zhao (2020) for details.
- 人口についての推定
drdid<- drdid(yname = "E3501_中学校生徒数", idname = "id", tname = "post", dname = "trt_dummy",
xformla = ~ log(area) + log(dist_tokyo) + log(count),
data = nb_did_df,
panel = TRUE
)Warning in pre_process_drdid(yname = yname, tname = tname, idname = idname, :
Some outcomes are missing (NA). We are dropping those observations
Warning in y1 - y0: longer object length is not a multiple of shorter object
length
summary(drdid) Call:
drdid(yname = "E3501_中学校生徒数", tname = "post", idname = "id",
dname = "trt_dummy", xformla = ~log(area) + log(dist_tokyo) +
log(count), data = nb_did_df, panel = TRUE)
------------------------------------------------------------------
Further improved locally efficient DR DID estimator for the ATT:
ATT Std. Error t value Pr(>|t|) [95% Conf. Interval]
-3475.0107 2571.8694 -1.3512 0.1766 -8515.8748 1565.8534
------------------------------------------------------------------
Estimator based on panel data.
Outcome regression est. method: weighted least squares.
Propensity score est. method: inverse prob. tilting.
Analytical standard error.
------------------------------------------------------------------
See Sant'Anna and Zhao (2020) for details.
Placebo Test
処置期間を”1”の1975年から1982年のデータに当てはめた、「プラセボ」DIDを推定する。
# 処置×期間効果の推定
models_placebo <- map(dependent_vars, ~ feols(as.formula(paste("log(", .x, ")~ i(period, trt_dummy, 1) | id + period")), data = df_did2)) |>
set_names(dependent_vars)
etable(models_3periods) agri_output employed
Dependent Var.: log(agri_output) log(employed)
trt_dummy x period = 1 0.0736*** (0.0210) -0.0500** (0.0185)
trt_dummy x period = 3 -0.0684** (0.0227) 0.0332* (0.0154)
Fixed-Effects: ------------------ ------------------
id Yes Yes
period Yes Yes
______________________ __________________ __________________
S.E.: Clustered by: id by: id
Observations 4,412 1,005
R2 0.98154 0.99300
Within R2 0.02640 0.02452
fisical_index newborn offices
Dependent Var.: log(fisical_index) log(newborn) log(offices)
trt_dummy x period = 1 -0.0600*** (0.0143) -0.0174 (0.0148) -0.0219 (0.0138)
trt_dummy x period = 3 0.0577** (0.0189) 0.0630** (0.0214) 0.0173 (0.0106)
Fixed-Effects: ------------------- ----------------- ----------------
id Yes Yes Yes
period Yes Yes Yes
______________________ ___________________ _________________ ________________
S.E.: Clustered by: id by: id by: id
Observations 4,221 4,422 1,005
R2 0.96736 0.98748 0.99585
Within R2 0.04665 0.01246 0.01014
prdctn_output sales
Dependent Var.: log(prdctn_output) log(sales)
trt_dummy x period = 1 -0.1181** (0.0433) -0.0340 (0.0230)
trt_dummy x period = 3 0.0541 (0.0442) 0.1107*** (0.0293)
Fixed-Effects: ------------------ ------------------
id Yes Yes
period Yes Yes
______________________ __________________ __________________
S.E.: Clustered by: id by: id
Observations 4,389 1,357
R2 0.97583 0.98974
Within R2 0.01196 0.04244
taxableincome_cpt taxableincome_rgn
Dependent Var.: log(taxableincome_cpt) log(taxableincome_rgn)
trt_dummy x period = 1 -0.0247*** (0.0061) -0.0897*** (0.0146)
trt_dummy x period = 3 0.0274*** (0.0057) 0.0781*** (0.0163)
Fixed-Effects: ---------------------- ----------------------
id Yes Yes
period Yes Yes
______________________ ______________________ ______________________
S.E.: Clustered by: id by: id
Observations 4,422 4,422
R2 0.85290 0.98489
Within R2 0.01036 0.03349
totalpop F2705_他市区町村への通勤者数
Dependent Var.: log(totalpop) log(F2705_他市区町村への通勤者数)
trt_dummy x period = 1 -0.0553*** (0.0158) -0.0785. (0.0411)
trt_dummy x period = 3 0.0456*** (0.0131) 0.0627* (0.0283)
Fixed-Effects: ------------------- ----------------------
id Yes Yes
period Yes Yes
______________________ ___________________ ______________________
S.E.: Clustered by: id by: id
Observations 1,206 620
R2 0.99511 0.99162
Within R2 0.04872 0.02451
A9101_婚姻件数組 A1303_65歳以上口 E2501_小学校児童数
Dependent Var.: log(A9101_婚姻件数組) log(A1303_65歳以上口) log(E2501_小学校児童数)
trt_dummy x period = 1 -0.0359* (0.0158) 0.0027 (0.0083) -0.0460** (0.0153)
trt_dummy x period = 3 0.0337 (0.0226) 0.0155 (0.0098) 0.0403* (0.0172)
Fixed-Effects: ----------------- ----------------- ------------------
id Yes Yes Yes
period Yes Yes Yes
______________________ _________________ _________________ __________________
S.E.: Clustered by: id by: id by: id
Observations 4,220 1,005 4,215
R2 0.98485 0.99536 0.99134
Within R2 0.00560 0.00176 0.01627
E3501_中学校生徒数 E4501_高等学校生徒数
Dependent Var.: log(E3501_中学校生徒数) log(E4501_高等学校生徒数)
trt_dummy x period = 1 -0.0684*** (0.0186) -0.0432 (0.0373)
trt_dummy x period = 3 0.0593** (0.0209) 0.0804* (0.0324)
Fixed-Effects: ------------------- ------------------
id Yes Yes
period Yes Yes
______________________ ___________________ __________________
S.E.: Clustered by: id by: id
Observations 4,215 3,491
R2 0.99021 0.97928
Within R2 0.03209 0.01523
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
iplot(models_placebo, main =" Effect on log(dependent vars)")