计量经济学(十七)——遗漏变量回归问题

在计量经济学和统计分析中,遗漏变量问题是一个非常常见且至关重要的问题。它发生在回归模型中,具体是由于某些重要的解释变量(自变量)未被包含在模型中,导致模型的估计结果存在偏误,最终影响到研究结论的可靠性和有效性。遗漏变量偏误的影响不仅体现在回归系数的估计偏差上,还可能对模型的预测能力和政策建议产生严重影响。例如,在研究教育水平对收入的影响时,如果忽略了工作经验这一因素,可能会误认为教育的影响比实际的更为显著。更严重的是,这种偏误可能导致错误的政策建议,进而影响决策者的决策过程。

一、遗漏变量偏误

在计量经济学中,遗漏变量偏误(Omitted Variable Bias,OVB)通常出现在回归分析中,当模型未包含一个重要的自变量或解释变量时,导致估计结果出现偏误。为了更清晰地理解这一问题,我们可以通过数学推导来分析。

1.1 线性回归模型假设

假设我们有以下的线性回归模型:

\[Y = \beta_0 + \beta_1 X + u \]

其中,$ Y $ 是因变量,$ X $ 是自变量,$ \beta_0 $ 和 $ \beta_1 $ 分别是截距项和自变量的系数,$ u $ 是误差项。

假设1:误差项 $ u $ 满足零均值,即 $ E[u|X] = 0 $,表示 $ u $ 与 $ X $ 不相关。

如果回归模型是正确设定的,这时通过最小二乘法(OLS)可以得到参数估计量 $ \hat{\beta_1} $ 的无偏性。

1.2 遗漏变量的出现

现在,假设实际上存在一个遗漏的变量 $ Z $,这个变量影响因变量 $ Y $ 且与 $ X $ 相关。我们将真实的生成过程修改为:

\[Y = \beta_0 + \beta_1 X + \beta_2 Z + \epsilon \]

其中,$ \epsilon $ 是新的误差项,包含了遗漏变量 $ Z $ 的影响。

如果我们没有将 $ Z $ 包含在模型中,而只用 $ X $ 来预测 $ Y $,那么我们忽略了 $ Z $ 对 $ Y $ 的影响,这就是遗漏变量问题。我们的模型变为:

\[Y = \beta_0 + \beta_1 X + u \]

其中,$ u $ 现在不再是单纯的误差项,而是包括了遗漏变量 $ Z $ 的影响,即 $ u = \beta_2 Z + \epsilon $。

1.3 遗漏变量偏误的数学推导

在OLS回归中,最常用的估计量是最小化误差平方和的估计值 $ \hat{\beta_1} $,其表达式为:

\[\hat{\beta_1} = \frac{\sum_{i=1}^n (X_i - \bar{X})(Y_i - \bar{Y})}{\sum_{i=1}^n (X_i - \bar{X})^2} \]

现在,我们将真实模型代入并展开:

\[\hat{\beta_1} = \frac{\sum_{i=1}^n (X_i - \bar{X})[(\beta_0 + \beta_1 X_i + \beta_2 Z_i + \epsilon_i) - \bar{Y}]}{\sum_{i=1}^n (X_i - \bar{X})^2} \]

注意到,这个表达式中包含了遗漏变量 $ Z $ 和误差项 $ \epsilon $,因此可以将其分解为:

\[\hat{\beta_1} = \beta_1 + \frac{\sum_{i=1}^n (X_i - \bar{X})(\beta_2 Z_i + \epsilon_i)}{\sum_{i=1}^n (X_i - \bar{X})^2} \]

这其中,第二项表示了由于遗漏变量 $ Z $ 而引入的偏误。我们将这一项进一步展开:

\[\hat{\beta_1} = \beta_1 + \frac{\beta_2 \sum_{i=1}^n (X_i - \bar{X}) Z_i}{\sum_{i=1}^n (X_i - \bar{X})^2} + \frac{\sum_{i=1}^n (X_i - \bar{X}) \epsilon_i}{\sum_{i=1}^n (X_i - \bar{X})^2} \]

第一个项是无偏的 $ \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 的系数不显著,可能不是遗漏变量。

总结

遗漏变量偏误的产生是由于回归模型中未包含重要的变量,这些遗漏变量可能与解释变量相关,从而影响回归系数的估计结果。通过数学推导,我们可以清晰地看到遗漏变量带来的偏误来源,并且能够理解偏误的产生条件。为了克服这一问题,可以通过引入遗漏变量、使用工具变量法、固定效应模型等方法来减小或消除遗漏变量带来的偏误,从而提高回归模型估计的准确性和可靠性。

参考资料

  1. 第9章 模型设定于数据问题
  2. 计量经济学第三次笔记(遗漏变量问题)
  3. Eviews对回归模型存在多余解释变量与遗漏重要解释变量的检验
posted @ 2025-01-19 17:51  郝hai  阅读(1624)  评论(0)    收藏  举报