MATLAB金融风险管理师FRM(高阶实战)
上QQ阅读APP看书,第一时间看更新

2.3 数据矩阵

列方向数据矩阵Xn行,q列)每一行看作是一个观察点,每一列代表一个维度;即X数据矩阵为q元随机数矩阵,有n个观察点。图2.12展示三维直角坐标系中三维数据(q = 3)。必须指出,虽然数据在直角坐标系中呈现,但这并不意味着数据列向量正交,即列方向线性相关性为0。数据列向量之间相关性要借助统计学工具来确定。

图2.12 在三维直角坐标系表达X

为配合MATLAB矩阵运算,本书一般采用列方向数据矩阵形式。请读者注意,很多文献采用行方向数据矩阵X,将每一行代表一个维度,而每一列代表一个观察点。列方向数据矩阵Xn行,q列)转置便得到行方向数据矩阵XTq行,n列)。

一元数据x1均值(中位数或众数)、方差(或均方差)、分位点、偏度和峰度为常见的几个统计学特征,如图2.13所示。

图2.13 数据x1统计学特点

数据x1期望值E(x1),即均值,可以通过下式求得:

其中,l为全1列向量,列数和x1一致;E() 计算期望。x1期望值E(x1)便是x1数据中心,去中心化列向量通过下式获得:

其中,llTl向量和其转置lT乘积;为中心化计算矩阵。

如果x1为总体,数据x1方差通过下式获得:

如果x1为样本,数据x1方差通过下式获得:

多列向量数据矩阵X期望值E(X)通过下式计算获得:

整理上式得到两个等式:

对于列方向数据矩阵X,下式获得去中心化数据矩阵:

其中,l为全1列向量,和X有相同行数。

X列向量总体方差-协方差矩阵通过下式计算获得:

X列向量样本方差-协方差矩阵通过下式计算获得:

下面用两元数据来看一下几个常见数据统计学性质。对于两个维度数据,协方差研究它们之间线性相关性。比如图2.14中x1x2这两例数据,下式计算获得两者总体协方差和样本协方差:

图2.14 数据x1x2统计学特点

丛书第三册数学部分介绍过向量内积和数据方差、协方差存在诸多相似性,这种现象又叫作余弦相似性(cosine similarity)。x1x2方差-协方差矩阵(variance-covariance matrix)如下:

Σ包含有关数据大量统计学信息,如图2.14所示。下面用之前讲到特征值分解和SVD分解对数据本身和方差-协方差矩阵做进一步分析。

方差-协方差矩阵Σ特征值分解得到如下等式:

V包含着两个特征向量v1v2,即V = [v1, v2];Λ为特征值矩阵,具体如下:

v1v2为正交系,λ1λ2为数据在v1v2方向上方差。若x1x2线性相关系数为0,则x1x2正交,如下例:

x1方差为5,x2方差为1。用mvnrnd() 函数生成1000个中心位于原点,满足如上方差-协方差关系二元随机数组,如图2.15所示。图2.15绘制v1v2两个特征向量。图中v1v2这两个向量长度正比于数据在这两个维度上均方差,即特征值平方根。请读者回顾丛书第三册第2章介绍的马哈距离(Mahalanobis distance, Mahal distance)。

图2.15 二元随机数组(方差-协方差矩阵为[5, 0; 0, 1],中心位于原点)

对二元随机数矩阵X = [x1, x2] 进行奇异值SVD分解:

其中,矩阵V形状为2×2。不考虑随机数数据数量影响,或特征值从大到小或者从小到大排列问题,SVD分解得到的方阵V和特征值分解得到的V一致。

若方差-协方差矩阵Σ取值如下:

x1方差为1,x2方差为5,两者线性无关。图2.16展示用mvnrnd() 函数生成1000个中心位于原点,满足如上方差-协方差关系二元随机数,以及v1v2两个特征向量。

图2.16 二元随机数组(方差-协方差矩阵为[1, 0; 0, 5],中心位于原点)

若方差-协方差矩阵Σ取值如下:

x1x2方差均为3,两者线性相关系数大于0。图2.17展示1000个二元随机数,中心位于原点,满足如上方差-协方差关系。图2.17同时给出v1v2两个特征向量。特征值分解Σ得到:

图2.17 二元随机数组(方差-协方差矩阵为[3, 2; 2, 3],中心位于原点)

沿着v2(= [-0.7071; 0.7071])和v1(= [0.7071; 0.7071])两个特征向量方向,数据方差值分别为1和5;换句话说,以上特征值大小描述新正交空间中各个方向数据分散集中程度。

若方差-协方差矩阵Σ取值如下:

x1x2同样均为3,两者线性相关系数小于0。特征值分解Σ得到:

同样得到,沿着v2(= [0.7071; 0.7071])和v1(= [0.7071; -0.7071])两个特征向量方向,数据方差值分别为1和5,如图2.18所示。如下代码获得图2.15~图2.18:

B4_Ch1_3.m

clc; clear all; close all
SIGMA = [5,0;0,1];
% SIGMA = [1,0;0,5];
% SIGMA = [3,2;2,3];
% SIGMA = [3,-2;-2,3];

num   = 1000;
X = mvnrnd([0,0],SIGMA,num);
sigma = cov(X)
[V_eig_original,LAMBDA_eig_original] = eig(SIGMA)
[V_eig,LAMBDA_eig] = eig(sigma);
[V_pca,Z,LAMBDA_pca] = pca(X);
V_PC1 = V_pca(:,1)*sqrt(LAMBDA_pca(1));
V_PC2 = V_pca(:,2)*sq rt(LAMBDA_pca(2));
centers = mean(X);
center_x = centers(1); center_y = centers(2);

figure(1)
plot(X(:,1),X(:,2),'.'); hold on
plot(center_x,center_y,'ok')
h = quiver(center_x,center_y,V_PC1(1),V_PC1(2));
h.AutoScaleFactor = 3;
h = quiver(center_x,center_y,V_PC2(1),V_PC2(2));
h.AutoScaleFactor = 3;
daspect([1, 1,1]); xlim([-8,8]);  ylim([-8,8]);
xlabel('x_1'); ylabel('x_2')

图2.18 二元随机数组,方差-协方差矩阵为[3, 2; 2, 3],中心位于原点

上述分析思路同样适用于多维数据。如图2.19所示,三维数据SVD分解或者PCA分析,相当于对原始数据进行正交化(orthogonalization)。这种正交化数据分析思路广泛应用在主元分析、正交回归、主元回归、因素分析等算法,丛书后文将会结合具体实例展开讲解。

图2.19 三维数据 相关性关系及正交化

这一小节最后,我们聊一聊数据矩阵线性变换(linear transformation)。X为列方向数据矩阵,f()为线性变换方程,X转化为列向量y

其中,v为线性变换向量,b为常数。列向量y期望值E(y)和矩阵X期望值E(X)关系如下:

列向量y方差var(y)和矩阵X方差var(X)关系为:

var(X),即方差-协方差矩阵ΣX

X为列方向数据矩阵X,而f() 为线性变换方程将X转化为矩阵Y,具体如下:

其中,V为线性变换矩阵,b为常数向量。矩阵Y期望向量E(Y)和矩阵X期望向量E(X)之间关系如下:

矩阵Y方差var(Y)和矩阵X方差var(X)关系如下:

上述性质常被称作期望线性性质(linearity of expectation)。

若数据矩阵X,每一行定义为一个维度,而每一列代表一个观察点。这种情况下,线性变换方程f()将X转化为行向量y

其中,v为线性变换列向量,b为常数。行向量y期望E(y)和矩阵X期望E(X)之间关系如下:

行向量y方差var(y)和矩阵X方差var(X)关系如下:

如果XY均为行方向数据矩阵,而f() 为线性变换方程将X转化为矩阵Y,具体如下:

其中,V为线性变换矩阵,b为常数向量。矩阵Y期望E(Y)和矩阵X期望E(X)之间关系如下:

矩阵Y方差var(Y)和矩阵X方差var(X),即方差-协方差矩阵ΣX,之间关系如下:

很多读者可能会觉得这一部分内容过于理论化难于理解,事实确实如此,但是,这些线性性质和丛书之前讲到线性相关、Cholesky分解、特征值分解、SVD分解、PCA分析等内容之间有着密切联系。解开这些联系的钥匙将在下一节介绍。