第7回 パネルデータ解析演習


詳細はスライド http://user.keio.ac.jp/~katayama/lecture/panel.pdf を参照してください.

7.1 パネルデータにおける因果効果の推定

必要なパッケージの読み込み.必要に応じてインストールしてください.

パネルデータ

パッケージwooldridge内のデータwagepanを読み込む.

一般的なモデル $$ Y_{it}= \delta^{T}D_{it} + \theta^{T}X_{i} + u_{i} + \varepsilon_{it},\quad i=1,\dots, N; t=1,\dots T$$

Goal : $D$から$Y$への因果効果$\require{color}\textcolor{blue}{\delta}$を推定したい

$$ \{(Y_{it}, D_{it}) : t=1,\dots, T\},\quad D_{it} = (D_{it1},\dots, D_{itK})^{T} $$ $$ Y_{i}=\begin{pmatrix} Y_{i1}\\ \vdots \\ Y_{iT} \end{pmatrix},\;\; D_{i}=\begin{pmatrix} D_{i11} & \cdots & D_{i1K}\\ \vdots & \ddots & \vdots \\ D_{iT1} & \cdots & D_{iTK} \end{pmatrix} $$

Notes

7.1.1. Fixed-effects (within) estimator

考えるモデル $$ \begin{gather*} Y_{it} = \delta^{T}D_{it} + u_{i} + \varepsilon_{it} \\ \mbox{where}\quad E(\varepsilon_{i}\,|\,D_{i}, u_{i}) = 0_{T} \end{gather*} $$

Pooled OLS $$ \hat{\delta} = {\rm arg}\min_{b}\sum_{i=1}^{N}\sum_{t=1}^{T}(Y_{it} - b^{T}D_{it})^{2} $$

Fixed-effects (within) estimator $$ \require{color} (\hat{\delta}, \hat{u}_{1},\dots, \hat{u}_{N}) = \mathop{\rm argmin}_{b,m_1,\dots, m_N}\sum_{i=1}^{N}\sum_{t=1}^{T}(Y_{it} - b^{T}D_{it} - \textcolor{blue}{m_{i}})^{2} $$

First-order conditionsから$\delta$の推定量が陽に得られる :

$$ \begin{gather*} \hat{\delta} = \bigg(\sum_{i=1}^{N}\sum_{t=1}^{T}\ddot{D}_{it}\ddot{D}_{it}^{T}\bigg)^{-1} \sum_{i=1}^{N}\sum_{t=1}^{T} \ddot{D}_{it}\ddot{Y}_{it} \\ \mbox{where}\quad \ddot{D}_{it} = D_{it} - \bar{D}_{i},\quad \ddot{Y}_{it} = Y_{it} - \bar{Y}_{i},\quad \bar{Y}_{i} = \frac{1}{T}\sum_{t=1}^{T}Y_{it},\quad \bar{D}_{i} = \frac{1}{T}\sum_{t=1}^{T}D_{it} \end{gather*} $$

7.1.2 具体的なFixed-effects estimatorの計算

最初のwagepanのデータに対して,以下のモデルを想定する :

$$ {\tt lwage}_{it} = \delta_{1}{\tt union}_{it} + \delta_{2}{\tt exper}_{it} + u_{i} + \varepsilon_{it} $$

すなわち,$Y_{it} = {\tt lwage}_{it}$, $D_{it1} = {\tt union}_{it}, D_{it2} = {\tt exper}_{it}$と考えている. まずは$\ddot{Y}_{it} = Y_{it} - \bar{Y}_{i}$および$\ddot{D}_{it}=D_{it} - \bar{D}_{i}$をR上で計算する.上記のようなロングデータから$\bar{Y}_{i} = T^{-1}\sum_{t=1}^{T}Y_{it}$などの時点平均を計算するためには,各ユニットでグループ分けした上で,時点を渡って平均を取り,それを元の$Y_{it}$から除外する必要がある.

見た目にはわからないが,上記のwage2はnrに基づいてグループ化されている.summarize関数と組み合わせると各グループにおける--この場合はユニットごとの--平均や標準偏差が計算できる.

mutate関数と組み合わせて,$\ddot{Y}_{it}$および$\ddot{D}_{it1}, \ddot{D}_{it2}$の列を新たに追加する.グループ化済みのwage2に関する処理なので,mean関数はユニットごとに計算されていることに注意.

全く同様のことは,以下のようにパイプ記号%>%を使ってもできる.ただしパッケージdplyrは必要である.次のコードは,wage3というオブジェクトに,wage1group_by関数にかけて,その後にmutate関数で処理したものを代入せよというものである.ドットの部分は省略可能だが,その部分にパイプ記号の一つ前のオブジェクトが代入されると思えばok.

これでFixed-effects estimatorを計算する準備ができた.その定義を思い出すと,

$$ \hat{\delta} = \bigg(\sum_{i=1}^{N}\sum_{t=1}^{T}\ddot{D}_{it}\ddot{D}_{it}^{T}\bigg)^{-1} \sum_{i=1}^{N}\sum_{t=1}^{T} \ddot{D}_{it}\ddot{Y}_{it} $$

である.ただし,$\ddot{D}_{it}$は一般に$K$次元ベクトルであることに注意.今回のケースでは$K=2$である.また,$nr=13$を$i=1$に,$year=1980$を$t=1$にそれぞれ対応させれば,

$$ \ddot{D}_{11} = \begin{pmatrix} -0.125 \\ -3.5 \end{pmatrix},\quad \ddot{Y}_{11}=-0.058 $$

である.以上を踏まえて$\hat{\delta}$を計算すると次のようになる. 適切にデータを作っておけば,lm関数でも計算できる.(why?)

パッケージplmを使っても計算できる.結果は一致しているはずである.結果の見方は基本的にlm関数と同様.Fixed-effects estimatorを計算したければ,withinを指定する.indexには個体IDと時点を指定する.union, experどちらも有意だが,適合度は悪い.

Exercise #7 (1)

  1. モデル ${\tt lwage}_{it} = \delta_{1}{\tt union}_{it} + \delta_{2}{\tt exper}_{it} + u_{i} + \varepsilon_{it}$において, Pooled OLSをパッケージを利用せずに計算せよ.
  2. wagepanには,1981年-1987年を表すダミー変数 d81 ~ d87も含まれている.これらを用いて,新たなモデル $$ {\tt lwage}_{it} = \delta_{1}{\tt union}_{it} + \delta_{2}{\tt exper}_{it} + \delta_{3}{\tt d82}_{it} + \delta_{4}{\tt d83}_{it}+ \cdots +\delta_{8}{\tt d87}_{it} + u_{i} + \varepsilon_{it} $$ を考え,$\delta = (\delta_{1},\dots, \delta_{9})^{T}$をfixed-effects (within) estimatorで推定せよ.
  3. ダミー変数d82 ~ d87を新たに追加することのメリットを考察せよ.
  4. ダミー変数d81をモデルに追加しなかった理由を考察せよ.

7.2 Difference-in-Differences

Settings

SUTVA

Goal : ATT,すなわち,$E\{Y_{i}^1(1) - Y_{i}^0(1)\,|\,D_{i}=1\}$の推定

Difference-in-Differences (DiD)

$$ {\rm DiD} = E\{Y(1)\,|\,D=1\}-E\{Y(0)\,|\,D=1\}-\big[E\{Y(1)\,|\,D=0\}-E\{Y(0)\,|\,D=0\}\big] $$

DiDは平行トレンド仮定

$$ E\{Y^0(1)\,|\,D=1\} - E\{Y^0(0)\,|\,D=1\} = E\{Y^0(1)\,|\,D=0\}-E\{Y^0(0)\,|\,D=0\} $$

の下で,ATTと一致する.すなわち,$\require{color}\textcolor{blue}{{\rm DiD} = {\rm ATT}}$.よってDiDを推定すればok.

具体的にデータで計算

まずはデータを読み込む.Card and Krueger (1994)による最低賃金と雇用者数に関するパネルデータを利用する.データはhttps://www.ssc.wisc.edu/~bhansen/econometrics/ より取得し,csv形式に変換している. 解析の目的は,"最低賃金を増やすと雇用は減るか"を検証するものであり, New Jersey(NJ)は1992年に最低賃金を引き上げ,Pennsylvania(PA)はそのままである. つまり,処置群がNJ,対照群がPAである.

下記の変数のみ利用する.

変数empftには欠測値(.で表されている)があるので,その店舗を削除する.その際,同一の店舗IDが2つあることに注意(beforeとafter).つまり,どちらかが欠測している場合は,両方とも削除しなければならない.

7.2.1 直接的なDiDの推定

上記で定義されたDiDのnaiveな推定量は以下となる :

$$ \widehat{\rm DiD} = \frac{1}{N_{1}}\sum_{D_{i}=1}Y_{i}(1) - \frac{1}{N_{1}}\sum_{D_{i}=1}Y_{i}(0) -\bigg[ \frac{1}{N_{0}}\sum_{D_{i}=0}Y_{i}(1) - \frac{1}{N_{0}}\sum_{D_{i}=0}Y_{i}(0) \bigg] $$

これを計算するためには,StateTimeの各組み合わせにおいてOutcomeの平均値を計算すればよい.

7.2.2 線形回帰分析による推定

線形回帰モデルでもDiDの推定が可能.

Potential outcomesに対する線形モデル

$$ \begin{align*} \begin{cases} Y_{i}^0(t) = \beta_{0} + \beta_{1}{\tt Comp}_{i} + \beta_{2}{\tt Time}_{t} + \varepsilon_{it} \\ Y_{i}^1(t) = Y_{i}^{0}(t) + \delta D_{i}(t) \end{cases} \end{align*} $$

ただし,$E(\varepsilon_{it}\,|\,D_{i}(1))=0$とする.このとき,SUTVAから,

$$ Y_{i}(t) = \beta_{0} + \beta_{1}{\tt State}_{i} + \beta_{2}{\tt Time}_{t} + \delta D_{i}(t) + \varepsilon_{it} \tag{1} $$

であり,$\require{color}\textcolor{red}{{\rm DiD} = \delta}$である(実際に計算してみよ). よってlm関数で簡単にDiDの推定ができる.

Exercise #7 (2)

式(1)を適当に変形すると,下記のようなfixed-effects (within)モデルへと変形できる.

$$ Y_{it} = \delta^{T}D_{it} + u_{i} + \varepsilon_{it} $$

ここで$\delta$および$D_{it}$はベクトルになり得る.式(1)を正しく変形し,次の問いに答えよ.

  1. 関数plmを用いてDiDの推定値を求めよ.
  2. 関数plm用いずにDiDの推定値を計算せよ.

7.3 Synthetic Control Method

パッケージtidysynthの読み込み.California's proportion 99のデータを利用する.

smokingはロング型のデータなので,ワイド型のデータに変換する.変換にはtidyrライブラリ内のpivot_wider関数を利用する.names_fromにはワイドに展開したい変数を,values_fromには展開したい値をそれぞれ指定する.

使いやすいようにdata.frame型に変形.

7.3.1 Ridge回帰によるSynthetic controlの計算

全ての期間において,Synthetic control $\sum_{i=2}^{N}w_{i}^{*}Y_{i}(t)$を計算.

全期間におけるSynthetic controlと実際のCaliforniaの売上データを比較する.

7.3.2 凸包制約付き最適化によるSynthetic controlの計算

$$ \min\sum_{k=1}^{K}v_{k}\bigg\{X_{1k} - \sum_{i=2}^{N}w_{i}X_{ik}\bigg\}^{2} \quad \mbox{subject to}\quad w_{2},\dots, w_{N} \ge 0\quad\mbox{and}\quad \sum_{i=2}^{N}w_{i}=1 $$

簡単のため$v_{k}=1$とする.solve.QP関数で制約付き最適化問題を解く.

Synthetic controlの作成には,Nevada, New Hampshire, Utah, Colorado, Montana, Connecticutのみが効いていることがわかる.おそらくこれらの州が,処置前期間においてCaliforniaのたばこ売上と近い.

同様にSynthetic controlをプロットしてみる.今度は処置前期間において過剰適合していないし,処置後においてはっきりと差が見られる.

7.3.3 Fisherの正確検定によるp値の計算

上記の処置後期間における差が偶然でないかどうかを,Fisherの正確検定を用いて検証する.

p値は次のようなステップで計算される.

  1. $N=39$州のそれぞれを仮に処置群だと想定する.
  2. 各データセット($N=39$)についてSynthetic control,すなわち,$w_{i}$の推定を行う.
  3. 処置前期間におけるMSPEをそれぞれ($N=39$)について計算. $$ MSPE_{\tt \,before} = \frac{1}{T_{0}}\sum_{t=1}^{T_{0}} \big\{Y_{1}(t) - \sum_{i=2}^{N}\hat{w}_{i}Y_{i}(t)\big\}^{2} $$
  4. 処置後期間においても同様にMSPEを計算する. $$ MSPE_{\tt \,after} = \frac{1}{T-T_{0}}\sum_{t=T_{0}+1}^{T} \big\{Y_{1}(t) - \sum_{i=2}^{N}\hat{w}_{i}Y_{i}(t)\big\}^{2} $$
  5. 比$MSPE_{\tt \,after}/MSPE_{\tt \,before}$を計算する.
  6. 計算した比を降順にソートし,CAの順位$r$を求める.
  7. 最後にp値 : $p=\frac{r}{N}$を計算する.

Exercise #7 (3)

上記をCalifornia's proportion 99のデータで実行し,CAにおけるp値を算出せよ.