データ分析の書記録

読んだ本の内容って忘れてしまいますよね。このブログは分析関係の読んだ本、勉強したことの記録です。

プロビット回帰の二段階推定と逆ミルズ比(調査観察データの統計科学 5章:選択バイアスの補足)

はじめに

今回はヘックマンのプロビット選択モデル(調査観察データの統計科学5章でやってた)の二段階推定についての補足です。詳しくはリンクを。

shinomiya-note.hatenablog.com

二段階推定時の表現

プロビット選択モデルを二段階推定で表現すると

\begin{align} E(y_{i1}|y_{i2}>0) &=E(x_{i1}β_{1} | y_{i2}>0 ) + E(ε_{i1} | y_{i2}>0 ) \\ &=x_{i1}β_{1} +ρσ_{1}\frac{φ(x_{i2}β_{2})}{Φ(x_{i2}β_{2})} \end{align}

φ/Φ部分をλ:逆ミルズ比(inberse Mills' ratio)と呼びます。データが観測されるかされないかは二値データですが、そのしやすさを示す指数です。プロペンシティスコアと同じようなものですね。

逆ミルズ比を求めて二段階推定をやってみる(R)

install.packages("sampleSelection")
data(Mroz87)
Mroz87$kids <- (Mroz87$kids5 + Mroz87$kids618>0)

####################################
#同時推定
####################################
mrozml <- selection(lfp ~ age + I(age^2) + faminc + kids + educ,
                    wage ~ exper + I(exper^2) + educ + city, data=Mroz87)
summary(mrozml)

####################################
# 二段階推定(selection関数)
####################################
mrozml2step <- selection(lfp ~ age + I(age^2) + faminc + kids + educ,
                    wage ~ exper + I(exper^2) + educ + city, data=Mroz87,method="2step")
summary(mrozml2step)

####################################
# 二段階推定(glmで手動)
####################################
# 推定1段階目
mrozmlstep1 <- glm(lfp ~ age + I(age^2) + faminc + kids + educ, data=Mroz87, family = binomial(probit))
lpred <-mrozmlstep1$linear.predictors
# 逆ミルズ比を求める関数
IMR <- Vectorize( function(x) exp( dnorm(x,log=T) - pnorm(x,log.p = T) ) )
imr <- IMR(lpred)
# 推定2段階目
mrozmlstep2 <- glm(wage ~ exper + I(exper^2) + educ + city +imr, data=Mroz87 %>% mutate(imr=imr) %>% filter(wage>0))
summary(mrozmlstep2)

こんなところですかね