计量经济学(十二)——虚拟变量回归模型
虚拟变量回归(Dummy Variable Regression)是处理分类变量的标准工具,在回归分析中具有广泛应用。分类变量通常是定性变量,例如性别(男/女)、地区(东/西)、行业(制造/服务)等。这些变量无法直接用于传统的线性回归模型中,但可以通过创建虚拟变量将它们转化为数值形式,从而纳入模型。虚拟变量回归中有两种常见的模型类型:加法模型和乘法模型。在加法模型中,虚拟变量直接添加到回归方程中,其系数代表某个类别对因变量的平均影响。比如在性别对工资的研究中,性别虚拟变量的系数可以反映女性相对于男性的平均工资差异。在乘法模型中,虚拟变量和其他连续变量的乘积项构成了交互项,用于估计不同类别与其他变量的交互效应。这使我们能够研究诸如“性别如何调节教育年限对工资的影响”这样更复杂的关系。这种方法广泛应用于社会科学、经济学等领域,有助于揭示不同类别对被解释变量的差异性影响。
一、虚拟变量回归模型
在构建回归模型时,如果自变量X为连续性变量,回归系数β可以解释为:在其他自变量不变的条件下,X每改变一个单位,所引起的因变量Y的平均变化量;如果自变量X为二分类变量,例如是否饮酒(1=是,0=否),则回归系数β可以解释为:其他自变量不变的条件下,X=1(饮酒者)与X=0(不饮酒者)相比,所引起的因变量Y的平均变化量。但是,当自变量X为多分类变量时,例如职业、学历、血型、疾病严重程度等等,此时仅用一个回归系数来解释多分类变量之间的变化关系,及其对因变量的影响,就显得太不理想。此时,我们通常会将原始的多分类变量转化为哑变量,每个哑变量只代表某两个级别或若干个级别间的差异,通过构建回归模型,每一个哑变量都能得出一个估计的回归系数,从而使得回归的结果更易于解释,更具有实际意义。
哑变量(Dummy Variable),又称为虚拟变量、虚设变量或名义变量,从名称上看就知道,它是人为虚设的变量,通常取值为0或1,来反映某个变量的不同属性。对于有n个分类属性的自变量,通常需要选取1个分类作为参照,因此可以产生n-1个哑变量。将哑变量引入回归模型,虽然使模型变得较为复杂,但可以更直观地反映出该自变量的不同属性对于因变量的影响,提高了模型的精度和准确度。
加法模型——截距变 | 乘法模型——斜率变 | 结合模型——截距和斜率都变 |
---|---|---|
1.1 加法模型
加法模型将分类变量直接转换为虚拟变量并添加到回归方程中。其目的是观察分类变量(例如性别、地区、教育水平等)对被解释变量(如收入、价格等)的线性影响。假设我们有一个虚拟变量 \(D\),它表示两个类别中的一个,例如,\(D=1\) 代表女性,\(D=0\) 代表男性。假设我们还考虑了其他连续变量,如受教育年数 \(educ\) 和工作经验 \(exper\)。加法模型的形式为:
其中:
- \(Y\) 是被解释变量(如工资);
- \(β0\) 是截距,表示男性(即 \(D=0\))的基准工资;
- \(β1\) 是性别虚拟变量的系数,它表示女性相对于男性的工资差异;
- \(β2\) 和 \(β3\) 分别是受教育年数和工作经验的系数,表示这两个连续变量对工资的影响;
- \(ε\) 是误差项。
在这个模型中,如果 \(β1<0\),则表明女性的工资低于男性。这种方式通过虚拟变量将分类变量的影响线性添加到模型中。因此,虚拟变量的估计值代表了特定类别对被解释变量的平均效应。
我们可以扩展这个模型来处理多个类别的情况。例如,如果有多个地区,我们可以为每个地区建立一个虚拟变量组。这时,模型的结构为:
其中 \(D1, D2, …, Dk\) 是代表不同地区的虚拟变量,而 \(X1, …, Xn\) 是其他连续变量。我们需要注意的是,必须舍弃一个类别的虚拟变量,以避免虚拟变量陷阱(dummy variable trap),即完全共线性问题。
1.2 乘法模型(交互模型)
乘法模型,也称为交互模型,通过虚拟变量与连续变量的乘积项,估计不同类别对其他变量的交互影响。该模型不仅考虑类别对被解释变量的影响,还考虑类别与其他变量之间的相互作用。
假设我们想研究性别与受教育年数之间的交互作用。可以构造一个交互项 \(D×educ\),即虚拟变量与连续变量的乘积项。乘法模型的形式为:
其中,\(β4\) 表示性别与受教育年数的交互效应。换句话说,\(β4\) 告诉我们女性与男性相比,受教育年数对工资的影响是否不同。如果 \(β4≠0\),则表明存在显著的交互效应。
我们可以通过乘法模型来估计虚拟变量与多个连续变量的交互效应。例如,如果我们还想研究性别与工作经验的交互作用,模型可以扩展为:
在这个模型中,\(β4\) 表示性别与受教育年数的交互作用,\(β5\) 表示性别与工作经验的交互作用。通过这些交互项,我们能够更全面地了解不同类别在不同条件下对被解释变量的影响。
二、回归参数估计与检验
在虚拟变量回归(Dummy Variable Regression)中,估计和假设检验是非常关键的步骤。无论是加法模型还是乘法模型,估计虚拟变量系数以及检验其显著性,都能够为分类数据的分析提供强有力的工具。下面将详细介绍虚拟变量回归中关于系数估计、假设检验和模型选择的详细过程,并扩展相关统计量的使用。
2.1 系数的估计
在虚拟变量回归模型中,无论是加法模型还是乘法模型,最常用的估计方法是最小二乘法(OLS,Ordinary Least Squares)。OLS通过最小化残差平方和来估计每个回归系数,使得模型对数据的拟合达到最佳状态。OLS估计有以下几个步骤:
- 最小化残差平方和:对于每一个观测数据,OLS通过最小化实际值与预测值的平方差,确保模型尽可能贴合数据。虚拟变量回归中,虚拟变量的系数通过OLS估计来反映不同类别对被解释变量的影响。
- 加法模型中的系数解释:加法模型中的虚拟变量系数直接反映了类别效应。例如,假设模型为:\[y_i = \beta_0 + \beta_1 D_1 + \beta_2 X_1 + \epsilon_i \]其中,\(D_1\)是一个虚拟变量,表示某个类别(如性别、地区等)。此时,\(\beta_1\) 表示虚拟变量类别1对被解释变量$y_i $的平均影响。
- 乘法模型中的系数解释:在乘法模型中,虚拟变量与其他解释变量的乘积项代表交互效应。例如,模型为:\[y_i = \beta_0 + \beta_1 D_1 + \beta_2 X_1 + \beta_3 D_1 \times X_1 + \epsilon_i \]此时,\(\beta_3\)表示类别1与\(X_1\)变量之间的交互效应,意味着类别1对\(X_1\)对\(y_i\)的影响方式不同于其他类别。
- OLS估计公式:OLS估计回归系数的公式为:\[\hat{\beta} = (X'X)^{-1} X'Y \]其中,\(X\)是解释变量矩阵,\(Y\)是被解释变量向量,\(\hat{\beta}\)是系数的估计值。
2.2 假设检验
虚拟变量回归中的假设检验旨在验证模型中的系数是否显著不同于零,这可以通过 t 检验和 F 检验来完成。
- t检验
t检验用于检验每个回归系数的显著性。假设检验的原假设为该系数等于零,即虚拟变量或交互项对被解释变量没有显著影响。t检验的统计量公式为:
其中,\(\hat{\beta}_i\)是回归系数的估计值,\(SE(\hat{\beta}_i)\)是该系数的标准误差。根据这个统计量,我们可以计算\(p\)值。如果\(p\)值小于显著性水平(通常为0.05),我们就可以拒绝原假设,认为该系数显著不为零。
- F检验
F检验通常用于检验多个回归系数的联合显著性。它可以用于虚拟变量组的联合显著性检验,或者在乘法模型中检验所有交互项的联合显著性。F检验的统计量计算公式为:
其中,( RSS_r ) 是受约束模型的残差平方和,( RSS_{ur} ) 是无约束模型的残差平方和,( q ) 是受约束模型的约束个数,( n ) 是样本数,( k ) 是无约束模型的解释变量个数。F检验可以用来判断虚拟变量组是否对模型有显著贡献。
- p值和显著性水平
无论是 t 检验还是 F 检验,检验结果的显著性都通过 p 值衡量。p 值表示在原假设为真的情况下,观测到当前数据的概率。如果 p 值小于设定的显著性水平(通常为0.05),则我们认为该回归系数或虚拟变量组对模型有显著影响。
2.3 模型选择与解释
在虚拟变量回归模型中,模型选择至关重要。我们可以通过调整后的R²(Adjusted R²)和AIC、BIC等信息准则来评估模型的拟合优度。
- 加法模型的应用
加法模型适用于分析类别变量的独立效应。该模型直接估计不同类别对被解释变量的平均影响。适用场景包括性别、地区、行业等分类变量的回归分析。例如,我们可以通过加法模型来分析男性与女性之间工资差异的平均水平。 - 3.2 乘法模型的应用
乘法模型适用于研究类别变量与连续变量之间的交互效应。该模型能够揭示不同类别如何影响其他解释变量对因变量的影响。例如,通过性别与教育年限的交互项,可以研究性别是否改变教育对工资的影响。 - 模型的优选与解释力
通过调整后的R²,我们可以评估模型的解释力。调整后的R²修正了解释变量个数对模型拟合优度的影响,能够更好地衡量模型的真实表现。如果乘法模型的交互项显著提高了调整后的R²,说明交互效应对解释因变量的变动具有重要贡献。
此外,信息准则如AIC和BIC也常用于模型的选择。较小的AIC或BIC值表示模型更优。
虚拟变量回归提供了灵活处理分类变量的工具。加法模型可以捕捉类别的平均效应,而乘法模型则能研究交互效应的复杂关系。通过t检验和F检验,我们能够判断虚拟变量及交互项的显著性,并结合调整后的R²等准则进行模型选择。
三、虚拟变量回归中存在的问题
虚拟变量回归(Dummy Variable Regression)作为一种处理分类变量的回归方法,具有广泛的应用,但同时也面临一些问题和挑战。随着统计方法的不断发展,虚拟变量回归在理论和应用上也经历了诸多改进和扩展。
多重共线性问题
在虚拟变量回归中,多重共线性(Multicollinearity)是一个常见问题。多重共线性指的是当回归模型中解释变量高度相关时,回归系数的估计值不稳定,导致回归模型难以准确估计系数的真实影响。在虚拟变量回归中,如果多个虚拟变量互相相关,模型中的系数估计值可能会非常敏感,导致解释困难。解决方法通常是删除其中的一个虚拟变量或通过正则化技术(如岭回归)来降低共线性的影响。
虚拟变量陷阱(Dummy Variable Trap)
虚拟变量回归中还存在所谓的虚拟变量陷阱(Dummy Variable Trap),即当所有类别的虚拟变量都被包含在回归方程中时,会导致模型出现完全共线性,从而无法估计回归系数。这是由于虚拟变量之间的线性相关性。例如,假设我们有三个类别\(A,B,C\),如果我们引入三个虚拟变量来表示这些类别,那么它们之间必然存在线性关系:\(A+B+C=1\)。为避免虚拟变量陷阱,我们通常会将其中一个类别作为基准类别,不在模型中显式加入该类别的虚拟变量。
交互项的复杂性
在虚拟变量回归的乘法模型中,虚拟变量与连续变量的交互项能够捕捉复杂的交互效应。然而,随着模型中的交互项增多,模型的解释难度也随之增加。高维交互效应可能会导致模型变得过于复杂,进而引发过拟合问题。为避免此类问题,研究者可以使用模型选择准则(如AIC或BIC)来确定最优的模型复杂度,或者使用正则化方法来控制过拟合的风险。
非线性问题
虚拟变量回归通常假设类别对被解释变量的影响是线性的。然而,在许多实际应用中,类别变量对被解释变量的影响并不是线性关系。例如,性别对工资的影响可能随年龄变化呈现非线性关系。为应对非线性问题,研究者可以引入非线性模型(如逻辑回归或多项式回归)或者通过其他非线性变换对虚拟变量进行处理。
异方差性
异方差性是回归模型中常见的问题,尤其是在虚拟变量回归中,不同类别可能具有不同的方差。例如,男性和女性的收入分布可能不同,这导致虚拟变量回归模型中存在异方差性。异方差性会使得OLS估计不再是最优估计,标准误差的估计值也可能不准确,从而影响统计检验的结果。解决异方差性问题的一个常用方法是使用异方差一致标准误差(如白皮书标准误差,White's standard errors),从而获得更加稳健的系数估计。
模型的选择与复杂度权衡
在模型选择方面,虚拟变量回归模型可能会面临过度拟合与欠拟合之间的权衡问题。过多的虚拟变量和交互项可能导致模型过于复杂,难以解释和推广;而过少的虚拟变量则可能遗漏重要的类别效应。为此,模型选择准则(如AIC、BIC)以及交叉验证技术被广泛用于寻找最佳的平衡点。研究者需要根据具体的研究问题和数据特点,合理选择虚拟变量和交互项,以获得既简洁又具有良好解释力的模型。
时间序列中的虚拟变量
在时间序列分析中,虚拟变量常用于表示特定事件的发生或不同时间段之间的效应差异。例如,金融危机或政策变动可以通过引入虚拟变量来捕捉其对经济指标的影响。然而,在时间序列回归中,虚拟变量的使用需要特别小心,以避免因虚拟变量的引入导致时间序列自相关结构的忽略。因此,虚拟变量在时间序列中的使用往往伴随着更加复杂的动态模型(如ARIMA模型)以确保模型的动态特性得到合理刻画。
未来发展方向
随着大数据和机器学习的发展,虚拟变量回归的应用也在不断扩展。例如,在高维数据分析中,虚拟变量的处理变得更加复杂,传统的回归方法可能无法处理大量的类别变量。为此,研究者开发了诸如Lasso回归、树模型等新型方法来处理虚拟变量,尤其是在高维数据中具有显著优势。此外,随着贝叶斯统计方法的普及,虚拟变量回归也开始应用贝叶斯估计方法来处理小样本或不确定性较大的数据。
四、案例分析1
某调查机构收集的教育年限educ、工作年限exper、性别gender和工资wage的数据,如下表所示。试建立回归方程,考察性别对工资的影响。
ID | educ | exper | gender | wage | ID | educ | exper | gender | wage |
---|---|---|---|---|---|---|---|---|---|
0 | 16 | 25 | 0 | 9.11 | 15 | 14 | 9 | 1 | 5.54 |
1 | 13 | 3 | 1 | 6.23 | 16 | 11 | 26 | 1 | 4.74 |
2 | 17 | 5 | 1 | 7.51 | 17 | 17 | 21 | 1 | 7.77 |
3 | 14 | 19 | 1 | 5.76 | 18 | 15 | 2 | 1 | 5.59 |
4 | 16 | 7 | 1 | 5.00 | 19 | 11 | 20 | 1 | 5.06 |
5 | 19 | 21 | 1 | 9.45 | 20 | 14 | 28 | 1 | 5.69 |
6 | 12 | 9 | 1 | 3.33 | 21 | 10 | 15 | 1 | 2.38 |
7 | 16 | 7 | 1 | 6.00 | 22 | 19 | 28 | 0 | 11.95 |
8 | 17 | 18 | 1 | 7.40 | 23 | 15 | 7 | 1 | 7.14 |
9 | 14 | 4 | 1 | 4.94 | 24 | 18 | 12 | 0 | 8.09 |
10 | 13 | 25 | 1 | 3.69 | 25 | 10 | 29 | 1 | 4.21 |
11 | 17 | 28 | 1 | 6.94 | 26 | 19 | 8 | 1 | 6.30 |
12 | 17 | 14 | 0 | 10.05 | 27 | 12 | 15 | 0 | 7.22 |
13 | 12 | 18 | 0 | 6.92 | 28 | 16 | 3 | 1 | 5.46 |
14 | 15 | 26 | 1 | 7.18 | 29 | 13 | 14 | 0 | 7.50 |
import numpy as np
import pandas as pd
import statsmodels.api as sm
# 随机生成数据
np.random.seed(42) # 设置随机种子
n = 30 # 样本大小
# 生成教育年数(educ),工作经验(exper)和性别(gender,1为女性,0为男性)
educ = np.random.randint(10, 20, size=n) # 教育年数(10-20年)
exper = np.random.randint(1, 30, size=n) # 工作经验(1-30年)
gender = np.random.randint(0, 2, size=n) # 性别(0=男性,1=女性)
# 假设工资(wage)与教育年数、工作经验、性别之间存在关系(加噪音)
wage = -1.5 + 0.6 * educ + 0.03 * exper - 1.8 * gender + np.random.normal(0, 1, size=n)
# 构建数据框
data = pd.DataFrame({
'educ': educ,
'exper': exper,
'gender': gender,
'wage': wage
})
# 显示数据
print(data.head())
# 构建回归模型——加法模型(教育年数、工作经验、性别)
X_add = sm.add_constant(data[['educ', 'exper', 'gender']]) # 加入常数项
model_add = sm.OLS(data['wage'], X_add).fit()
# 输出回归结果——加法模型
print("加法模型回归结果:")
print(model_add.summary())
# 构建乘法模型,加入交互项(教育年数 * 性别)
data['educ_gender'] = data['educ'] * data['gender'] # 交互项:教育年数 * 性别
X_mult = sm.add_constant(data[['educ', 'exper', 'gender', 'educ_gender']]) # 加入常数项
model_mult = sm.OLS(data['wage'], X_mult).fit()
# 输出回归结果——乘法模型
print("乘法模型回归结果:")
print(model_mult.summary())
# 输出加法模型的回归方程
print("\n加法模型回归方程:")
print(f'wage = {model_add.params[0]:.2f} + {model_add.params[1]:.2f}*educ + {model_add.params[2]:.2f}*exper + {model_add.params[3]:.2f}*gender')
# 输出乘法模型的回归方程
print("\n乘法模型回归方程:")
print(f'wage = {model_mult.params[0]:.2f} + {model_mult.params[1]:.2f}*educ + {model_mult.params[2]:.2f}*exper + {model_mult.params[3]:.2f}*gender + {model_mult.params[4]:.2f}*educ*gender')
加法模型回归结果:
OLS Regression Results
==============================================================================
Dep. Variable: wage R-squared: 0.810
Model: OLS Adj. R-squared: 0.788
Method: Least Squares F-statistic: 36.85
Date: Sat, 19 Oct 2024 Prob (F-statistic): 1.64e-09
Time: 07:40:41 Log-Likelihood: -38.610
No. Observations: 30 AIC: 85.22
Df Residuals: 26 BIC: 90.83
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 0.1020 1.183 0.086 0.932 -2.329 2.533
educ 0.5113 0.067 7.641 0.000 0.374 0.649
exper 0.0430 0.020 2.131 0.043 0.002 0.084
gender -2.3889 0.415 -5.752 0.000 -3.243 -1.535
==============================================================================
Omnibus: 0.505 Durbin-Watson: 2.266
Prob(Omnibus): 0.777 Jarque-Bera (JB): 0.588
Skew: -0.265 Prob(JB): 0.745
Kurtosis: 2.565 Cond. No. 156.
==============================================================================
乘法模型回归结果:
OLS Regression Results
==============================================================================
Dep. Variable: wage R-squared: 0.810
Model: OLS Adj. R-squared: 0.780
Method: Least Squares F-statistic: 26.65
Date: Sat, 19 Oct 2024 Prob (F-statistic): 1.07e-08
Time: 07:40:41 Log-Likelihood: -38.573
No. Observations: 30 AIC: 87.15
Df Residuals: 25 BIC: 94.15
Df Model: 4
Covariance Type: nonrobust
===============================================================================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------------------------------------
const 0.5269 2.080 0.253 0.802 -3.758 4.812
educ 0.4823 0.135 3.583 0.001 0.205 0.759
exper 0.0441 0.021 2.099 0.046 0.001 0.087
gender -2.9842 2.414 -1.236 0.228 -7.956 1.988
educ_gender 0.0397 0.158 0.250 0.804 -0.287 0.366
==============================================================================
Omnibus: 0.351 Durbin-Watson: 2.239
Prob(Omnibus): 0.839 Jarque-Bera (JB): 0.485
Skew: -0.211 Prob(JB): 0.785
Kurtosis: 2.542 Cond. No. 437.
==============================================================================
加法模型回归方程:
乘法模型回归方程:
在加法模型 和 乘法模型回归结果中,主要反映了教育年数(educ)、工作经验(exper)和性别(gender)对工资(wage)的影响。下面对结果进行分析解释。
加法模型回归结果解释。
回归方程:
wage = 0.10 + 0.51educ + 0.04exper - 2.39*gender
系数解释:
const (截距):常数项为 0.10,表示当 educ、exper 和 gender 为 0 时的预期工资。
educ 的系数为 0.51,表示教育年数每增加一年,工资将增加 0.51 单位。
exper 的系数为 0.04,表示工作经验每增加一年,工资将增加 0.04 单位。
gender 的系数为 -2.39,表示性别为女性(gender=1)时,相对于男性(gender=0),工资平均减少 2.39 个单位。
模型统计量:
R-squared 为 0.810,表明模型解释了 81% 的工资波动。
F-statistic 为 36.85,且 p 值接近 0(1.64e-09),说明整体模型显著。
各系数的 t 值与 p 值:
educ 和 exper 的系数 p 值都很小,说明它们显著不同于 0,对工资具有显著影响。性别的系数 t 值也很大,p 值为 0,表明性别对工资的负面影响显著。
乘法模型回归结果解释。
回归方程:
wage = 0.53 + 0.48educ + 0.04exper - 2.98gender + 0.04educ*gender
系数解释:
educ 和 exper 的系数与加法模型相似,表示教育年数和工作经验对工资的正向影响。
gender 的系数为 -2.98,表示女性工资相比男性平均减少 2.98 单位。
交互项 educ_gender 的系数为 0.04,表示性别与教育年数之间存在交互效应,但 p 值为 0.804,表明该交互效应不显著。
模型统计量:
R-squared 为 0.810,与加法模型一致,说明两种模型在解释工资波动方面具有相似的解释力。
交互项 educ_gender 的 t 值较低,p 值为 0.804,说明交互项对工资的影响不显著,意味着性别与教育年数的共同作用并没有带来显著的工资变化。
加法模型 表明教育、经验和性别对工资的直接影响,模型中的性别变量表明女性工资比男性低,这一效应在模型中显著。
乘法模型 中虽然考虑了性别与教育年数的交互作用,但该交互项并不显著,意味着教育年数对男性和女性的工资影响相似。
模型选择:由于交互项不显著,可能加法模型已经足够解释工资的变动,乘法模型的复杂性在这种情况下可能没有带来更多的解释力。
五、案例分析2
研究中国1979-1999年储蓄与GNP之间的关系,数据见下表。试问1990年前后,储蓄-GNP的关系是否发生结构性变化?
年度 | 储蓄(Y) | GNP(X) | D(1990年前0,1990年后1) | 年度 | 储蓄(Y) | GNP(X) | D(1990年前0,1990年后1) |
---|---|---|---|---|---|---|---|
1979 | 281 | 4038.2 | 0 | 1990 | 7034.2 | 18598.4 | 1 |
1980 | 399.5 | 4517.8 | 0 | 1991 | 9107 | 21662.5 | 1 |
1981 | 523.7 | 4860.3 | 0 | 1992 | 11545.4 | 26651.9 | 1 |
1982 | 675.4 | 5301.8 | 0 | 1993 | 14762.4 | 34560.5 | 1 |
1983 | 892.5 | 5957.4 | 0 | 1994 | 21518.8 | 46670 | 1 |
1984 | 1214.7 | 7206.7 | 0 | 1995 | 29662.3 | 57494.9 | 1 |
1985 | 1622.6 | 8989.1 | 0 | 1996 | 38520.8 | 66850.5 | 1 |
1986 | 2237.6 | 10201.4 | 0 | 1997 | 46279.8 | 73142.7 | 1 |
1987 | 3073.3 | 11954.5 | 0 | 1998 | 53407.5 | 76967.2 | 1 |
1988 | 3801.5 | 14922.3 | 0 | 1999 | 59621.8 | 80579.4 | 1 |
1989 | 5146.9 | 16917.8 | 0 |
虚拟变量回归模型
当$ D = 0$ (1990年前)
为了考察结构性变化,只要检验\(\beta_2\)或 \(\beta_4\)是否显著地不等于零。
当\(D = 1\)(1990年后)
import pandas as pd
import statsmodels.api as sm
# 构建储蓄与GNP数据
data = {
'Year': [1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989,
1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999],
'Savings': [281, 399.5, 523.7, 675.4, 892.5, 1214.7, 1622.6, 2237.6, 3073.3,
3801.5, 5146.9, 7034.2, 9107, 11545.4, 14762.4, 21518.8, 29662.3,
38520.8, 46279.8, 53407.5, 59621.8],
'GNP': [4038.2, 4517.8, 4860.3, 5301.8, 5957.4, 7206.7, 8989.1, 10201.4, 11954.5,
14922.3, 16917.8, 18598.4, 21662.5, 26651.9, 34560.5, 46670, 57494.9,
66850.5, 73142.7, 76967.2, 80579.4],
'D': [0]*11 + [1]*10 # 1990年前为0,1990年后为1
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 添加交互项 D * GNP
df['D_GNP'] = df['D'] * df['GNP']
# 添加常数项,用于 OLS 回归
df['const'] = 1
# 定义因变量(储蓄)和自变量(常数项,D, GNP, D * GNP)
X = df[['const', 'D', 'GNP', 'D_GNP']]
y = df['Savings']
# 执行OLS回归
model = sm.OLS(y, X).fit()
# 输出回归结果
print(model.summary())
# 输出回归方程的系数
print("\n回归方程为:")
print(f"Savings = {model.params['const']:.2f} + ({model.params['D']:.2f})*D + ({model.params['GNP']:.2f})*GNP + ({model.params['D_GNP']:.2f})*(D * GNP)")
OLS Regression Results
==============================================================================
Dep. Variable: Savings R-squared: 0.981
Model: OLS Adj. R-squared: 0.978
Method: Least Squares F-statistic: 295.2
Date: Sat, 19 Oct 2024 Prob (F-statistic): 7.40e-15
Time: 12:51:28 Log-Likelihood: -194.60
No. Observations: 21 AIC: 397.2
Df Residuals: 17 BIC: 401.4
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const -1287.8156 1957.692 -0.658 0.519 -5418.185 2842.554
D -9512.0775 2939.985 -3.235 0.005 -1.57e+04 -3309.251
GNP 0.3588 0.204 1.758 0.097 -0.072 0.789
D_GNP 0.4351 0.208 2.093 0.052 -0.003 0.874
==============================================================================
Omnibus: 1.955 Durbin-Watson: 0.478
Prob(Omnibus): 0.376 Jarque-Bera (JB): 0.580
Skew: 0.124 Prob(JB): 0.748
Kurtosis: 3.776 Cond. No. 2.86e+05
==============================================================================
回归方程为:
Savings = -1287.82 + (-9512.08)*D + (0.36)*GNP + (0.44)*(D * GNP)
虚拟变量项的回归系数的 t 检验结果表明,回归系数与零有显著性差异,即不等于零。所以,1990年前后储蓄 - GNP 的关系存在结构性变化。
总结
虚拟变量回归(Dummy Variable Regression)是一种用于处理定性分类变量的标准工具,在实际应用中,虚拟变量将非数值的分类数据转换为可用于回归模型的数值形式,从而研究不同类别对因变量的影响。虚拟变量回归模型通常采用两种形式:加法模型和乘法模型。加法模型中,虚拟变量被直接添加到回归方程中,其系数表示不同类别对因变量的平均影响。法模型则用于研究类别变量与其他连续变量之间的交互效应。在这种模型中,虚拟变量与其他解释变量的乘积项(交互项)可以捕捉不同类别与这些变量的复杂关系。通过最小二乘法(OLS),我们可以估计模型中的参数,并通过假设检验评估虚拟变量对模型结果的显著性。这种方法在回归分析中至关重要,因为它能够灵活地处理复杂的分类信息,帮助我们识别不同类别的特定效应以及类别间的交互关系。这对于分析经济学中的工资结构、社会研究中的教育差异等问题具有重要意义。