首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Ledoit-Wolf收缩

Ledoit-Wolf收缩

作者头像
裴来凡
发布2022-05-29 10:20:43
发布2022-05-29 10:20:43
9790
举报
代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import toeplitz, cholesky
from sklearn.covariance import LedoitWolf, OAS
np.random.seed(0)
n_features = 100
#模拟协方差矩阵
r=0.1
real_cov=toeplitz(r**np.arange(n_features))
coloring_matrix=cholesky(real_cov)
n_samples_range=np.arange(6,30,1)
repeat=100
lw_mse=np.zeros((n_samples_range.size,repeat))
oa_mse=np.zeros((n_samples_range.size,repeat))
lw_shrinkage=np.zeros((n_samples_range.size,repeat))
oa_shrinkage=np.zeros((n_samples_range.size,repeat))
for i, n_samples in enumerate(n_samples_range):
    for j in range(repeat):
        X=np.dot(
            np.random.normal(size=(n_samples,n_features)),coloring_matrix.T)
        lw=LedoitWolf(store_precision=False,assume_centered=True)
        lw.fit(X)
        lw_mse[i,j]=lw.error_norm(real_cov,scaling=False)
        lw_shrinkage[i,j]= w.shrinkage_
        oa=OAS(store_precision=False,assume_centered=True)
        oa.fit(X)
        oa_mse[i,j]=oa.error_norm(real_cov,scaling=False)
        oa_shrinkage[i,j]=oa.shrinkage_
#绘制MSE
plt.subplot(2,1,1)
plt.errorbar(n_samples_range,lw_mse.mean(1),yerr=lw_mse.std(1),label='Ledoit-Wolf',color='navy',lw=2)
plt.errorbar(n_samples_range,oa_mse.mean(1),yerr=oa_mse.std(1),label='OAS',color='darkorange',lw=2)
plt.ylabel("Squared error")
plt.legend(loc="upper right")
plt.title("Comparison of covariance estimators")
plt.xlim(5,31)
#绘图收缩系数
plt.subplot(2,1,2)
plt.errorbar(n_samples_range,lw_shrinkage.mean(1),yerr=lw_shrinkage.std(1),label='Ledoit-Wolf',color='navy',lw=2)
plt.errorbar(n_samples_range,oa_shrinkage.mean(1),yerr=oa_shrinkage.std(1),label='OAS',color='darkorange',lw=2)
plt.xlabel("n_samples")
plt.ylabel("Shrinkage")
plt.legend(loc="lower right")
plt.ylim(plt.ylim()[0],1.+(plt.ylim()[1]-plt.ylim()[0])/10.)
plt.xlim(5,31)
plt.show()

算法:Ledoit-Wolf收缩是通过最小化MSE准则计算渐近最优收缩参数。

文献:Ledoit, O. , & Wolf, M. . (2004). A well-conditioned estimator for large-dimensional covariance matrices. Journal of Multivariate Analysis, 88(2), 365-411.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档