请关注公众号《硬件软件极客部落》,将分享更多内容
前言:
在很多场合需要用到期望、方差、协方差、标准差、数据标准化(z-score),以以下数据为例,进行讲解。代码环境,win10、matlab2016a
x1 x2
9.9 9.4
10 9.4
8.5 9.6
9.8 9.8
9.2 9.2
一、期望
数学期望也就是均值,代表数据的平均水平。
以下求x1,x2的期望:
>> x = importdata('C:\Users\lenovo\Desktop\jiqixuexi\第6讲.典型相关分析\Data.txt');
>> x1 = sum(x.data(:,1))/5
>> x2 = sum(x.data(:,1))/5
结果:
x1 =
9.4800
x2 =
9.4800
和如下matlab自带求期望函数结果相同
>> x1 = mean(x.data(:,1));
>> x2 = mean(x.data(:,2));
结果:
x1 =
9.4800
x2 =
9.4800
二、方差
期望相同的情况下,无法衡量两组数据的好坏,这时候需要引入方差的概念,方差是用来衡量数据偏离期望的程度,方差越大波动越大,方差越小,波动越小,数据越好。在计算方差时,数学期望是必须的,用D(X)表示某个随机变量的方差:
我们注意到E(X)已经是一个具体的数字,是加权平均值,已经事先通过计算去掉了随机性,X是某个特定的随机变量,也是一个具体的数值,D(X)仅仅是将x=X放置在了一个函数里,最终也可以对得出定值。根据数学期望的特征,常数的数学期望仍是常数,因此:
因此我们说,某一个随机变量的方差就是该随机变量函数的数学期望。我们可以利用数学期望的性质继续向下计算:
所以说某一个变量的方差等于平方的期望减去期望的平方
虽然D(X)代表某个特定随机变量的方差,E(D(X)) = D(X),但E(X2) ≠X2,E(X2)表示的是随机变量函数g(X)=( X2)的数学期望。我们可以借助数学期望的计算公式计算随机变量的整体方差
以下求x1,x2的方差:
%根据公式定义求x1,x2方差
>> Dx1 = ((x.data(1,1) - 9.48)^2 + (x.data(2,1) - 9.48)^2 + (x.data(3,1) - 9.48)^2+ (x.data(4,1) - 9.48)^2+ (x.data(5,1) - 9.48)^2)/(5 - 1)
Dx1 =
0.3970
>> Dx1 = ((x.data(1,2) - 9.48)^2 + (x.data(2,2) - 9.48)^2 + (x.data(3,2) - 9.48)^2+ (x.data(4,2) - 9.48)^2+ (x.data(5,2) - 9.48)^2)/(5 - 1)
Dx1 =
0.0520
%matlab提供函数计算
>> var(x.data(:,1))
ans =
0.3970
>> var(x.data(:,2))
ans =
0.0520
三、标准差
由于方差是数据的平方,与检测值本身相差太大,人们难以直观地衡量,所以常用均方差代替方差判断数据的波动。所有样本的方差之和除以样本的个数,再把所得值开根号,所得之数就是这组数据的均方差,也叫标准差,常见的离散型公式:
其中r就是随机变量的数学期望,也就是加权平均值,N是样本空间中的一部分数据。
%matlab自带
>> stdx1 = std(x.data(:,1))
stdx1 =
0.6301
>> stdx2 = std(x.data(:,2))
stdx2 =
0.2280
%根据公式计算
>> stdx1 = sqrt(Dx1)
stdx1 =
0.6301
>> stdx2 = sqrt(Dx2)
stdx2 =
0.2280
四、协方差
当舞台转向了多维随机变量时,方差就变成了协方差,这里的“协”是指几个变量的协同相关性。如果(X, Y)是二维随机变量,且D(X)>0, D(Y)>0,则X,Y的协方差的定义是:
和方差类似,E(X)E(Y)是确定的数学期望,对于某一组确定的变量x=X, y=Y来说,X和Y也是定值,因此协方差可进一步转换为:
由于E(X)E(Y)是定值,因此可以根据数学期望的性质进一步计算:
从直观上来看,协方差表示的是两个变量总体误差的期望。
如果两个变量的变化趋势一致,也就是说如果两个变量都大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。当两个变量完全一致时,协方差就变成了方差:
协方差的性质:
%matlab提供函数
>> cov(x.data(:,1),x.data(:,2))
ans =
0.3970 -0.0030
-0.0030 0.0520
%根据定义
>> ((x.data(1,1)-9.48)*(x.data(1,2)-9.48)+(x.data(2,1)-9.48)*(x.data(2,2)-9.48)+(x.data(3,1)-9.48)*(x.data(3,2)-9.48)+(x.data(4,1)-9.48)*(x.data(4,2)-9.48)+(x.data(5,1)-9.48)*(x.data(5,2)-9.48))/(5-1)
ans =
-0.0030
五、相关系数
相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。由于研究对象的不同,相关系数有如下定义方式。
其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差。
%matlab提供函数
>> corrcoef(x.data(:,1),x.data(:,2))
ans =
1.0000 -0.0209
-0.0209 1.0000
%根据定义计算
>> cov(x.data(:,1),x.data(:,2))/(sqrt(Dx1)*sqrt(Dx2))
ans =
2.7631 -0.0209
-0.0209 0.3619
%相关系数为
-0.0209
六、数据标准化
由于各变量的单位可能不一样,如果各自改变量纲,结果会不一样,所以实际中可以先把各变量的数据标准化, 消除量纲的影响。
①z-score
②性质及证明
数据标准化后,数据期望为0,方差为1,协方差=相关系数。
证明:
上图证明3,标准化前相关系数和标准化后相关系数及协方差相等的证明中,①式需分子除以n-1,
③、④式需除以n-1。
%matlab提供函数
>> corrcoef(x.data(:,1),x.data(:,2))
ans =
1.0000 -0.0209
-0.0209 1.0000
%公式
>> x1 = zscore(d.data(:,1))
x1 =
0.6666
0.8253
-1.5554
0.5079
-0.4444
>> x2 = zscore(d.data(:,2))
x2 =
-0.3508
-0.3508
0.5262
1.4033
-1.2279
>> mean(x1)
ans =
-5.9952e-16
>> mean(x2)
ans =
-1.5543e-15
>> var(x1)
ans =
1.0000
>> var(x2)
ans =
1
>> cov(x.data(:,1),x.data(:,2))/(sqrt(Dx1)*sqrt(Dx2))
ans =
2.7631 -0.0209
-0.0209 0.3619
>> sum(zscore(x.data(:,1)).*zscore(x.data(:,2))/(5-1))
ans =
-0.0209