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

第15讲:多元线性回归 (Multiple Linear Regression) · 练习

回归个股收益与市场因子并解释系数显著性,加入行业变量,再计算方差膨胀因子检查共线性。

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

单变量收益率回归分析#

问题

使用yfinance获取特斯拉(TSLA)与纳斯达克指数(^IXIC)2022年全年的日频数据,完成以下任务:

  1. 计算两者的对数收益率(使用np.log(close).diff()

  2. 以纳斯达克收益率为自变量、TSLA收益率为因变量建立单变量线性回归

  3. 输出回归结果的R平方与系数显著性标记(p-value)

  4. 根据系数解释市场波动对个股的影响程度

Python答题框架

code
import yfinance as yf
import numpy as np
import statsmodels.api as sm

# 数据获取
start = '2022-01-01'
end = '2022-12-31'
tsla = yf.download('TSLA', start=start, end=end)['Close']
ixic = yf.download('^IXIC', start=start, end=end)['Close']

# 收益率计算
df = (...)
df['log_ret_tsla'] = (...)
df['log_ret_ixic'] = (...)

# 模型构建
X = (...)
model = (...)
print(...)

多因子模型与共线性诊断#

问题

在6.1题基础上增加科技行业ETF(XLK)作为第二个因子:

  1. 下载XLK同期数据并计算对数收益率

  2. 建立包含NASDAQ和XLK的双因子回归模型

  3. 比较单因子/双因子模型的调整R平方变化

  4. 计算方差膨胀因子(VIF)并诊断多重共线性

Python答题框架

code
from statsmodels.stats.outliers_influence import variance_inflation_factor

# 新增数据获取
xlk = yf.download(...)[...]

# 合并数据集
df_full = (...)

# 多因子回归
X_multi = (...)
multi_model = (...)
print(...)

# VIF计算
vif_df = pd.DataFrame()
vif_df["features"] = (...)
vif_df["VIF"] = [(...)]
print(vif_df)

数据示例说明

所有数据均通过yfinance实时获取,包含以下字段示例:

DateTSLA_CloseIXIC_CloseXLK_Close
2022-01-03352.2615622.67164.32
2022-01-04362.1215123.45162.89
............

收益率计算后数据示例:

Datelog_ret_tslalog_ret_ixiclog_ret_xlk
2022-01-040.0278-0.0321-0.0087
2022-01-05-0.01350.01870.0112

提示:计算VIF时需先移除常数项列,建议使用循环计算各特征VIF值

完成练习后,自评一次

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