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

练习

残差分析与异方差处理

问题

使用yfinance获取苹果公司(AAPL)与标普500指数(SPY)2023年的日频数据,完成以下任务:

  1. 计算AAPL和SPY的对数收益率
  1. 建立AAPL收益率对SPY收益率的单变量回归模型
  1. 绘制残差与拟合值的关系图,判断是否存在非线性或异方差
  1. 进行Breusch-Pagan检验,若存在异方差,应用对数变换后重新回归,比较模型R平方变化

Python答题框架

import yfinance as yf
import numpy as np
import statsmodels.api as sm
import statsmodels.stats.diagnostic as smd

# 数据获取
start = '2023-01-01'
end = '2023-12-31'
aapl = yf.download(...)[...]
spy = yf.download(...)[...]

# 收益率计算与合并
df = (...合并数据...)
df['log_ret_aapl'] = (...)
df['log_ret_spy'] = (...)

# 回归建模
X = sm.add_constant(df['log_ret_spy'])
model = sm.OLS(...).fit()
print(...模型摘要...)

# 残差诊断图
(...绘制残差vs拟合值...)

# 异方差检验
bp_test = (...)
if bp_test[1] < 0.05:
    # 应用对数变换(示例)
    df['transformed_y'] = np.log(...)
    (...重新建模...)


β系数稳定性与自相关检验

问题

使用特斯拉(TSLA)和标普500指数(SPY)2018-2022年数据:

  1. 分年度计算TSLA的β系数,分析其年度变化
  1. 对2020年数据回归后,进行Ljung-Box自相关检验
  1. 若存在自相关,使用收益率滞后项作为新变量重新建模

Python答题框架

from statsmodels.stats.diagnostic import acorr_ljungbox

# 获取多年数据
full_data = yf.download(...)

# 分年度计算β系数
years = [...]
beta_values = []

for year in years:
    year_data = (...)
    (...回归计算并记录beta...)

# 自相关检验
model_2020 = (...)
resid_2020 = (...)
lb_test = (...)
print(f"自相关检验P值:{lb_test[1]}")

# 处理自相关(示例:添加滞后项)
df_lag = (...创建滞后特征...)
X_lag = sm.add_constant(...)
model_lag = (...)

数据示例说明

收益率数据格式示例(年维度):

年份Beta系数R-squared
20181.320.65
20191.450.71
20202.010.82

自相关检验输出示例:

Ljung-Box检验P值:0.023 (lag=5)
存在显著自相关
提示:处理自相关时可引入ARIMA模型或添加滞后项,但需注意自由度损失

通过这两道习题,学生可以实践残差诊断、异方差处理、β稳定性分析及自相关检验,巩固回归模型验证的关键技能。