皮尔逊相关分析的MATLAB实现,corr(),corrcoef()函数使用

皮尔逊相关系数可以用来表述两个序列的相关性。

常常用来做数据分析、数据挖掘等工作。

如何简单快捷的实现皮尔逊相关,并得到结果?
需要应用MATLAB中的corr(X, Y)或者 corrcoef(X,Y)函数。

其中corr(X, Y)既可以计算矩阵相关也可以计算序列相关,而corrcoef(X,Y)中如果X, Y为矩阵,则会将其转换为序列再进行计算。

CORR

皮尔逊相关分析的MATLAB实现,corr(),corrcoef()函数使用_第1张图片
伪代码

X,Y  # 为两个序列并且都是列向量.
pearson_corr = corr(X, Y)   #  求X, Y序列的皮尔逊相关系数.

该函数同样可以设置参数计算不同的相关系数。

'Pearson' (the default) computes Pearson's linear correlation coefficient
'Kendall' computes Kendall's tau
'Spearman' computes Spearman's rho

Example 1

A = randn(10,1);
B = randn(10,1);
R = corrcoef(A,B)
X = corr(A,B)

如果corr()输入为向量则其输出为两个向量相关性的标量系数。

R =
   1.000000000000000   0.327514034455913
   0.327514034455913   1.000000000000000
X =
   0.327514034455913

即R(1,2)= R(2,1)= X

Example 2

rng('default')
x = randn(30,4);
y = randn(30,4);
y(:,4) = sum(x,2); % introduce correlation
[r,p] = corr(x,y)

其中 r 为两个矩阵中列向量间的相关系数,p 为非零相关的假设检验值(位置与 r 对应),如果值小于 0.05 则相关性显著。

r =

   -0.1686   -0.0363    0.2278    0.6901
    0.3022    0.0332   -0.0866    0.2617
   -0.3632   -0.0987   -0.0200    0.3504
   -0.1365   -0.1804    0.0853    0.4908


p =

    0.3731    0.8489    0.2260    0.0000
    0.1045    0.8619    0.6491    0.1624
    0.0485    0.6039    0.9166    0.0577
    0.4721    0.3400    0.6539    0.0059

CORRCOEF

皮尔逊相关分析的MATLAB实现,corr(),corrcoef()函数使用_第2张图片
其中corrcoef( )返回的 P 值同样为假设检验值,在corr()中解释过不再解释,详情请见MATLAB帮助文档。

Example 1

x = randn(6,1);
y = randn(6,1);
A = [x y 2*y+3];
R = corrcoef(A)

上述例子中A为(6,3)矩阵,将其每列看作一组变量的序列,进行相关性计算,得到结果

 R = 
    1.0000   -0.6237   -0.6237
   -0.6237    1.0000    1.0000
   -0.6237    1.0000    1.0000

对角线上由于是变量自相关所以都是1,元素(2,3)由于 y 与 2*y+3 是线性相关所以相关系数也是1。

Example 2

A = randn(10,1);
B = randn(10,1);
R = corrcoef(A,B)

上述A,B分别为长度为10的列向量,函数将两个列向量看作两个变量进行相关性分析。

R = 
    1.0000    0.4518
    0.4518    1.0000

你可能感兴趣的:(深度学习与数据处理,matlab,数据分析,机器学习,数据挖掘)