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)、社会側から見た鉄道インフラの効果については、以下の二つの視点からの研究がある。

政策効果の統計的因果推論の研究蓄積が豊富な欧米、中国では、鉄道に関する政策が、2000年代以降、交通と地域政策、都市政策のパッケージ化と路線新設という方向性が明確であり、また日本も整備新幹線については推進の方針であるため、前者の研究の蓄積が進んでいる。

後者はデータの制約、地域環境(過疎傾向など)の影響で、廃線などの決定に関する政策効果の統計的識別が難しい。また日本以外の諸外国では、公的関与のもとでサービスレベルを向上させる政策が主流であるため、廃線の社会的影響については国内の研究が主である、

自然実験としての国鉄末期の政策選択について

国鉄再建法により“特定地方交通路線”83路線が指定され、対象路線と駅が存在する地方自治体は、廃止または地域自治体出資による新会社による運営の選択を余儀なくされた。

統計的因果推論手法による自然実験としての特性

対象の同質性

処置レベルに差がなく同一であり、観察されるユニット間の相互の影響がない

処置群、対象群の割り当てがランダムであり、交絡がない

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

Figure 1: 地方特定交通線83路線駅の地図
Table 1: 廃線(0)および存続(1)の概要
trt_dummy 路線数 駅数 自治体数
0 45 485 114 14
1 38 384 91 26
NA 83 869 205 40

自治体に関する統計データ

国勢調査などのデータに関し、現在の自治体区分で合併前の自治体を”合成”したデータを使用し、地方特定交通線が存在した自治体に関する人口や製造品出荷額、税収等のデータの抽出を行なった。

  • 経済財政諮問会議「選択する未来」委員会(平成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”を作成

Table 2: 自治体関連データのサマリー
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

(Sant’Anna and Zhao 2020)

データを年ごとにグループ化してネストさせる

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)")

References

Callaway, Brantly. 2020. “Difference-in-Differences for Policy Evaluation.” In, edited by Klaus F Zimmermann, 161. Cham: Springer International Publishing.
Cantos, Pedro, and Joaquıń Maudos. 2001. “Regulation and Efficiency: The Case of European Railways.” Transportation Research Part A: Policy and Practice 35 (5): 459472.
Card, David, and Alan B Krueger. 1993. “Minimum Wages and Employment: A Case Study of the Fast Food Industry in New Jersey and Pennsylvania.”
Imbens, Guido W, and Donald B Rubin. 2015. Causal Inference in Statistics, Social, and Biomedical Sciences. Cambridge University Press.
Mizutani, and Uranishi. 2010. “Effects of Regulatory and Competition Policy on Performance: An Empirical Analysis of OECD Members’ Rail Industries.” B.kobe-u.ac.jp.
Murakami, Jin, and Robert Cervero. 2017. “High-Speed Rail and Economic Development: Business Agglomerations and Policy Implications.” In, 244271. Routledge.
Oum, Tae Hoon, W G Waters, and Chunyan Yu. 1999. “A Survey of Productivity and Efficiency Measurement in Rail Transport.” Journal of Transport Economics and Policy 33 (1): 942.
Sant’Anna, Pedro H C, and Jun Zhao. 2020. “Doubly Robust Difference-in-Differences Estimators.” Journal of Econometrics 219 (1): 101122.
Smith, Andrew S J, and Christopher Nash. 2014. “Rail Efficiency: Cost Research and Its Implications for Policy.”
Tomikawa, Tadaaki, and Mika Goto. 2022. “Efficiency Assessment of Japanese National Railways Before and After Privatization and Divestiture Using Data Envelopment Analysis.” Transport Policy 118 (March): 4455.
Wetwitoo, Jetpan, and Hironori Kato. 2017. “High-Speed Rail and Regional Economic Productivity Through Agglomeration and Network Externality: A Case Study of Inter-Regional Transportation in Japan.” Case Studies on Transport Policy 5 (4): 549559.
大久保将貴. 2019. “因果推論の道具箱.” 理論と方法 34 (1): 2034.
大平悠季. 2019. “交通インフラ整備効果の因果推論: 論点整理と展望.” 土木学会論文集 D3 (土木計画学).
植村洋史, 松中亮治, and 大庭哲治. 2021. “地方鉄道の存廃が駅勢圏人口に及ぼす因果的影響の分析.” 土木学会論文集d3(土木計画学) 76 (5): I_1127I_1135.
———. 2022. “傾向スコアマッチングを用いた地方鉄道の存廃が駅勢圏における年齢階層別人口の社会増減に及ぼす影響.” 土木学会論文集d3(土木計画学) 78 (6): II_168II_181.
永東功嗣, 中川大, 松中亮治, 大庭哲治, and 松原光也. n.d. “地方鉄道の存廃が駅勢圏人口の経年的変化に及ぼす影響に関する研究.” 土木計画学研究・講演集.
浅妻裕. 2021. “鉄道路線存廃と人口推移の関係についての試論.”
片岡 将, 柳川 篤志, 田中 皓介, 川端 祐一郎, and 藤井 聡. 2019. “全国新幹線整備が国土構造と国民経済にもたらす影響の計量分析.” 土木学会論文集d3(土木計画学) 75 (5): I_375I_386.
竹林幹人, 瀬谷創, and 村田祥之. 2024. “新幹線駅の新設が市区町村の人口に与えた影響-Synthetic Control Method を用いて-.” 応用地域学研究 2023 (27): 116.
落合, 里穂, and 寺部, 慎太郎. 2018. “傾向スコアを用いた新幹線が沿線自治体の人口に与える影響の評価.” 交通・物流部門大会講演論文集 2018.27: 2602.
藤田知也. 2022. “北海道における鉄道廃止の影響に関する一考察-年齢階級別人口の変化に着目して.”
須田昌弥, and 依田高典. 2004. “民営化後の JR6 社の密度・範囲の経済性ならびに地域間費用格差.” 運輸政策研究 7 (1): 034042.