跳到主内容
研究主线资产定价与组合构建 · 第30–36讲7/7 · 配套练习模块导览 →
练习

第36讲:主成分分析 (Principal Component Analysis) · 练习

用不同主成分数量重构图像并比较误差,对行业收益执行 PCA,再解释载荷、方差比例与风险来源。

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

图像重构实验#

根据以下代码框架,完成以下任务:

code
import numpy as np
import matplotlib.pyplot as plt

def generate_test_image(m, n):
    X = np.zeros((m, n))
    X[50:150, 50:150] = 1  # 正方形
    X[75:125, 75:125] = 0  # 中心挖空
    X += np.random.randn(*X.shape)*0.1  # 添加噪声
    return X

# 生成测试图像
X = generate_test_image(200, 200)

# PCA处理代码框架(需要补充完整)
  1. 计算中心化后的数据矩阵(提示:每个像素减去均值)

  2. 正确计算协方差矩阵并执行特征分解

  3. 使用k=5/15/30个主成分重构图像

  4. 绘制原始图像与三个重构图像的对比图(要求使用2x2子图布局)


行业风险因子分析#

根据以下数据获取代码,完成PCA分析:

code
import yfinance as yf
from sklearn.preprocessing import StandardScaler

# 获取不同行业股票数据(2020-2023年)
tech_stocks = ['MSFT', 'GOOG', 'META']
energy_stocks = ['XOM', 'CVX', 'SHEL']
retail_stocks = ['WMT', 'TGT', 'HD']

all_symbols = tech_stocks + energy_stocks + retail_stocks
data = yf.download(all_symbols, start='2020-01-01', end='2023-12-31')['Close']
returns = data.pct_change().dropna()

请完成:

  1. 对收益率数据执行标准化处理

  2. 通过PCA提取前三个主成分

  3. 计算累计方差贡献率并绘制碎石图

  4. 绘制三维散点图展示不同行业股票在主成分空间的分布(用颜色区分行业类别)

完成练习后,自评一次

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

模块收束 · 0/7 已完成

把知识收束成可复核的研究产物

完成后应该能够

  • 能够解释并约束系统性风险与因子暴露
  • 能够检查优化问题的可行性、稳定性与敏感度

交付物

  • 一份含约束、风险贡献和敏感度分析的组合方案

本模块已有 0/7 个主要学习单元完成。 本模块没有待复习项。