This version: 2025-07-01
fixest
パッケージを使用して、処置のタイミングに時差がある場合の差の差(Difference
in Differences, DiD)推定を実行し、処置効果を推定する。fixest
パッケージのインストールは完了していることを前提とする。完了していない場合は、以下のコードをコンソールに入力してインストールすること。install.packages("fixest")
パッケージを読み込む。
library(fixest)
次に、サンプル・データbase_did
を読み込む。
data(base_stagg)
head(base_stagg)
## id year year_treated time_to_treatment treated treatment_effect_true
## 2 90 1 2 -1 1 0
## 3 89 1 3 -2 1 0
## 4 88 1 4 -3 1 0
## 5 87 1 5 -4 1 0
## 6 86 1 6 -5 1 0
## 7 85 1 7 -6 1 0
## x1 y
## 2 -1.0947021 0.01722971
## 3 -3.7100676 -4.58084528
## 4 2.5274402 2.73817174
## 5 -0.7204263 -0.65103066
## 6 -3.6711678 -5.33381664
## 7 -0.3152137 0.49562631
このデータには、以下の変数が含まれている。
id
: 個人識別子year
: 年year_treated
: 処置を受けた年time_to_treatment
: 処置までの年数treated
: 処置群(1: 処置群、0: 対照群)y
: アウトカム変数x1
: コントロール変数year
を確認する。table(base_stagg$year)
##
## 1 2 3 4 5 6 7 8 9 10
## 95 95 95 95 95 95 95 95 95 95
処置を受けた年を確認する
10000は、処置を受けていないことを示す。
table(base_stagg$year_treated)
##
## 2 3 4 5 6 7 8 9 10 10000
## 50 50 50 50 50 50 50 50 50 500
処置のタイミングに時差がある場合、通常の二元固定効果モデル(Two-Way Fixed Effects, TWFE)では、処置効果の推定がバイアスされる可能性がある。これを解決するために、Sun and Abraham (2020)は、時差のある処置効果を正確に推定する方法を提案した。そこで、Sun and Abraham (2020)の方法を使用して、処置効果を推定する。
時差ありDiD分析のために、fixest
は、Sun and Abraham
(2020)を実装するためのsunab
関数を提供している。この方法は、各期間の平均処置効果(ATT)を得るために、処置コホート×処置までの時間ダミーの推定を行う。
res_sa20 = feols(y ~ x1 + sunab(year_treated, year)
| id + year, base_stagg)
etable(res_sa20)
## res_sa20
## Dependent Var.: y
##
## x1 0.9947*** (0.0184)
## year = -9 0.3518 (0.3591)
## year = -8 -0.0790 (0.2975)
## year = -7 0.1010 (0.3670)
## year = -6 -0.0564 (0.3089)
## year = -5 -0.2953 (0.2940)
## year = -4 -0.3037 (0.2491)
## year = -3 -0.0884 (0.2558)
## year = -2 0.0847 (0.2443)
## year = 0 -5.188*** (0.2211)
## year = 1 -3.540*** (0.2128)
## year = 2 -2.155*** (0.2258)
## year = 3 -0.7750** (0.2771)
## year = 4 1.069*** (0.3104)
## year = 5 2.118*** (0.4481)
## year = 6 4.631*** (0.4604)
## year = 7 4.890*** (0.3394)
## year = 8 6.244*** (0.2976)
## Fixed-Effects: ------------------
## id Yes
## year Yes
## _______________ __________________
## S.E.: Clustered by: id
## Observations 950
## R2 0.90982
## Within R2 0.87641
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
処置効果をグラフに表示するには、iplot
関数を使用することができる。iplot
関数
は、i() で作成された変数の係数を表示し、その係数のみを表示する。
iplot(res_sa20)