ヘキット・モデル
(1)サンプル・セレクション・バイアス
標本から素直に推定すると、分析結果が偏ってしまう場合があります。これをサンプル・セレクション・バイアスといいます。
サンプル・セレクション・バイアスの例には、下図があります。

このとき、母集団では「Xが大きいとき、Yが大きい」という関係性があるのに、標本では「Xが大きいとき、Yが小さい」という関係性が生まれてしまっています。この状態で単回帰分析をすると、深刻なサンプル・セレクション・バイアスが発生します。
(2)ヘキット・モデル
ヘキット・モデルは、目的変数Yだけが欠落してしまったというサンプル・セレクション・バイアスに対処できるモデルです。「見えないものを見ようとする」モデルであり、個人的にとても感動したモデルです。ヘキット・モデルは、母集団では
$$Y=\beta_0+\beta_1X+u$$
でも、観測された標本では
$$Y=\beta_0+\beta_1X+\gamma 逆ミルズ比+\epsilon$$
であるモデルです。このとき、逆ミルズ比を含めて回帰しないと欠落変数バイアスが発生します。
説明不足の点は後述します。
(3)バイアスが起きる条件
サンプル・セレクションは即座にバイアスを引き起こしません。例えば、母集団が1万個、無作為に1000個抽出した場合、バイアスは発生しません。いわゆる「無作為抽出」だからです。無作為抽出は、バイアスを産まないサンプル・セレクションの最も有名な例です。
問題は「どのような場合にサンプル・セレクションが推定結果を歪める(=バイアスを引き起こす)のか?」になります。
ヘキット・モデルによれば、γ≠0のとき、サンプルのみで分析すると、バイアスが発生します。逆ミルズ比が欠落変数となるからです。
$$Y_{観測有}=\beta_0+\beta_1X+\gamma 逆ミルズ比+\epsilon$$
したがって、「サンプル・セレクション・バイアスがある」とは、「γについてt検定し、帰無仮説γ=0が棄却され、対立仮説γ≠0が採択された場合」と言えます。
(4)逆ミルズ比
逆ミルズ比とは、確率密度÷累積分布で表されるものです。ただし、ヘキット・モデルでは、標準正規分布に従うvがc以上のときのvの期待値を、逆ミルズ比を捉えてもらって構いません。
$$v 〜 N(0,1)$$
$$逆ミルズ比=E( v|v≧c)$$
例えば、c=-1のとき、-1以下の値を取らないvの分布は赤になります。計算すると、このときの逆ミルズ比は約0.288になります。

c=0.5のとき、0.5以下の値を取らないvの分布は赤になります。計算すると、このときの逆ミルズ比は約1.141になります。

なお、ヘキット・モデルにおける逆ミルズ比は
$$逆ミルズ比=E( v|v≧c)=\frac{\phi(c)}{1-\Phi(c)}$$
$$\phi(c):v=cにおける標準正規分布の確率密度$$
$$\Phi(c):v=cまでの標準正規分布の累積分布$$
です。
潜在変数モデル
ヘキット・モデルは、線形回帰モデルとプロビット・モデルが合わさったモデルです。したがって、一部を潜在変数モデルで解釈するとわかりやすいです。
(1)母集団でのモデル
実際の現象は
$$Y=\beta_0+\beta_1X+u$$
です。ただし
$$Y:目的変数、X:説明変数、u:誤差項$$
$$\beta_0,\beta_1:構造式の回帰係数$$
$$E(u|X)=0$$
です。これを構造式といいます。
(2)サンプル・セレクション
観測される場合をS=1、されない場合をS=0と考えます。そして、
$$S^*≧0 ならば S=1$$
$$S^*<0 ならば S=0$$
とします。ヘキット・モデルでは、サンプル・セレクションに関わる潜在変数S*は次に従います。
$$S^*= \delta_0+\delta_1X +\delta_2 Z+v$$
ただし
$$ Z:セレクションにのみ関わる変数,v:誤差項$$
$$\delta_0,\delta_1,\delta_2:セレクション式の回帰係数$$
$$E(v|X)=0$$
です。これをセレクション式といいます。
また、ヘキット・モデルでは、誤差項vが標準正規分布が成り立っていると仮定します。
$$v 〜 N(0,1)$$
つまり、セレクション式はプロビット・モデルと同じです。
(3)標本でのモデル
結論を言えば、観測されるYは
$$Y_{観測有}=\beta_0+\beta_1X+\gamma E( v|v≧c)+\epsilon$$
になります。ただし、誤差項uとvが相関すること
$$E(u_i|v_i)=\gamma v_i$$
を追加的に仮定しており、cは
$$c=-(\delta_0+\delta_1X +\delta_2 Z)$$
です。また、E( v|v≧c)は逆ミルズ比といい、標準正規分布に従うvがc以上のときのvの期待値です。
$$逆ミルズ比=E( v|v≧c)=\frac{\phi(c)}{1-\Phi(c)}$$
(4)なぜ逆ミルズ比が出てくる?
観測されるYの期待値が
$$E(Y|X,S=1) = \beta_0+\beta_1X+\gamma E( v|v≧c)$$
であることを説明します。まず、X、S=1のときのYの条件付き期待値は
$$E(Y|X,S=1) = \beta_0+\beta_X+E(u|X, S=1)$$
uとXは独立なので
$$E(Y|X,S=1) = \beta_0+\beta_X+E(u|S=1)$$
S=1の条件を潜在変数モデルにしたがって言い換えると
$$=\beta_0+\beta_1X+E(u| \delta_0+\delta_1X +\delta_2 Z+v≧0)$$
移項して
$$=\beta_0+\beta_1X+E(u| v≧-\delta_0-\delta_1X -\delta_2 Z)$$
誤差項vの条件がついたuの期待値はγvと仮定しており、vにも条件がついていることを考慮すると
$$=\beta_0+\beta_1X+\gamma E( v| v≧-\delta_0-\delta_1X -\delta_2 Z)$$
です。ここで
$$c=-\delta_0-\delta_1X -\delta_2 Z$$
とおくと
$$=\beta_0+\beta_1X+\gamma E( v|v≧c)$$
になります。この最後の項が逆ミルズ比です。
最後に逆ミルズ比がでてくるのは、サンプル・セレクションによってXと相関する誤差項が生まれてしまったからです。相関する誤差項を取り除いた新しい誤差項がεです。
$$Y_{観測有}=\beta_0+\beta_1X+\gamma E( v|v≧c)+\epsilon$$
Yの予測
母集団でのYの期待値は
$$E(Y|X)=\beta_0+\beta_1X$$
です。ただし、標本でのYの期待値は
$$E(Y|X,S=1)=\beta_0+\beta_1X+\gamma E( v|v≧c)$$
$$c=-\delta_0-\delta_1X -\delta_2 Z$$
です。
X→Yの効果
Xが微小1単位大きいと、Yが平均的に大きい量を、限界効果といいます。
$$限界効果=\frac{d E(Y|X)}{d X}$$
母集団にて説明変数Xが目的変数Xに与える限界効果は、β1です。なお、サンプル・セレクション・バイアスがあるので
$$\frac{d E(Y|X,S=1)}{d X}≠\beta_1$$
なことに注意してください。
なお、この限界効果を因果関係と解釈するには、統計的因果推論の考え方が必要で留保すべきです。
Rコード
(1)ヘキット・モデル
#パッケージのインストールと呼び出し
install.packages("sampleSelection") #PCにつき1回やればよい
library(sampleSelection)
#ヘックマンの2段階推定
lm0 <- heckit(s ~ x + z, #セレクション式
y ~ x, #構造式
method = "2step", #2段階推定
data=?) #データ「?」を使う
summary(lm00)
#最尤法
lm00 <- heckit(s ~ x + z, #セレクション式
y ~ x, #構造式
method = "mls", #最尤法
data=?) #データ「?」を使う
summary(lm00)
(2)パッケージ:truncorm
作図では、打ち切り標準正規分布に関するパッケージを用います。↓
#パッケージのインストール
install.packages("truncnorm")
#パッケージの呼び出し
library(truncnorm)
主な関数はこれです。↓
#母平均0、標準偏差1の正規分布を、aからbまでに限定したときの、xにおける確率密度を求める関数
dtruncnorm(x, a=-Inf, b=Inf, mean = 0, sd = 1)
#上の累積分布バージョン
ptruncnorm(x, a=-Inf, b=Inf, mean = 0, sd = 1)
説明書はこちら→truncnorm: The Truncated Normal Distribution
(3)作図
#打ち切り点を-1に設定
c <- -1
#-5から5の間に1000個の連続する数字を作成
x <- seq(-5,5,length=1000)
#標準正規分布の確率密度を描画
plot(x, dnorm(x, mean=0, sd=1), #横軸にx、縦軸に標準正規分布の確率密度
type="l", #折れ線グラフ
lwd=2, #線の太さを2
xlim=c(-4,4), #横軸を-4から4に
ylim=c(0,0.5), #縦軸を0から0.5に
xaxp=c(-4,4,8)) #横軸を-4から4までを8つに分けて目盛りをつける
#打ち切り標準正規分布の確率密度を描画
lines(x, dtruncnorm(x, a=c, mean=0, sd=1), type="l", col="red",lwd=2)
#逆ミルズ比を求める
M <- dnorm(c,mean=0,sd=1)/(1-pnorm(c,mean=0,sd=1))
#逆ミルズ比を描画
abline(v=M,col="blue",lwd=2)
#打ち切り点を0.5に設定
c <- 0.5
x <- seq(-5,5,length=1000)
plot(x, dnorm(x, mean=0, sd=1),
type="l",
lwd=2,
xlim=c(-4,4),
ylim=c(0,1.5),
xaxp=c(-4,4,8))
lines(x, dtruncnorm(x, a=c, mean=0, sd=1), type="l", col="red",lwd=2)
M <- dnorm(c,mean=0,sd=1)/(1-pnorm(c,mean=0,sd=1))
abline(v=M,col="blue",lwd=2)
カテゴリー