This version: 2025-07-08


1 はじめに

  • この課題では、fixestパッケージを使用して、二元固定効果モデル(Two way fixed effects model)を実行し、処置効果を推定する。
  • fixestパッケージのインストールは完了していることを前提とする。完了していない場合は、以下のコードをコンソールに入力してインストールすること。
install.packages("fixest")
  • 各自でRマークダウンを作成し、以下のRコードを実行して、結果を再現し、knitして生成されるWordファイルを提出すること。

2 Rマークダウンファイルの生成

2.1 Step 1

2.2 Step 2

Titleは、R10などのように、適当な番号を入れること。

2.3 Step 3

2.4 Step 4

保存するファイルの名前は、R10などのように、適当な番号を入れること。

3 データ

パッケージを読み込む。

library(fixest)

次に、サンプル・データbase_didを読み込む。

data(base_did)

このデータには、以下の変数が含まれている。

  • id: 個人識別子
  • period: 期間
  • treat: 処置群(1: 処置群、0: 対照群)
  • y: アウトカム変数
  • x1: コントロール変数
  • post: 処置後の期間(1: 処置後、0: 処置前)

以下でデータのサンプルを表示する。

head(base_did)
##             y         x1 id period post treat
## 1  2.87530627  0.5365377  1      1    0     1
## 2  1.86065272 -3.0431894  1      2    0     1
## 3  0.09416524  5.5768439  1      3    0     1
## 4  3.78147485 -2.8300587  1      4    0     1
## 5 -2.55819959 -5.0443544  1      5    0     1
## 6  1.72873240 -0.6363849  1      6    1     1

4 期間構造

  • 処置前期間:period 1, 2, 3, 4, 5
  • 処置後期間:period 6, 7, 8, 9, 10
  • 処置群:treat = 1

期間構造を確認する:

table(base_did$period, base_did$post)
##     
##        0   1
##   1  108   0
##   2  108   0
##   3  108   0
##   4  108   0
##   5  108   0
##   6    0 108
##   7    0 108
##   8    0 108
##   9    0 108
##   10   0 108

5 二元固定効果

5.1 二元固定効果モデルの概要

二元固定効果(TWFE)モデルは、政策効果を推定するための一般的な手法であり、個体と期間の両方の固定効果を考慮する。これは、個人ごとの不変な特性と時間ごとの共通のショックを制御することにより、処置効果をより正確に推定することを可能にする。

回帰分析としては、TWFE は本質的に、treat 変数と period 変数の間の交互作用を推定することになる。この交互作用項は、i(fact_var, num_var, reference) 構文を使って実装できる。具体的には、i(period, treat, 5)で交互作用項のセットを作成する。

5.2 モデルの推定

上記では、各期間について1つのtreatダミーを設定するが、参照期間として期間5を除外する。期間5は、処置の直前の期間であり、処置効果を評価するための基準点として機能する。以下のコードは、fixestパッケージを使用して二元固定効果モデルを推定する。

est_did = feols(y ~ x1 + i(period, treat, 5) 
                | id + period, 
                data = base_did)
etable(est_did)
##                                est_did
## Dependent Var.:                      y
##                                       
## x1                  0.9735*** (0.0457)
## treat x period = 1      -1.403 (1.110)
## treat x period = 2      -1.248 (1.093)
## treat x period = 3     -0.2732 (1.107)
## treat x period = 4      -1.796 (1.088)
## treat x period = 6      0.7845 (1.028)
## treat x period = 7     3.599** (1.102)
## treat x period = 8     3.812** (1.248)
## treat x period = 9    4.731*** (1.097)
## treat x period = 10   6.606*** (1.120)
## Fixed-Effects:      ------------------
## id                                 Yes
## period                             Yes
## ___________________ __________________
## S.E.: Clustered                 by: id
## Observations                     1,080
## R2                             0.54764
## Within R2                      0.38963
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

5.3 処置効果のグラフ表示

処置効果をグラフに表示するには、iplot関数を使用することができる。iplot関数 は、i() で作成された変数の係数を表示し、その係数のみを表示する。x1を含むすべての係数を表示したい場合は、代わりに coefplot 関数を使用することができる。

iplot(est_did)

6 参考文献