跳到主内容
研究主线模型诊断与稳定性 · 第14–19讲1/6 · 配套练习模块导览 →
练习

第14讲:回归模型不稳定性 (Regression Model Instability) · 练习

用小样本重采样观察回归系数分布,对指数月频数据执行结构突变检验,并比较分段参数。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

小样本偏差验证#

问题

使用yfinance获取蔚来汽车(NIO)2023年Q1的日频数据(约60个交易日),完成以下任务:

  1. 随机抽取10天数据建立价格趋势回归模型(时间戳为自变量)

  2. 用完整季度数据重复上述回归

  3. 对比两次回归斜率的差异程度

  4. 通过自助采样法(Bootstrap)计算斜率置信区间

Python答题框架

code
import yfinance as yf
import numpy as np
from sklearn.utils import resample

# 数据获取
nio = yf.download('NIO', start='2023-01-01', end='2023-03-31')['Close']
days = np.arange(len(nio))

# 小样本回归
sample_idx = np.random.choice(...)
small_X = days[sample_idx]
small_y = nio.iloc[sample_idx]
model_small = sm.OLS(...).fit()

# 全样本回归
model_full = sm.OLS(...).fit()

# 自助采样
bootstrap_slopes = []
for _ in range(1000):
    ...
    ...

print(f"小样本斜率:{model_small.params[1]:.2f}")
print(f"全样本斜率:{model_full.params[1]:.2f}")
print(f"95%置信区间:{[np.percentile(bootstrap_slopes, 2.5), ...]}")

结构突变检测#

问题

选取纳斯达克指数(^IXIC)2015-2020年月频数据:

  1. 对价格序列进行分段线性回归(假设2020年3月为潜在断点)

  2. 使用CUSUM检验验证结构突变

  3. 比较断点前后趋势系数变化

  4. 绘制残差序列观察突变特征

Python答题框架

code
from statsmodels.stats.diagnostic import breaks_cusumolsresid

# 获取数据
nasdaq = yf.download(...)
prices = (...)
time_index = (...)

# 分段回归
break_date = '2020-03-01'
pre_break = (...)
post_break = (...)

# CUSUM检验
full_model = sm.OLS(...).fit()
cusum_test = (...)
print(f"结构突变检验p值:{cusum_test[1]:.4f}")

# 残差可视化
...

数据示例说明

code
分段回归结果:
2015-2020趋势系数: 25.3
2020年前趋势系数: 22.1
2020年后趋势系数: 38.6
CUSUM检验p值: 0.013

提示:残差图的突变点可通过垂直线标记,使用plt.axvline()实现

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。