在PCA中涉及到了方差var和协方差cov,下面详细了解这两个函数的用法。numpy中var和cov函数求法和MATLAB中var和cov函数求法类似。
首先均值,样本方差,样本协方差公式分别为
其中样本方差公式中为什么除的n-1而不是n,样本协方差同样除的是n-1而不是n,请看此处:http://blog.youkuaiyun.com/maoersong/article/details/21819957,如果除的是n,那么求的方差就不是随机抽取变量组成样本的方差,而是整个空间的方差。
下面就介绍MATLAB中var和cov函数的用法
以下内容转载出处:http://blog.sina.com.cn/s/blog_9e67285801010twv.html
函数名称:cov
函数功能: 求协方差矩阵
函数用法: cov(X)
详细描述:
......................................................................
if X is a vector向量,cov(X)输出的是这个向量的方差
例:
>> A = [4 1 3];
>> AA = cov(A)
AA =
>> a = mean(A)
a =
>> AAA = 1/3*((4-a)^2+(1-a)^2+(3-a)^2)
AAA =
>> AAAA= 1/2*((4-a)^2+(1-a)^2+(3-a)^2)
AAAA =
..............................................................................
对于矩阵来说,matlab把每行看做一个观察值,把每列当做一个变量,也就是说对于一个4*3的矩阵求协方差矩阵,matlab会认为存在三个变量,即会求出一个3*3的协方差矩阵。
其中,对角线元素为对应变量的方差无偏估计值,其他位置为对应变量间的 协方差无偏估计值(即除的是N-1)
.......................................................................
例1:
>> X = [1 5 6; 4 3 9 ; 4 2 9; 4 7 2]
X =
>> Y = cov(X)
Y =
为探究过程,以Y(1,1)和Y(1,2)为例进行验证
>> x=X(:,1);
>> sum((x-3.25).^2)/3
ans =
>> y = X (:,2);
>>
aa =
......................................................
对于cov(X,Y)
X、Y必须是各维数都相等的矩阵,其功能是把X中所有元素看做一个变量的样本,Y中所有元素看做另外一个变量的样本,把矩阵中每个对应位置看做一个联合观察值
函数实现的是求出两个变量的协方差矩阵
例2:
>> X
X =
>> Y = [1 6 7; 7 5 9 ; 1 6 4 ; 2 9 2]
Y =
>> cov(X,Y)
ans =
现在用(1,1)和(1,2)位置验证
>> sum(sum((X-mean(mean(X))).^2))/11
ans =
>>
ans =
.....................................................................................
cov(X,1)
例3:
>> cov(X,1)
ans =
>> x=X(:,1);
sum((x-3.25).^2)/4
ans =
>>
>> y = y - 4.25;
>> aa = x'*y/4
aa =
例4:
X =
>> Y = [1 6 7; 7 5 9 ; 1 6 4 ; 2 9 2]
Y =
>> cov(X,Y)
ans =
>> a =cov(X,Y,1)
a =
>> a.*12/11
ans =