计量经济学(十七)——遗漏变量回归问题
在计量经济学和统计分析中,遗漏变量问题是一个非常常见且至关重要的问题。它发生在回归模型中,具体是由于某些重要的解释变量(自变量)未被包含在模型中,导致模型的估计结果存在偏误,最终影响到研究结论的可靠性和有效性。遗漏变量偏误的影响不仅体现在回归系数的估计偏差上,还可能对模型的预测能力和政策建议产生严重影响。例如,在研究教育水平对收入的影响时,如果忽略了工作经验这一因素,可能会误认为教育的影响比实际的更为显著。更严重的是,这种偏误可能导致错误的政策建议,进而影响决策者的决策过程。
一、遗漏变量偏误
在计量经济学中,遗漏变量偏误(Omitted Variable Bias,OVB)通常出现在回归分析中,当模型未包含一个重要的自变量或解释变量时,导致估计结果出现偏误。为了更清晰地理解这一问题,我们可以通过数学推导来分析。
1.1 线性回归模型假设
假设我们有以下的线性回归模型:
其中,$ Y $ 是因变量,$ X $ 是自变量,$ \beta_0 $ 和 $ \beta_1 $ 分别是截距项和自变量的系数,$ u $ 是误差项。
假设1:误差项 $ u $ 满足零均值,即 $ E[u|X] = 0 $,表示 $ u $ 与 $ X $ 不相关。
如果回归模型是正确设定的,这时通过最小二乘法(OLS)可以得到参数估计量 $ \hat{\beta_1} $ 的无偏性。

1.2 遗漏变量的出现
现在,假设实际上存在一个遗漏的变量 $ Z $,这个变量影响因变量 $ Y $ 且与 $ X $ 相关。我们将真实的生成过程修改为:
其中,$ \epsilon $ 是新的误差项,包含了遗漏变量 $ Z $ 的影响。
如果我们没有将 $ Z $ 包含在模型中,而只用 $ X $ 来预测 $ Y $,那么我们忽略了 $ Z $ 对 $ Y $ 的影响,这就是遗漏变量问题。我们的模型变为:
其中,$ u $ 现在不再是单纯的误差项,而是包括了遗漏变量 $ Z $ 的影响,即 $ u = \beta_2 Z + \epsilon $。
1.3 遗漏变量偏误的数学推导
在OLS回归中,最常用的估计量是最小化误差平方和的估计值 $ \hat{\beta_1} $,其表达式为:
现在,我们将真实模型代入并展开:
注意到,这个表达式中包含了遗漏变量 $ Z $ 和误差项 $ \epsilon $,因此可以将其分解为:
这其中,第二项表示了由于遗漏变量 $ Z $ 而引入的偏误。我们将这一项进一步展开:
第一个项是无偏的 $ \beta_1 $,而第二项和第三项引入了偏误。我们对其进行解释:
-
第二项:
\[\frac{\beta_2 \sum_{i=1}^n (X_i - \bar{X}) Z_i}{\sum_{i=1}^n (X_i - \bar{X})^2} \]这项表示的是遗漏变量 $ Z $ 对 $ X $ 和 $ Y $ 之间关系的干扰,若 $ Z $ 与 $ X $ 相关且对 $ Y $ 有影响,则这一项会导致 $ \hat{\beta_1} $ 偏离真实的 $ \beta_1 $。
-
第三项:
\[\frac{\sum_{i=1}^n (X_i - \bar{X}) \epsilon_i}{\sum_{i=1}^n (X_i - \bar{X})^2} \]这项是由误差项 $ \epsilon $ 引起的偏误。如果 $ X $ 和 $ \epsilon $ 相关,通常会导致偏误,但由于我们假设 $ E[\epsilon|X] = 0 $,这一项理论上应该为零。
因此,遗漏变量偏误的关键在于 $ X $ 和遗漏变量 $ Z $ 之间的相关性。如果 $ X $ 和 $ Z $ 不相关,则第二项为零,回归估计不受偏误影响。
1.4 遗漏变量偏误的条件
通过以上推导,我们可以总结出遗漏变量导致偏误的条件:
-
遗漏变量 $ Z $ 与自变量 $ X $ 相关:
如果遗漏变量 $ Z $ 与 $ X $ 存在相关性,那么遗漏变量将对回归系数的估计产生影响,导致偏误。如果 $ Z $ 与 $ X $ 不相关,则不会引入偏误。 -
遗漏变量 $ Z $ 对因变量 $ Y $ 具有影响:
遗漏的变量 $ Z $ 必须对因变量 $ Y $ 产生影响,如果 $ Z $ 与因变量无关,则即使遗漏该变量,回归估计也不会出现偏误。
因此,遗漏变量偏误的条件是:遗漏变量 $ Z $ 必须同时与自变量 $ X $ 相关且与因变量 $ Y $ 相关,否则不会产生偏误。
二、遗漏变量的解决方法
2.1 遗漏变量的应对方法
针对遗漏变量问题,计量经济学提供了多种应对方法,以下列出几种常见的方法及其原理:
-
引入遗漏变量
- 直接补充变量:通过理论分析或数据挖掘,找到遗漏的变量并将其加入回归模型。
- 注意变量可得性:当数据限制解除时,利用补充数据重新估计模型。
-
工具变量法(Instrumental Variables, IV)
- 核心思想:引入一个与遗漏变量无关但与解释变量相关的工具变量,利用工具变量对解释变量进行校正。
- 适用情形:当遗漏变量与解释变量相关且直接加入变量不可行时,工具变量是一个有效替代方案。
- 示例:研究教育对收入的影响时,使用“父母教育水平”作为工具变量,可以控制未观测因素(如天赋)。
-
固定效应模型(Fixed Effects Model)
- 核心思想:通过控制个体或时间的固定效应,消除遗漏变量带来的偏误。
- 适用情形:面板数据分析中,当遗漏变量在个体内固定但跨个体变化时,固定效应模型可以有效控制这类偏误。
- 示例:在公司绩效分析中,固定效应模型可控制公司内部不变的隐性特征(如管理风格)。
-
差分法(Differencing Method)
- 核心思想:通过数据的差分处理消除遗漏变量的影响,尤其适用于时间序列数据。
- 示例:在研究政策实施效果时,使用政策实施前后数据的差分可以有效去除潜在的遗漏变量影响。
-
倾向评分匹配法(Propensity Score Matching, PSM)
- 核心思想:将样本按照一定的倾向评分进行匹配,从而在控制样本异质性的基础上消除遗漏变量的干扰。
- 适用情形:用于处理非实验数据时,控制未观测异质性因素。
-
使用代理变量(Proxy Variables)
- 核心思想:如果遗漏变量无法直接获取,可以使用与其高度相关的代理变量代替。
- 示例:用家庭收入水平代替直接无法观测的生活质量指标。
2.2 示例:教育对收入的影响
研究问题:教育水平是否显著影响个人收入水平?
-
模型设定
基础回归模型如下:\[\text{收入} = \beta_0 + \beta_1 \cdot \text{教育} + u \]其中,\(u\) 为误差项,可能包含未被模型捕获的重要变量(例如,天赋、工作经验等)。
-
遗漏变量的识别
- 未包含“工作经验”:工作经验是影响收入的重要因素,也是教育水平的潜在相关变量。
- 天赋:无法直接测量的个人能力,可能同时影响教育水平和收入水平。
-
遗漏变量导致的偏误
假设“工作经验”与教育水平正相关,且对收入有显著影响。若模型中未控制该变量,教育的回归系数 \(\beta_1\) 可能被高估。 -
克服方法
(1) 引入遗漏变量
如果可以获取“工作经验”数据,则模型扩展为:\[\text{收入} = \beta_0 + \beta_1 \cdot \text{教育} + \beta_2 \cdot \text{工作经验} + u \](2) 工具变量法
使用“父母教育水平”作为工具变量。假设“父母教育水平”与“教育水平”相关,但不直接影响“收入”,则可以通过两阶段最小二乘法(2SLS)解决偏误问题。(3) 固定效应模型
如果有多期面板数据,可以使用固定效应模型控制个体内不变的天赋特征。 -
分析结果
- 原始模型可能高估教育的作用。
- 控制工作经验或通过工具变量法后,教育的影响更加准确,体现其对收入的真实贡献。
三、应用案例
考虑以下数据(1987-2005年的北京市保险公司保费收入、北京市地区生产总值、城镇家庭平均每人可支配收入)。
| Obs | Y | X1 | X2 | X3 | Obs | Y | X1 | X2 | X3 | |
|---|---|---|---|---|---|---|---|---|---|---|
| 1987 | 4.230000 | 667.5300 | 1102.090 | 104.9000 | 1997 | 53.83000 | 6834.970 | 8157.810 | 107.0000 | |
| 1988 | 6.710000 | 846.6900 | 1320.890 | 111.2000 | 1998 | 77.27000 | 7774.530 | 8561.710 | 101.9000 | |
| 1989 | 9.480000 | 1155.370 | 1583.130 | 129.4000 | 1999 | 125.6000 | 8530.880 | 8839.700 | 98.20000 | |
| 1990 | 12.29000 | 1381.390 | 2086.210 | 122.1000 | 2000 | 140.6000 | 9250.680 | 9125.900 | 98.20000 | |
| 1991 | 15.58000 | 1471.840 | 2303.150 | 97.50000 | 2001 | 159.8000 | 10741.25 | 9761.570 | 101.4000 | |
| 1992 | 20.97000 | 1780.560 | 2752.180 | 101.2000 | 2002 | 210.9000 | 12039.25 | 10415.19 | 99.30000 | |
| 1993 | 33.52000 | 2293.540 | 3476.700 | 107.3000 | 2003 | 305.4000 | 13502.42 | 11137.20 | 98.60000 | |
| 1994 | 45.69000 | 3469.280 | 4632.370 | 121.6000 | 2004 | 388.0000 | 15844.60 | 12380.43 | 100.6000 | |
| 1995 | 37.64000 | 4619.020 | 6367.020 | 121.7000 | 2005 | 431.8000 | 18864.60 | 13627.65 | 103.0000 | |
| 1996 | 45.33000 | 5933.050 | 7438.700 | 114.0000 |
3.1 建立Y与X1、X2的模型
通过OLS得到结果的Python程序和结果。
import pandas as pd
import statsmodels.api as sm
# 创建数据,包含 X3
data = {
'Obs': [1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005],
'Y': [4.23, 6.71, 9.48, 12.29, 15.58, 20.97, 33.52, 45.69, 37.64, 45.33, 53.83, 77.27, 125.6, 140.6, 159.8, 210.9, 305.4, 388, 431.8],
'X1': [667.53, 846.69, 1155.37, 1381.39, 1471.84, 1780.56, 2293.54, 3469.28, 4619.02, 5933.05, 6834.97, 7774.53, 8530.88, 9250.68, 10741.25, 12039.25, 13502.42, 15844.6, 18864.6],
'X2': [1102.09, 1320.89, 1583.13, 2086.21, 2303.15, 2752.18, 3476.7, 4632.37, 6367.02, 7438.7, 8157.81, 8561.71, 8839.7, 9125.9, 9761.57, 10415.19, 11137.2, 12380.43, 13627.65],
'X3': [104.9, 111.2, 129.4, 122.1, 97.5, 101.2, 107.3, 121.6, 121.7, 114, 107, 101.9, 98.2, 98.2, 101.4, 99.3, 98.6, 100.6, 103]
}
# 将数据放入DataFrame
df = pd.DataFrame(data)
# 设置自变量 X 和因变量 Y,仅使用 X1 和 X2
X = df[['X1', 'X2']]
Y = df['Y']
# 添加常数项
X = sm.add_constant(X)
# 拟合回归模型
model = sm.OLS(Y, X).fit()
# 输出回归结果
print(model.summary())
OLS Regression Results
==============================================================================
Dep. Variable: Y R-squared: 0.979
Model: OLS Adj. R-squared: 0.977
Method: Least Squares F-statistic: 376.4
Date: Sun, 19 Jan 2025 Prob (F-statistic): 3.52e-14
Time: 17:24:17 Log-Likelihood: -82.469
No. Observations: 19 AIC: 170.9
Df Residuals: 16 BIC: 173.8
Df Model: 2
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 21.4803 11.625 1.848 0.083 -3.164 46.125
X1 0.0476 0.004 13.091 0.000 0.040 0.055
X2 -0.0346 0.005 -6.996 0.000 -0.045 -0.024
==============================================================================
Omnibus: 0.548 Durbin-Watson: 1.274
Prob(Omnibus): 0.760 Jarque-Bera (JB): 0.504
Skew: 0.338 Prob(JB): 0.777
Kurtosis: 2.577 Cond. No. 2.87e+04
==============================================================================
这里暂不考虑模型结果是否存在自相关、异方差等问题,仅进行操作示例。接下来考虑已经建立Y与X1、X2的回归模型中是否存在多余的不重要解释变量、是否遗漏重要的解释变量。
3.2 检验模型是否存在遗漏变量
在回归分析中,要探讨X3是否是遗漏变量(omitted variable),可以通过以下方法:
-
判断遗漏变量的影响:
- 如果遗漏了一个变量(例如X3),并且这个变量与现有模型中的自变量(X1, X2)相关,同时也影响因变量(Y),那么遗漏变量可能会引入偏差(omitted variable bias)。
- 我们可以通过比较模型包含X3和不包含X3时的回归结果,尤其是系数和显著性,来判断X3是否是遗漏变量。
-
检验方法:
- 首先建立不包含X3的回归模型,记录其结果。
- 然后建立包含X3的回归模型,比较两者结果,关注X3的系数及显著性,以及其他变量(X1,X2)系数的变化。
- 如果加入X3后,模型的调整\(R^2\)显著提高,且X3的系数显著,说明可能是一个遗漏变量。
import pandas as pd
import statsmodels.api as sm
# 创建数据,包含 X1, X2 和 X3
data = {
'Obs': [1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005],
'Y': [4.23, 6.71, 9.48, 12.29, 15.58, 20.97, 33.52, 45.69, 37.64, 45.33, 53.83, 77.27, 125.6, 140.6, 159.8, 210.9, 305.4, 388, 431.8],
'X1': [667.53, 846.69, 1155.37, 1381.39, 1471.84, 1780.56, 2293.54, 3469.28, 4619.02, 5933.05, 6834.97, 7774.53, 8530.88, 9250.68, 10741.25, 12039.25, 13502.42, 15844.6, 18864.6],
'X2': [1102.09, 1320.89, 1583.13, 2086.21, 2303.15, 2752.18, 3476.7, 4632.37, 6367.02, 7438.7, 8157.81, 8561.71, 8839.7, 9125.9, 9761.57, 10415.19, 11137.2, 12380.43, 13627.65],
'X3': [104.9, 111.2, 129.4, 122.1, 97.5, 101.2, 107.3, 121.6, 121.7, 114, 107, 101.9, 98.2, 98.2, 101.4, 99.3, 98.6, 100.6, 103]
}
# 将数据放入DataFrame
df = pd.DataFrame(data)
# 回归模型 1:不包含 X3
X_without_X3 = df[['X1', 'X2']]
Y = df['Y']
X_without_X3 = sm.add_constant(X_without_X3)
model_without_X3 = sm.OLS(Y, X_without_X3).fit()
# 回归模型 2:包含 X3
X_with_X3 = df[['X1', 'X2', 'X3']]
X_with_X3 = sm.add_constant(X_with_X3)
model_with_X3 = sm.OLS(Y, X_with_X3).fit()
# 输出两个模型的结果
print("回归模型(不包含 X3):")
print(model_without_X3.summary())
print("\n回归模型(包含 X3):")
print(model_with_X3.summary())
# 比较 R^2 和调整 R^2
print("\n模型比较:")
print(f"不包含 X3 时的 R^2: {model_without_X3.rsquared:.4f}, 调整 R^2: {model_without_X3.rsquared_adj:.4f}")
print(f"包含 X3 时的 R^2: {model_with_X3.rsquared:.4f}, 调整 R^2: {model_with_X3.rsquared_adj:.4f}")
# 比较 X1 和 X2 的系数是否变化
coef_comparison = pd.DataFrame({
"不包含 X3": model_without_X3.params,
"包含 X3": model_with_X3.params
})
print("\n变量系数比较:")
print(coef_comparison)
# 判断 X3 是否显著
X3_p_value = model_with_X3.pvalues['X3']
if X3_p_value < 0.05:
print("\nX3 的系数显著,可能是遗漏变量。")
else:
print("\nX3 的系数不显著,可能不是遗漏变量。")
OLS Regression Results
==============================================================================
Dep. Variable: Y R-squared: 0.979
Model: OLS Adj. R-squared: 0.975
Method: Least Squares F-statistic: 236.0
Date: Sun, 19 Jan 2025 Prob (F-statistic): 7.66e-13
Time: 17:48:11 Log-Likelihood: -82.439
No. Observations: 19 AIC: 172.9
Df Residuals: 15 BIC: 176.7
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 7.3269 66.816 0.110 0.914 -135.088 149.742
X1 0.0477 0.004 12.641 0.000 0.040 0.056
X2 -0.0346 0.005 -6.776 0.000 -0.045 -0.024
X3 0.1244 0.578 0.215 0.832 -1.107 1.356
==============================================================================
Omnibus: 0.535 Durbin-Watson: 1.297
Prob(Omnibus): 0.765 Jarque-Bera (JB): 0.517
Skew: 0.335 Prob(JB): 0.772
Kurtosis: 2.549 Cond. No. 1.60e+05
==============================================================================
模型比较:
不包含 X3 时的 R^2: 0.9792, 调整 R^2: 0.9766
包含 X3 时的 R^2: 0.9793, 调整 R^2: 0.9751
变量系数比较:
不包含 X3 包含 X3
X1 0.047619 0.047708
X2 -0.034630 -0.034598
X3 NaN 0.124379
const 21.480335 7.326901
X3 的系数不显著,可能不是遗漏变量。
总结
遗漏变量偏误的产生是由于回归模型中未包含重要的变量,这些遗漏变量可能与解释变量相关,从而影响回归系数的估计结果。通过数学推导,我们可以清晰地看到遗漏变量带来的偏误来源,并且能够理解偏误的产生条件。为了克服这一问题,可以通过引入遗漏变量、使用工具变量法、固定效应模型等方法来减小或消除遗漏变量带来的偏误,从而提高回归模型估计的准确性和可靠性。

浙公网安备 33010602011771号