12.cov函数
cov函数用于求协方差矩阵,计算协方差的数学公式为:cov(x1,x2)=E[(x1-u1)(x2-u2)]。其中,E是数学期望,u1=Ex1,u2=Ex2。cov函数的调用语法如下。
(1)C=cov(x):若x为一向量,返回的则是向量元素的方差,为一标量;若x为一个矩阵,则返回协方差矩阵。
(2)C=cov(x,y):计算列向量x、y的协方差,要求x、y具有相等的元素个数。如果x、y是矩阵,那么MATLAB会将其转换为列向量,相当于cov([A(:),B(:)])。
【例4-27】 cov函数使用示例。
>> A = [-1 1 2 ; -2 3 1 ; 4 0 3]
A =
-1 1 2
-2 3 1
4 0 3
>> C=cov(A) % 协方差矩阵
C =
10.3333 -4.1667 3.0000
-4.1667 2.3333 -1.5000
3.0000 -1.5000 1.0000
>> v = diag(cov(A))' % 矩阵A每列的方差
v =
10.3333 2.3333 1.0000
>> V = var(A) % 矩阵A每列的方差
V =
10.3333 2.3333 1.0000
通过比较可以看出,协方差矩阵主对角线上的元素就是每列的方差。
13.corrcoef函数
corrcoef函数用来计算矩阵相关系数。相关系数用符号表示,是一个无量纲量,计算公式为:。函数corrcoef的调用语法如下。
(1)corrcoef(x):若x为一个矩阵,返回的则是一个相关系数矩阵,其尺寸与矩阵x一样。
(2)corrcoef(x,y):计算列向量x、y的相关系数,要求x、y具有相等的元素个数。如果x、y是矩阵,那么corrcoef函数会将其转换为列向量,相当于corrcoef([x(:),y(:)])。
【例4-28】 随机生成一组数据,考察第4列和其他列的相关性。
>> x = randn(30,4); % 无关联的数据
>> x(:,4) = sum(x,2); % 引入相关性
>> [r,p] = corrcoef(x) % 计算样本相关性和p值
r =
1.0000 0.3006 -0.1030 0.6403
0.3006 1.0000 -0.1786 0.6412
-0.1030 -0.1786 1.0000 0.2719
0.6403 0.6412 0.2719 1.0000
p =
1.0000 0.1065 0.5881 0.0001
0.1065 1.0000 0.3449 0.0001
0.5881 0.3449 1.0000 0.1461
0.0001 0.0001 0.1461 1.0000
>> [i,j] = find(p<0.05); % 查找显著性相关
>> [i,j] % 显示下标索引
ans =
4 1
4 2
1 4
2 4