suketani’s diary

個人的メモ用、どこも代表していない

Stataの固定効果のコマンド (reghdfe)

Stataで固定効果モデル (fixed effect model) を使用する際には3つのコードの候補がある。
どれを使ってもいいんだけど、実はそれぞれ少しづつ違うのです。

先に結論を述べておくと、reghdfeを使うべきであるということです。
何より便利!速い!
そしてもしかしたら一番重要かもしれないのが、xtregを使ってはいけないということです。

それではそれぞれのコマンドを説明&比較。

まず固定効果モデルを回せるコマンドを列挙しておくと:

xtreg Y X 
areg Y X
reghdfe Y X

の3つがあります。

教科書的には、xtregが固定効果モデルのコマンドということになっています。

tsset id period
xtreg Y X i.period, vce(cl id)

ただ、このコマンドは案外使いにくい。。問題は、①決定係数がbetweenのものしか吐き出してくれない、②固定効果を追加することで減少した自由度を調整せずに標準誤差を計算してしまう (ver 10以降)、③tssetで設定したもの以外の固定効果をモデルに組み込むので計算が遅い、④マルチウェイ・クラスタリング (multi-way clustering) ができない、等々。


一番大きな問題は②で、標準誤差を過小に計算してしまいかねません。また、吐き出す決定係数が凄く小さく見えてしまいます。
なので、分析においてはxtregは使わないことが賢明です。

この①と②の問題を解決してくれるのがaregコマンドだ:

areg Y X  i.period, absorb(id) vce(cl id) 

これはabsorb()内に入れた変数をカテゴリカル変数としてモデルに加えてくれるので、決定係数にはwithinとbetweenの合計が表示されます。
あと、なにより自由度の問題を補正してくれる!!Version 10以降のStataを使ってる人はこっちを使いましょう。
この点はAcemogluも指摘しており、xtregよりもaregを使用することがより望ましいと考えられます。

https://economics.mit.edu/faculty/acemoglu/data/aj2007


しかし、これにもまた問題が。。それは、マルチウェイ・クラスタリングができないという問題です。
昨今の研究の傾向から、シングルクラスタリングだけではレビュアーが納得してくれないかもしれない。。


また、固定効果をたくさん入れたいときにはaregには限界があります。たとえば、企業の固定効果と産業×年度の固定効果の両方を入れたいと考えたとき、
固定効果をコントロールするためのインディケータの数がかなり存在することが予想されます。

コマンドを回す速度を考慮すると、absorbオプションにはより数の多い固定効果を入れることが望ましいですが、
数が多い固定効果が複数存在する場合、結局いずれかはモデルに直接組み込まざるを得ません。これはaregabsorbオプションに加えることが可能なのが、1つの変数のみだからです。
上のコマンドの例では、年度の固定効果をモデルに「i.period」として加えています。


そこで以上全ての問題を解決してくれるのがreghdfeコマンドです。
これはaregを拡張したようなコマンドであり、様々な分析に応用できる極めて便利なコマンドです。


具体的には次のようにコマンドを回します:

reghdfe Y X , absorb(id period) vce(cl id period) 


これがどれほど便利なのかというと、固定効果を交差項にした場合にもabsorbオプションの中で対応可能であるという点です:

reghdfe Y X , absorb(id period industry#period) vce(cl id period) 

こうすることで産業×年度の固定効果を加えることができます。


また、このreghdfeコマンドは極めて一般的なコマンドで、操作変数法を行うこともできます。
操作変数をZ、関心変数をXとすると、次のようなコマンドを回すことで操作変数を用いた分析を行うことができます:

reghdfe Y W (X=Z) , absorb(id period) vce(cl id period) 


長々と書きましたが、つまるところreghdfeが最強ということです。