コントロール関数
線形とプロビットモデル

 新たに追加された cfregress および cfprobit コマンドを使うと、 コントロール関数に基づく線形およびプロビットモデルを適合させることができます。 これらのモデルは、内生変数を含むモデルに対して操作変数(IV)法に代わる柔軟な代替手段を提供します。 具体的には、連続変数、二項変数、分数変数、カウント変数といったさまざまな内生変数に対応しており、 内生性の検定も容易に行うことができます。  コントロール関数モデルでは、内生的な説明変数が存在する場合でも因果関係を推定することが可能です。 まず、すべての内生変数について第1段階のモデルを適合させ、その残差を用いてコントロール関数を作成します。 次に、そのコントロール関数を主要な結果モデルに組み込むことで、内生性の影響を補正します。

 従来のIV法では、内生変数同士の相互作用の柔軟な取り扱いや、内生の二項変数、分数変数、カウント変数のモデリングが 難しいケースにおいて、コントロール関数法がしばしば利用されます。  cfregress および cfprobit コマンドは、こうしたコントロール関数モデルを適合させ、 内生変数の相互作用やモデリングに大きな柔軟性を与えるとともに、推定されたコントロール関数を考慮に入れた標準誤差も提供します。 モデル適合後は、内生性の検定も簡単に実施できます。

操作例

 例えば、各米国州ごとの平均家賃 (rent) を、平均住宅価格 (hsngval) と都市部居住率 (pcturban) を説明変数とする 関数としてモデル化したいとします。平均住宅価格は内生性の問題があると考えられるため、 世帯収入の中央値 (faminc) と地域の指標変数 (i.region) を、hsngvalの操作変数として組み入れます。 便宜上、hsngval と faminc は家賃 (rent) と同程度のスケールに再調整してあります。

 cfregress コマンドを用いると、2段階最小二乗法 (2SLS) によるIV回帰の推定結果を再現できます。 2SLSでは、第1段階の回帰から得られた予測値で内生変数を置換するのに対し、コントロール関数回帰では内生変数はそのまま残し、 第1段階の残差をコントロール関数として回帰式に追加します。

. webuse hsng
. replace hsngval = hsngval/1000
. replace faminc = faminc/1000
. cfregress rent pcturban (hsngval = faminc i.region)

 コントロール関数は、内生変数 hsngval の第 1 段階モデルから生成されたコントロール関数であるため、 cf(hsngval) として表示されます。 コントロール関数はメイン方程式に入りますが、誤差項のモデルの一部であると考えられるため、e.rent の下に表示されます。

 ただし、モデルの内生性はコントロール関数だけでなく、faminc との相互作用にも依存していると思われる場合があります。 interact() オプションを使用して、この相互作用を含めることができます。

. cfregress rent pcturban (hsngval = faminc i.region, interact(faminc))

 コントロール関数の相互作用は、cf(hsngval)#faminc としてここに含まれています。

 最初のモデルと比較して、いくつかの変更があります。pcturban の係数が 0 と異なる一方で、hsngval の係数が わずかに小さいという証拠が得られました。 また、相互作用自体の係数が 0 と異なるため、相互作用をモデルに含める必要があるという証拠もあります。

 cf(hsngval) と cf(hsngval)#faminc の結合テストは内生性の検定に相当し、 事後推定コマンド estat endogenous を使用して検定を実行できます。

. estat endogenous

 これにより、内生性の強力な証拠が得られます。ここでは従来の標準誤差を使用しましたが、estat endogenous は、 頑健かつクラスターロバストで、異分散および自己相関と整合した標準誤差を使用しても、推定後に適切な検定を実行します。

 Stata のコントロール関数回帰コマンドを使用すると、ユーザーは内生のバイナリ、分数、またはカウント変数に対して 非線形の第 1 段階モデルを指定することもできます。

 たとえば、結婚状況 (married) と雇用状況 (work) を操作変数として使用して、健康保険 (ins) の加入が 処方薬支出の対数 (lndrug) に与える影響を推定できます。

. use https://www.stata-press.com/data/r18/drugexp, clear
. cfregress lndrug age lninc (ins = married work, probit interact(ins)), mainonly(chron) vce(robust)

 ここでは、括弧内の probit オプションを使用して、第 1 段階の回帰の probit モデルを指定しています。 (括弧のセットが複数ある場合、各第 1 段階の回帰に独自のモデルがある可能性があることに注意してください。) ここでも、コントロール機能の相互作用を含め、mainonly() オプションを使用して、 メイン回帰に慢性疾患の指標 chron を含めましたが、第 1 段階には含めませんでした。 vce(robust) オプションを使用して、異分散ロバスト標準誤差を要求しました。

 偶然にも、この回帰は、内生的処置効果モデルを当てはめることに相当します ([CAUSAL] etregress の例 2 を参照)。 結果がバイナリの場合はどうでしょうか。 cfprobit コマンドは、主方程式のモデルが プロビットモデルであることを除いて、まったく同じ方法でコントロール関数モデルを適合します。 cfregresscfprobit の両方で、 1 つ以上の説明変数が内生的である大規模なモデルクラスをユーザーが柔軟に指定できます。

参考

 さらに詳しい内容につきましては、下記のマニュアルをご覧ください。

Stata is a registered trademark of StataCorp LLC, College Station, TX, USA, and the Stata logo is used with the permission of StataCorp.

page_top_icon