🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

小样本偏差验证

问题

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

  1. 随机抽取10天数据建立价格趋势回归模型(时间戳为自变量)
  1. 用完整季度数据重复上述回归
  1. 对比两次回归斜率的差异程度
  1. 通过自助采样法(Bootstrap)计算斜率置信区间

Python答题框架

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月为潜在断点)
  1. 使用CUSUM检验验证结构突变
  1. 比较断点前后趋势系数变化
  1. 绘制残差序列观察突变特征

Python答题框架

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}")

# 残差可视化
(...绘制带有竖线标记的残差图...)

数据示例说明

分段回归结果:
2015-2020趋势系数: 25.3
2020年前趋势系数: 22.1
2020年后趋势系数: 38.6
CUSUM检验p值: 0.013
提示:残差图的突变点可通过垂直线标记,使用plt.axvline()实现