第三步:检验残差的随机性
分析第二步结果
-
残差均值:
- 均值为
0.00000
,说明模型没有系统性偏误,即回归模型的拟合没有整体的高估或低估情况。 - 这是一个理想结果,符合线性回归假设。
- 均值为
-
残差标准差:
- 标准差为
88.94573
,表明残差的波动较大。虽然均值为零,但较大的波动可能暗示模型未完全捕捉数据的特征,或某些解释变量的变化未被纳入模型。
- 标准差为
-
年份与残差的相关性系数:
- 相关性系数为
-0.14399
,接近 0,说明残差与年份之间的线性相关性较弱,没有显著的趋势。 - 但相关性系数虽然较低,仍需通过图形分析进一步验证残差是否完全随机。
- 相关性系数为
第三步:检验残差的随机性
问题
- 线图分析:
- 如果残差相对于年份 (
year
) 的线图随机分布,说明模型拟合较好,未出现显著的模式或趋势。 - 如果图中出现趋势(如持续增加、波动性变化),说明残差不是完全随机的,可能需要改进模型。
- 如果残差相对于年份 (
线图绘制及分析
以下是绘制残差线图的代码及分析:
import matplotlib.pyplot as plt
# 绘制残差相对于年份的线图
plt.figure(figsize=(10, 5))
plt.plot(data['year'], residuals, linestyle='-', marker='o', color='blue', label='残差')
plt.axhline(0, color='red', linestyle='--', label='零线')
plt.title('残差相对于年份的线图')
plt.xlabel('年份 (year)')
plt.ylabel('残差 (e)')
plt.legend()
plt.grid(True)
plt.show()
图像解读
-
如果残差完全随机:
- 残差点围绕零线上下波动,无明显的趋势性或周期性,表明残差具有随机性。
- 在这种情况下,可以认为模型拟合较好,基本满足线性回归假设。
-
如果残差非随机:
- 残差呈现明显趋势,如逐渐上升或下降,或波动幅度随时间变化(即异方差性)。
- 这种情况表明模型可能遗漏了与时间相关的变量,或需要进一步改进(如加入年份作为解释变量,或者用非线性模型拟合)。
结果解释
根据第二步结果以及残差线图:
- 残差均值为零且相关性系数接近零,初步表明模型没有显著偏误。
- 标准差较高可能反映变量间关系未被完全捕捉,或存在噪声干扰。
- 线图验证:
- 如果线图显示残差完全随机,可以说明模型对
con
的拟合效果较好。 - 如果线图显示非随机特征(如趋势性波动或模式),需要改进模型(例如引入更多变量或改用非线性方法)。
- 如果线图显示残差完全随机,可以说明模型对
第四步:杜宾-沃森检验分析
问题背景
杜宾-沃森统计量用于检验回归残差的一阶自相关性。统计量范围为 [0, 4]
,通常基于其值的区间判断是否存在正自相关、负自相关或没有自相关。
a. 原假设和备择假设
- 原假设 (Null Hypothesis, (H_0)):残差不存在自相关性(即,残差是独立的)。
- 备择假设 (Alternative Hypothesis, (H_a)):
- 正的序列相关性:残差存在正的一阶自相关。
- 负的序列相关性:残差存在负的一阶自相关。
杜宾-沃森检验主要关注正的序列相关性,因此我们考虑备择假设 (H_a):残差存在正的一阶自相关。
b. 5% 显著性水平下,杜宾-沃森检验的上下限临界值
步骤 1:确定上下限值
杜宾-沃森统计量的上下限值取决于:
- 回归模型的样本大小 ((n)):你的数据集大小。
- 解释变量的个数 ((k)):即模型中的自变量数量(不包括常数项)。
- (d_L):下限值(Lower critical value)。
- (d_U):上限值(Upper critical value)。
在统计表中可以查找杜宾-沃森上下限值。如果无法找到表格,也可以通过 Python 或近似公式进行计算。
步骤 2:杜宾-沃森统计量的判别规则
杜宾-沃森统计量 ((DW)) 与上下限值 ((d_L, d_U)) 的关系:
- 正的序列相关性:
- 如果 (DW < d_L),拒绝原假设,存在正的一阶自相关。
- 无序列相关性:
- 如果 (d_L < DW < d_U),无法确定是否存在自相关。
- 如果 (d_U \leq DW \leq 4-d_U),接受原假设,无自相关。
- 负的序列相关性:
- 如果 (DW > 4-d_L),拒绝原假设,存在负的一阶自相关。
c. 分析你的结果
你得到的杜宾-沃森统计量为:
[DW = 0.3858]
判断
- 假设: 假设 (n = 50)(样本大小),(k = 2)(自变量个数),在 5% 显著性水平下:
- 查表得 (d_L = 1.46),(d_U = 1.74)(上下限值具体需要根据样本大小查找杜宾-沃森表)。
- 比较:
- 你的统计量 (DW = 0.3858 < d_L = 1.46)。
结论:
- 在 5% 的显著性水平下,拒绝原假设,说明残差存在显著的正的一阶自相关。
解释
- 杜宾-沃森统计量低于下限值,表明残差与前一时期的残差具有较强的正相关性。
- 正的一阶自相关意味着模型的残差中可能存在遗漏的重要变量或时间序列依赖性。
附:Python代码验证上下限值
如果要查找临界值,可以通过以下代码来估算:
from statsmodels.stats.stattools import durbin_watson
# 杜宾-沃森统计量
dw_stat = durbin_watson(residuals)
print(f"杜宾-沃森统计量: {dw_stat}")
# 设置假设样本量和自变量个数,查找上下限值
n = len(data) # 样本大小
k = X.shape[1] - 1 # 自变量数量(不包括常数项)
# 杜宾-沃森上下限值表可在统计书籍或在线查找
print("注意:上下限值 (d_L, d_U) 需查表,根据样本大小和自变量数量确定。")
建议改进
由于存在显著的正序列相关性,可以考虑以下改进方法:
- 加入滞后变量:
- 将自变量或因变量的滞后项纳入模型,捕捉时间序列依赖性。
- 使用 Newey-West 修正:
- 调整模型的标准误,处理序列相关性问题。
- 重新评估模型结构:
- 检查是否遗漏了与时间相关的关键变量。
第五步:拉格朗日乘数检验(布鲁什-戈德弗雷检验)分析
a. 拉格朗日乘数检验的原假设和备择假设是否与杜宾-沃森检验的相同?说明原因。
答案:
- 原假设 ((H_0)):
- 拉格朗日乘数检验(布鲁什-戈德弗雷检验,Breusch-Godfrey Test):残差不存在序列相关性。
- 杜宾-沃森检验:残差不存在一阶序列相关性。
- 备择假设 ((H_a)):
- 拉格朗日乘数检验:残差存在序列相关性(包括高阶相关性)。
- 杜宾-沃森检验:残差存在正的一阶序列相关性。
原因:
- 相同点:
- 两种方法的原假设和备择假设都围绕“残差是否存在序列相关性”展开。
- 如果原假设被拒绝,说明模型的残差具有相关性。
- 不同点:
- 杜宾-沃森检验专门检测一阶自相关,不能检测高阶序列相关性。
- 布鲁什-戈德弗雷检验是一种更一般化的检验方法,可以检测高阶序列相关性。
因此,拉格朗日乘数检验的适用范围更广,可以检测一阶及更高阶的序列相关性。
b. 在 5% 的显著性水平下,用拉格朗日乘数检验来检验是否存在序列相关性。你能得出什么结论?请解释。
检验结果:
- 布鲁什-戈德弗雷检验输出结果为:
- 检验统计量 (LM = 41.0714)
- (p)-值为 (2.598 \times 10^{-8}),非常小。
分析:
- 假设:
- (H_0):残差不存在序列相关性。
- (H_a):残差存在序列相关性。
- 判决规则:
- 当 (p)-值小于显著性水平(5%,即 0.05)时,拒绝原假设。
- (p)-值为 (2.598 \times 10^{-8}),远小于 0.05,因此在 5% 的显著性水平下,我们拒绝 (H_0)。
结论:
- 布鲁什-戈德弗雷检验表明残差存在显著的序列相关性,这可能导致模型估计的效率降低或标准误偏差。
- 需要对模型进行改进,如加入滞后变量、重新构造模型,或使用 Newey-West 修正等方法。
解释
拉格朗日乘数检验是一种广泛适用的方法,可以检测高阶序列相关性,比杜宾-沃森检验更灵活。根据本题结果,我们发现模型的残差存在显著的序列相关性,因此下一步需要改进模型以解决这一问题。
第六步:广义最小二乘法(GLS)分析**
a. 如果你在前面的步骤中得到了存在序列相关性的结论,请用广义最小二乘法重新估计模型。
答案:
前面步骤中,杜宾-沃森检验和布鲁什-戈德弗雷检验的结果表明,残差存在显著的序列相关性。因此,我们需要使用广义最小二乘法(GLS)重新估计模型,以修正模型中因序列相关性引起的偏误。
以下是使用 GLS 重新估计模型的代码:
import statsmodels.api as sm
# 用广义最小二乘法(GLS)重新估计模型
gls_model = sm.GLS(y, X).fit()
# 输出GLS模型的估计结果
print("用广义最小二乘法重新估计模型结果:")
print(gls_model.summary())
b. 用广义最小二乘法得到的参数估计值和统计量是否与用普通最小二乘法得到的系数和统计量相同?请解释。
答案:
-
理论分析:
- 在存在序列相关性的情况下,普通最小二乘法(OLS)虽然仍然是无偏估计,但其估计的标准误可能是不准确的,从而导致 (t)-统计量和 (p)-值的计算有偏差。
- 广义最小二乘法(GLS)通过考虑残差的协方差结构,能生成更有效的估计,从而修正参数估计值和标准误的偏差。
-
实践结果:
- 系数估计值:GLS 的参数估计值可能与 OLS 略有不同,尤其是在序列相关性显著时。这是因为 GLS 调整了残差的相关性,权重了不同观测值的贡献。
- 统计量(如标准误和 (t)-值):GLS 的标准误可能显著不同于 OLS,原因是 GLS 修正了 OLS 未考虑的序列相关性。
代码如下,请根据代码结果进行实验分析
# OLS模型 ols_model = sm.OLS(y, X).fit() # GLS模型 gls_model = sm.GLS(y, X).fit() # 打印OLS和GLS模型摘要 print("普通最小二乘法 (OLS) 模型结果:") print(ols_model.summary()) print("广义最小二乘法 (GLS) 模型结果:") print(gls_model.summary())
分析结果如下:
分析 OLS 和 GLS 结果对比
从两张图片中的结果可以看到,OLS 和 GLS 的参数估计值及统计量存在一定的相似性,但仍需从以下方面具体分析:
1. 参数估计值
- 常数项 ((const)):
- OLS: (-165.4441)
- GLS: (-165.4441)
- 可支配收入 ((dpi)):
- OLS: (0.9320)
- GLS: (0.9320)
- 实际利率 ((aaa)):
- OLS: (-12.5420)
- GLS: (-12.5420)
结论:
- OLS 和 GLS 的参数估计值完全相同。这是因为 GLS 的目标是修正标准误和序列相关性,而不是改变回归系数本身。OLS 在无偏性方面仍然成立,因而两者的估计值一致。
2. 标准误
- 常数项 ((const)):
- OLS: (23.092)
- GLS: (23.092)
- 可支配收入 ((dpi)):
- OLS: (0.005)
- GLS: (0.005)
- 实际利率 ((aaa)):
- OLS: (3.804)
- GLS: (3.804)
结论:
- OLS 和 GLS 的标准误完全一致。这表明序列相关性可能没有通过 GLS 得到有效修正,需进一步检查残差的随机性。
3. (t)-统计量和 (p)-值
- 常数项 ((const)):
- (t)-统计量:(-7.165)(OLS 和 GLS 相同)
- (p)-值:(0.000)(OLS 和 GLS 相同)
- 可支配收入 ((dpi)):
- (t)-统计量:(191.726)(OLS 和 GLS 相同)
- (p)-值:(0.000)(OLS 和 GLS 相同)
- 实际利率 ((aaa)):
- (t)-统计量:(-3.297)(OLS 和 GLS 相同)
- (p)-值:(0.002)(OLS 和 GLS 相同)
结论:
- OLS 和 GLS 的 (t)-统计量和 (p)-值完全一致。这表明 GLS 并未显著改进模型对序列相关性或标准误的调整。
4. 模型拟合指标
- R-squared 和 Adj. R-squared:
- OLS: (0.999)
- GLS: (0.999)
- AIC 和 BIC:
- OLS: (738.5, 744.8)
- GLS: (738.5, 744.8)
结论:
- GLS 和 OLS 在模型拟合优度 ((R^2)) 和信息准则 (AIC 和 BIC) 上完全一致。
- 说明 GLS 没有提供额外的拟合优度改进。
5. 杜宾-沃森统计量
- OLS: (0.386)
- GLS: (0.386)
结论:
- 杜宾-沃森统计量在 OLS 和 GLS 中完全一致。这表明 GLS 并未有效修正序列相关性问题。
总体结论
-
系数一致性:
- GLS 的参数估计值与 OLS 完全相同,说明 GLS 没有改变回归系数。
- OLS 在无偏性方面成立,因此即使存在序列相关性,参数估计值也是一致的。
-
标准误一致性:
- OLS 和 GLS 的标准误完全一致,这表明 GLS 并未显著修正序列相关性对标准误的影响。
-
杜宾-沃森统计量未改善:
- GLS 的杜宾-沃森统计量仍为 (0.386),表明残差中的序列相关性问题未得到解决。
-
改进建议:
- GLS 的效果可能受到模型假设的限制。考虑以下改进:
- 检查是否遗漏了与时间相关的重要变量。
- 引入滞后变量以捕捉残差的动态依赖。
- 使用 Newey-West 修正以调整标准误。
- GLS 的效果可能受到模型假设的限制。考虑以下改进:
c. 在广义最小二乘法的转换之后,序列相关是否仍存在?证明你的答案。
答案:
-
验证序列相关性:
- 在 GLS 转换后,重新检查杜宾-沃森统计量。如果统计量仍然非常小(如 0.3858),说明序列相关性并未完全消除。
-
代码实现:
以下代码计算 GLS 模型的杜宾-沃森统计量:from statsmodels.stats.stattools import durbin_watson # 获取GLS模型的残差 gls_residuals = gls_model.resid # 计算杜宾-沃森统计量 dw_stat_gls = durbin_watson(gls_residuals) print(f"GLS模型的杜宾-沃森统计量:{dw_stat_gls}")
-
结论分析:
- 如果 GLS 的杜宾-沃森统计量仍然接近 0.3858,则可以证明序列相关性仍然存在,说明 GLS 并未完全消除序列相关性。
- 可能的原因包括:模型中遗漏了关键变量,或者残差存在更复杂的依赖结构。
- 如果 GLS 的杜宾-沃森统计量接近 2,则可以认为序列相关性已被消除,说明 GLS 的修正是有效的。
总结
- a. 广义最小二乘法(GLS)重新估计模型,以修正序列相关性问题。
- b. GLS 的参数估计值和 OLS 可能不同,尤其是统计量(如标准误和 (t)-值),因为 GLS 调整了残差的相关性。
- c. 通过 GLS 残差的杜宾-沃森统计量验证序列相关性是否仍存在。如果统计量接近 0 或远离 2,说明序列相关性尚未完全消除,需要进一步改进模型。
第七步:使用 Newey-West 修正模型**
a. 如果你在第 6 步中运行了广义最小二乘法模型,现在运用 Newey-West 的 1 期滞后估计总消费模型。
Newey-West 修正方法是一种稳健估计方法,用于调整因残差存在序列相关性和异方差性引起的标准误偏差。它不改变系数估计值,但会调整标准误、(t)-统计量和 (p)-值。
代码实现:
from statsmodels.stats.sandwich_covariance import cov_hac
# 使用普通最小二乘法模型应用 Newey-West 修正
nw_model = ols_model.get_robustcov_results(cov_type='HAC', maxlags=1)
# 输出 Newey-West 修正后的模型结果
print("Newey-West 修正后的模型结果:")
print(nw_model.summary())
b. 在 Newey-West 的计算后,得到的系数是否与用普通最小二乘法 (OLS) 得到的系数相同?请解释。
答案:
- 系数比较:
- Newey-West 修正后,系数估计值与普通最小二乘法 (OLS) 的系数完全相同。
- 原因是 Newey-West 修正只调整了标准误,并不影响系数的估计值。
解释:
- OLS 的系数估计是无偏的,即使存在序列相关性,系数本身并不受影响。
- Newey-West 修正旨在对序列相关性和异方差性进行调整,从而修正标准误,使其更可靠。
c. 为什么 Newey-West 的统计量与普通最小二乘法的统计量不同?
答案:
-
Newey-West 调整了标准误:
- 普通最小二乘法假设残差独立同分布(iid),但在存在序列相关性和异方差性时,这一假设不成立,导致 OLS 标准误可能被低估或高估。
- Newey-West 修正通过 HAC(Heteroscedasticity and Autocorrelation Consistent)方法,调整了标准误,使得其在异方差和序列相关性下更加稳健。
-
对统计量的影响:
- (t)-统计量 = (\text{系数估计值} / \text{标准误})
- 因此,修正后的标准误会直接影响 (t)-统计量和 (p)-值。Newey-West 修正可能使某些变量的显著性发生变化。
d. 你更倾向于哪一个?为什么?
答案:
- 倾向于 Newey-West 修正:
- 原因是 Newey-West 修正能够处理残差中的异方差性和序列相关性问题,使得标准误的估计更加稳健。
- 如果数据中存在明显的序列相关性或异方差性,OLS 的标准误和 (t)-统计量会有偏差,导致显著性判断不可靠。
- Newey-West 修正能更准确地反映模型的真实显著性,尤其是在时间序列数据中。
总结
- 系数一致性:Newey-West 修正不会改变系数估计值,与 OLS 一致。
- 标准误修正:Newey-West 修正通过调整标准误,提高了统计量的稳健性。
- 优先选择:在存在异方差性和序列相关性时,应优先选择 Newey-West 修正后的结果,因为它能提供更可靠的推断。
over 嘿嘿~~