経済学や社会科学のデータ分析において、サンプルがある特定の範囲に限定されているケースは少なくありません。
例えば、「年収が300万円以上の人のみを対象とした調査」や「テストで80点以上を取った生徒のみのデータ」などが挙げられます。
このようなデータの欠落(切断)を無視して通常の最小二乗法(OLS)を適用すると、推定値にバイアスが生じます。
本記事では、この問題を解決する「Truncated Regression(切断回帰)」について、モデルの構造から実装まで詳しく解説します。
Contents
Truncated Regression のモデル解説
そもそも「切断(Truncation)」とは?
切断とは、「従属変数 \( Y \) がある閾値(いきち)を下回る(あるいは上回る)観測値が、データセットそのものから完全に除外されている状態」を指します。
よく混同される概念に「打ち切り(Censoring / Tobitモデル)」がありますが、これらは異なるものです。
以下の違いを明確に理解しておくことが重要です。
Censored と Truncated の違い
- Censoring(打ち切り): 全サンプルの説明変数は見えるが、一部の \( Y \) が「ある値以下(または以上)」として丸められている(=ある値で置き換えられている)。
- Truncation(切断): \( Y \) がある範囲外の個体は、存在自体がデータに記録されない。
数理モデル
基本となる回帰モデルを次のように定義します。
\[ y_{i} = \mathbf{x}_{i}^{\prime} \beta + e_{i}, \quad e_{i} \mid \mathbf{x}_{i} \sim N(0, \sigma^{2}) \]
ここで、もしデータがたとえば \( y_{i} > a \)(下限 \( a \) での切断)という条件下でしか観測されない場合、観測される \( y_{i} \) の分布は通常の正規分布ではなく、切断正規分布(Truncated Normal Distribution)に従います。
切断されたデータに対して OLS を用いると、回帰直線が本来の傾きよりも緩やか(または急)になり、係数 \( \beta \) が過小・過大評価される「切断バイアス」が発生します。これを補正するのが切断回帰モデルです。
尤度関数 (likelihood function) の構成
切断回帰では、最小二乗法の代わりに最尤法(Maximum Likelihood Estimation: MLE)を用いてパラメーターを推定します。
切断分布の確率密度関数
\( y_{i} > a \) という条件下での \( y_{i} \) の条件付き確率密度関数は、通常の密度関数 \( f(y_{i}) \) を、観測される確率(累積分布関数 \( F(y_{i}) \) の補数)で割ることで得られます。
すなわち、
切断分布の確率密度関数
\[ f(y_{i} \mid y_{i} > a) = \frac{ f(y_{i}) }{ \mathrm{Pr} \left\{ y_{i} > a \right\} } \]
となります。これだけ理解しておけば、あとはすべて導けるので、ここをしっかりおさえておくのがオススメです。
正規性の仮定の下では、\[ y_{i} \mid \mathbf{x}_{i} \sim N( \mathbf{x}_{i}^{\prime} \beta, \ \sigma^{2} ) \] となりますから、標準正規分布 \( N(0,1) \) の密度関数を \( \phi \)、累積分布関数を \( \Phi \) とすると、下限 \( a \) で切断された場合の密度関数 \( f(y_{i} \mid y_{i} > a) \) は以下のようになります。
\[ f(y_{i} \mid y_{i} > a) = \frac{ \frac{1}{\sigma} \phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) }{ 1- \Phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) } \]
尤度関数と対数尤度関数
サンプルサイズ \( n \) の全観測値に対する尤度関数 \( L \) は、各個体の密度関数の積となります。
\[ L \left( \beta, \sigma \right) = \prod_{i=1}^{n} \frac{ \frac{1}{\sigma} \phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) }{ 1- \Phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) } \]
計算を容易にするため、対数をとった対数尤度関数(log-likelihood)を最大化します。
\[ \log L = \sum_{i=1}^{n} \left\{ - \log \sigma + \log \phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) - \log \left[ 1- \Phi \left( \frac{ y_{i} - \mathbf{x}_{i}^{\prime} \beta }{\sigma} \right) \right] \right\} \]
この式の第3項が、切断による影響を補正する役割を果たしています。
すなわち、第1項と第2項までだと正規性を仮定した通常の OLS の対数尤度と同じです。ですが、第3項があることで、切断を考慮した正しい推定となります。
Stata & R での実装方法
実際にデータを用いて切断回帰を行う方法を紹介します。ここでは、下限(lower limit)を ll, 上限(upper limit)を ul と表記します。
Stata での実装
Stataでは標準コマンドの truncreg を使用します。
Stata
* 下限 100 で切断されている場合
truncreg y x1 x2, ll(100)
* 上限 500 で切断されている場合
truncreg y x1 x2, ul(500)
* 両側切断の場合
truncreg y x1 x2, ll(100) ul(500)
R での実装
Rでは truncreg パッケージを利用するのが一般的です。
R
# パッケージのインストールと読み込み
install.packages("truncreg")
library(truncreg)
# モデルの推定 (下限 100 の例)
model <- truncreg(y ~ x1 + x2, data = mydata, point = 100, direction = "left")
# 結果の表示
summary(model)
まとめ
切断回帰(Truncated Regression)は、サンプルが従属変数の値に基づいて選別されている場合に必須となる手法です。
まとめ
- OLSとの違い: 切断されたデータに OLS を適用するとバイアスが生じるが、切断回帰は最尤法によってこれを補正する。
- Tobitモデルとの違い: 打ち切り(Censoring)は「見えないだけ」だが、切断(Truncation)は「データそのものがない」状態。
- 実務上の注意: 切断点(\( a \))が既知である必要があります。また、誤差項の正規性が満たされていない場合、推定結果が誤ったものになる可能性があるため、分布の仮定には注意が必要です。
分析対象となるデータがどのように収集されたのか、その背景にある「選択プロセス」を正しく理解することが、適切なモデル選びの第一歩となります。