2026-03-14
wooldridge: データセットAER: Tobitモデル推定 tobit()survival: 打ち切り回帰 survreg()応答確率 [17.1, 17.2]: \[P(y = 1|\mathbf{x}) = G(\beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k) = G(\beta_0 + \mathbf{x\beta})\]
\(G\) は \((0,1)\) の値をとる関数:
ロジット・モデル [17.3]: \[G(z) = \frac{\exp(z)}{1 + \exp(z)} = \Lambda(z)\] (標準ロジスティック分布のCDF)
プロビット・モデル [17.4]: \[G(z) = \Phi(z) = \int_{-\infty}^{z} \phi(v)\,dv\] (標準正規分布のCDF)
潜在変数モデル [17.6]: \[y^* = \beta_0 + \mathbf{x\beta} + e, \quad y = \mathbf{1}[y^* > 0]\]
連続変数 \(x_j\) の応答確率への偏効果 [17.7]: \[\frac{\partial p(\mathbf{x})}{\partial x_j} = g(\beta_0 + \mathbf{x\beta})\beta_j, \quad g(z) \equiv \frac{dG}{dz}(z)\]
二値変数 \(x_1\) の効果 [17.8]: \[G(\beta_0 + \beta_1 + \beta_2 x_2 + \cdots + \beta_k x_k) - G(\beta_0 + \beta_2 x_2 + \cdots + \beta_k x_k)\]
対数尤度関数 [17.11]: \[\ell_i(\boldsymbol{\beta}) = y_i \log[G(\mathbf{x}_i\boldsymbol{\beta})] + (1-y_i)\log[1-G(\mathbf{x}_i\boldsymbol{\beta})]\]
\(\mathcal{L}(\boldsymbol{\beta}) = \sum_{i=1}^n \ell_i(\boldsymbol{\beta})\) を最大化 \(\Rightarrow\) MLE は一致・漸近正規・漸近効率
尤度比 (LR) 統計量 [17.12]: \[LR = 2(\mathcal{L}_{ur} - \mathcal{L}_r) \overset{a}{\sim} \chi^2_q\]
Wald統計量: 線形モデルの \(F\) 統計量に相当(計量ソフトが自動計算)
ロジット・プロビット係数の大きさは直接解釈困難 → スケール因子で調整
平均における偏効果 (PEA) [17.14]: \[g(\hat{\beta}_0 + \bar{\mathbf{x}}\hat{\boldsymbol{\beta}}) = g\!\left(\hat{\beta}_0 + \hat{\beta}_1\bar{x}_1 + \cdots + \hat{\beta}_k\bar{x}_k\right)\]
平均偏効果 (APE) / 平均限界効果 (AME) [17.15]: \[n^{-1}\sum_{i=1}^n g(\hat{\beta}_0 + \mathbf{x}_i\hat{\boldsymbol{\beta}})\]
正確な予測割合 (percent correctly predicted):
疑似 \(R^2\) (McFadden): \[1 - \mathcal{L}_{ur}/\mathcal{L}_o\]
inlf(就業参加ダミー)data(mroz)
# LPM (OLS)
res_lpm <- lm(inlf ~ nwifeinc + educ + exper + expersq +
age + kidslt6 + kidsge6, data = mroz)
# ロジット
res_logit <- glm(inlf ~ nwifeinc + educ + exper + expersq +
age + kidslt6 + kidsge6,
data = mroz, family = binomial(link = "logit"))
# プロビット
res_probit <- glm(inlf ~ nwifeinc + educ + exper + expersq +
age + kidslt6 + kidsge6,
data = mroz, family = binomial(link = "probit"))## LPM Logit Probit
## (Intercept) 0.586 0.425 0.270
## nwifeinc -0.003 -0.021 -0.012
## educ 0.038 0.221 0.131
## exper 0.039 0.206 0.123
## expersq -0.001 -0.003 -0.002
## age -0.016 -0.088 -0.053
## kidslt6 -0.262 -1.443 -0.868
## kidsge6 0.013 0.060 0.036
round(100 * c(
LPM = mean((fitted(res_lpm) >= 0.5) == mroz$inlf),
Logit = mean((fitted(res_logit) >= 0.5) == mroz$inlf),
Probit= mean((fitted(res_probit) >= 0.5) == mroz$inlf)
), 1)## LPM Logit Probit
## 73.4 73.6 73.4
L0 <- logLik(glm(inlf ~ 1, data = mroz, family = binomial))
round(c(
Logit_擬似R2 = 1 - logLik(res_logit) / L0,
Probit_擬似R2 = 1 - logLik(res_probit) / L0,
LPM_R2 = summary(res_lpm)$r.squared
), 3)## Logit_擬似R2 Probit_擬似R2 LPM_R2
## 0.220 0.221 0.264
# プロビット: g(z) = φ(z)
xb_hat <- predict(res_probit, type = "link")
ape_scale_probit <- mean(dnorm(xb_hat))
# ロジット: g(z) = Λ(z)[1-Λ(z)]
p_hat <- fitted(res_logit)
ape_scale_logit <- mean(p_hat * (1 - p_hat))
# APEスケール因子の比較
round(c(
Probit = ape_scale_probit,
Logit = ape_scale_logit
), 3)## Probit Logit
## 0.301 0.179
# 各変数のAPE比較(表17.2より educ, exper, kidslt6)
vars_ape <- c("educ", "exper", "kidslt6")
ape_tbl <- cbind(
LPM = coef(res_lpm)[vars_ape],
Logit = ape_scale_logit * coef(res_logit)[vars_ape],
Probit = ape_scale_probit * coef(res_probit)[vars_ape]
)
round(ape_tbl, 4)## LPM Logit Probit
## educ 0.0380 0.0395 0.0394
## exper 0.0395 0.0368 0.0371
## kidslt6 -0.2618 -0.2578 -0.2612
潜在変数モデル [17.18, 17.19]: \[y^* = \beta_0 + \mathbf{x\beta} + u, \quad u|\mathbf{x} \sim \text{Normal}(0, \sigma^2)\] \[y = \max(0, y^*)\]
\(y_i = 0\) の確率 [17.21]: \[P(y = 0|\mathbf{x}) = 1 - \Phi(\mathbf{x\beta}/\sigma)\]
対数尤度 [17.22]: \[\ell_i = \mathbf{1}(y_i=0)\log[1-\Phi(\mathbf{x}_i\boldsymbol{\beta}/\sigma)] + \mathbf{1}(y_i>0)\log\!\left\{\tfrac{1}{\sigma}\phi\!\left[\tfrac{y_i - \mathbf{x}_i\boldsymbol{\beta}}{\sigma}\right]\right\}\]
条件付き期待値 (\(y > 0\) のとき) [17.24]: \[E(y|y>0, \mathbf{x}) = \mathbf{x\beta} + \sigma\lambda(\mathbf{x\beta}/\sigma)\]
逆ミルズ比: \(\lambda(c) = \phi(c)/\Phi(c)\)(常に正)
無条件期待値 [17.25]: \[E(y|\mathbf{x}) = \Phi(\mathbf{x\beta}/\sigma)\mathbf{x\beta} + \sigma\phi(\mathbf{x\beta}/\sigma)\]
\(E(y|\mathbf{x})\) への偏効果 [17.30]: \[\frac{\partial E(y|\mathbf{x})}{\partial x_j} = \beta_j\,\Phi(\mathbf{x\beta}/\sigma)\]
PEAスケール因子: \(\Phi(\bar{\mathbf{x}}\hat{\boldsymbol{\beta}}/\hat{\sigma})\) - \(\hat{\beta}_j \times \Phi(\bar{\mathbf{x}}\hat{\boldsymbol{\beta}}/\hat{\sigma}) \approx \tilde{\gamma}_j\)
APEスケール因子: \(n^{-1}\sum_{i=1}^n \Phi(\mathbf{x}_i\hat{\boldsymbol{\beta}}/\hat{\sigma})\)
コーナー解では \(\sigma\) も経済的に重要(補助的パラメータではない)
# 係数とσの比較
b_ols <- c(coef(res_ols172), sigma = summary(res_ols172)$sigma)
b_tobit <- c(coef(res_tobit172)[1:8], sigma = res_tobit172$scale)
round(cbind(OLS = b_ols, Tobit = b_tobit), 2)## OLS Tobit
## (Intercept) 1330.48 965.31
## nwifeinc -3.45 -8.81
## educ 28.76 80.65
## exper 65.67 131.56
## expersq -0.70 -1.86
## age -30.51 -54.41
## kidslt6 -442.09 -894.02
## kidsge6 -32.78 -16.22
## sigma 750.18 1122.02
xb_lin <- predict(res_tobit172)
sigma_hat <- res_tobit172$scale
ape_scale_tobit <- mean(pnorm(xb_lin / sigma_hat))
cat("APEスケール因子 (Tobit):", round(ape_scale_tobit, 3), "\n")## APEスケール因子 (Tobit): 0.589
vars172 <- c("nwifeinc","educ","exper","kidslt6","kidsge6","age")
ape_tbl172 <- cbind(
Linear = coef(res_ols172)[vars172],
Tobit_APE = ape_scale_tobit * coef(res_tobit172)[vars172]
)
round(ape_tbl172, 2)## Linear Tobit_APE
## nwifeinc -3.45 -5.19
## educ 28.76 47.47
## exper 65.67 77.45
## kidslt6 -442.09 -526.28
## kidsge6 -32.78 -9.55
## age -30.51 -32.03
educ,
kidslt6)簡易チェック: 二値変数 \(w = \mathbf{1}[y > 0]\) をプロビット推定
ハードル(2部分)モデル:
カウント変数: 非負の整数値 \(\{0, 1, 2, \ldots\}\) をとる従属変数
ゼロが多い場合、OLS は適切でない
条件付き期待値を指数関数でモデル化 [17.31]: \[E(y|x_1, \ldots, x_k) = \exp(\beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k)\]
両辺の対数 [17.32]: \[\log[E(y|\mathbf{x})] = \beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k\]
\(x_j\) が1単位増加 → \(E(y|\mathbf{x})\) が約 \(100\beta_j\%\) 変化
ポアソン分布:
\[ P(y = h \mid \mathbf{x}) = \frac{\exp(-\exp(\mathbf{x}\beta))[\exp(\mathbf{x}\beta)]^{h}}{h!} \]
ポアソン対数尤度 [17.33]: \[\mathcal{L}(\boldsymbol{\beta}) = \sum_{i=1}^n \{y_i \mathbf{x}_i\boldsymbol{\beta} - \exp(\mathbf{x}_i\boldsymbol{\beta})\}\]
ポアソン分布の等分散制約 [17.34]: \[\text{Var}(y|\mathbf{x}) = E(y|\mathbf{x})\]
分散が平均に比例する仮定 [17.35]: \[\text{Var}(y|\mathbf{x}) = \sigma^2 E(y|\mathbf{x})\]
\(\sigma^2 > 1\): 過分散、\(\sigma^2 < 1\): 過少分散
一致推定量 [テキスト p.581]: \[\hat{\sigma}^2 = \frac{1}{n-k-1}\sum_{i=1}^n \frac{\hat{u}_i^2}{\hat{y}_i}\]
narr86(1986年逮捕回数)n <- nrow(crime1)
k1 <- length(coef(res_poisson))
u_hat <- residuals(res_poisson, type = "response")
y_hat <- fitted(res_poisson)
sigma2_hat <- sum(u_hat^2 / y_hat) / (n - k1)
# 過分散パラメータ σ̂²
round(sigma2_hat, 3)## [1] 1.517
## [1] 1.232
## OLS Poisson
## pcnv -0.132 -0.402
## black 0.327 0.661
Poisson回帰の係数の解釈
pcnv)が10ポイント上がると(\(\Delta pcnv = 0.10\))、逮捕回数は\(100[\exp(-0.402 \times
0.10)-1]\)より約-3.9%減少black 係数 \(0.661\):
黒人男性の期待逮捕回数は他条件一定で \(100[\exp(0.661)-1]\)より約93.6%高い| 変数 | OLS の解釈 | Poisson の解釈 |
|---|---|---|
pcnv |
有罪判決率が 10ポイント上昇すると、逮捕回数は 約-0.013回減少 | 有罪判決率が 10ポイント上昇すると、期待逮捕回数は 約-3.9%減少 |
black |
黒人男性は、他条件一定で 平均逮捕回数が約0.327回多い | 黒人男性の期待逮捕回数は、他条件一定で 約93.6%多い |
打ち切り回帰 (censored regression):
切断回帰 (truncated regression):
母集団モデル [17.36, 17.37]: \[y_i = \beta_0 + \mathbf{x}_i\boldsymbol{\beta} + u_i, \quad u_i|\mathbf{x}_i, c_i \sim \text{Normal}(0, \sigma^2)\] \[w_i = \min(y_i, c_i)\]
(\(c_i\): 打ち切り閾値; 右打ち切りの場合)
| Tobit (コーナー解) | 打ち切り回帰 | |
|---|---|---|
| ゼロの意味 | 経済的最適化の結果 | データ収集の問題 |
| \(\beta_j\) の解釈 | \(E(y^*|\mathbf{x})\) への偏効果 | \(E(y|\mathbf{x})\) への直接的効果 |
| OLS適用 | 不一致(バイアスあり) | 不一致(バイアスあり) |
| 代表例 | 年間就業時間 | 上限打ち切りされた賃金 |
cens = 1)coef_surv <- coef(res_cens)
se_surv <- sqrt(diag(vcov(res_cens)))
result174 <- cbind(`係数` = round(coef_surv, 3),
SE = round(se_surv, 3))
print(result174[1:6, ])## 係数 SE
## (Intercept) 4.099 0.348
## workprg -0.063 0.120
## priors -0.137 0.021
## tserved -0.019 0.003
## felon 0.444 0.145
## alcohol -0.635 0.144
## 係数 SE
## drugs -0.298 0.133
## black -0.543 0.117
## married 0.341 0.140
## educ 0.023 0.025
## age 0.004 0.001
## σ̂ = 1.81
priors(過去の有罪歴): \(-0.137\) → 1回増加ごとに再犯までの期間が約
\(14\%\) 短縮tserved(服役期間): \(-0.019\) → 12 ヶ月増加で約 \(22.8\%\)
短縮(抑止ではなく再犯傾向を反映)felon(重罪犯): \(0.444\) → 非重罪犯より期間が約 \(56\%\) [\(\exp(0.444)-1\)] 長いworkprg(刑務所内作業プログラム): \(-0.063\)(非有意)切断正規回帰モデル [17.40, 17.41]: \[y = \beta_0 + \mathbf{x\beta} + u, \quad u|\mathbf{x} \sim \text{Normal}(0, \sigma^2)\]
観測は \(y_i \leq c_i\) のときのみ(\(c_i\): 切断閾値)
条件付き密度: \[g(y|\mathbf{x}_i, c_i) = \frac{f(y|\mathbf{x}_i, \boldsymbol{\beta}, \sigma^2)}{F(c_i|\mathbf{x}_i, \boldsymbol{\beta}, \sigma^2)}, \quad y \leq c_i\]
非無作為標本選択: 観測されるかどうかが \(y_i\) や \(u_i\) に依存
偶発的打ち切り (incidental truncation): 別の変数の結果として \(y\) が観測されない
母集団モデル [17.42]: \[y = \beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k + u, \quad E(u|x_1, \ldots, x_k) = 0\]
選択指標 \(s_i\): \(s_i = 1\) のとき観測、\(s_i = 0\) のとき非観測
外生的標本選択 → OLS 一致: 1. \(s\) が説明変数 \(\mathbf{x}\) のみの関数 2. \(s\) が \((\mathbf{x}, u)\) と独立
内生的標本選択 → OLS 不一致: - 選択が誤差項 \(u\) に直接依存(例: 切断標本、偶発的打ち切り)
人口モデル [17.46, 17.47]: \[y = \mathbf{x\beta} + u, \quad E(u|\mathbf{x}) = 0\] \[s = \mathbf{1}[\mathbf{z\gamma} + v \geq 0]\]
仮定:
\(\rho \neq 0\) のとき、選択標本 (\(s = 1\)) での条件付き期待値 [17.48]: \[E(y|\mathbf{z}, s=1) = \mathbf{x\beta} + \rho\lambda(\mathbf{z\gamma})\]
逆ミルズ比: \(\lambda(\mathbf{z\gamma}) = \phi(\mathbf{z\gamma})/\Phi(\mathbf{z\gamma})\)
選択方程式のプロビットモデル [17.49]: \[P(s=1|\mathbf{z}) = \Phi(\mathbf{z\gamma})\]
2段階推定(Heckman, 1976):
全 \(n\) 観測でプロビット \(s_i\) on \(\mathbf{z}_i\) を推定 \(\quad\Rightarrow\hat{\boldsymbol{\gamma}} \Rightarrow \hat{\lambda}_i = \lambda(\mathbf{z}_i\hat{\boldsymbol{\gamma}})\)
選択サンプル(\(s_i = 1\))で回帰 [17.50]: \[y_i \text{ on } \mathbf{x}_i,\, \hat{\lambda}_i\]
educ, exper, expersq(428
人)inlf on 賃金変数 + nwifeinc,
age, kidslt6, kidsge6(753
人)nwifeinc, age,
kidslt6, kidsge6
(賃金提示には影響しないが就業参加には影響すると仮定)data(mroz)
# Step 1: 選択方程式のプロビット(全753人)
sel_probit <- glm(inlf ~ nwifeinc + educ + exper + expersq +
age + kidslt6 + kidsge6,
data = mroz, family = binomial(link = "probit"))
# 逆ミルズ比の計算
zg_hat <- predict(sel_probit, type = "link")
imr <- dnorm(zg_hat) / pnorm(zg_hat)
# Step 2: 選択サンプル(就業者428人)でのOLS
mroz_work <- subset(mroz, inlf == 1)
imr_work <- imr[mroz$inlf == 1]
res_heckit <- lm(lwage ~ educ + exper + expersq + imr_work,
data = mroz_work)# OLS(選択サンプルのみ)
res_ols175 <- lm(lwage ~ educ + exper + expersq, data = mroz_work)
# 係数比較
ols_vec <- c(coef(res_ols175), lambda = NA)
hec_vec <- coef(res_heckit)
names(hec_vec)[5] <- "lambda"
round(cbind(OLS = ols_vec, Heckit = hec_vec), 4)## OLS Heckit
## (Intercept) -0.5220 -0.5781
## educ 0.1075 0.1091
## exper 0.0416 0.0439
## expersq -0.0008 -0.0009
## lambda NA 0.0323
## Estimate Std. Error t value Pr(>|t|)
## 0.0323 0.1344 0.2401 0.8104
educ 係数の差は約 0.1
%ポイント未満(実質的にも差なし)| モデル | 状況 | 推定法 | R関数 |
|---|---|---|---|
| ロジット | 二値応答 | MLE | glm(..., family=binomial("logit")) |
| プロビット | 二値応答 | MLE | glm(..., family=binomial("probit")) |
| Tobit | コーナー解 | MLE | AER::tobit(..., left=0) |
| ポアソン | カウント変数 | QMLE | glm(..., family=poisson) |
| 打ち切り回帰 | 打ち切りデータ | MLE | survival::survreg() |
| Heckit | 標本選択修正 | 2段階 | 手動: プロビット + OLS |