Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

corr

线性或秩相关性

说明

rho = corr(X) 返回输入矩阵 X 中各列之间的两两线性相关系数矩阵。

示例

rho = corr(X,Y) 返回输入矩阵 XY 中各列之间的两两相关系数矩阵。

示例

[rho,pval] = corr(X,Y) 还返回 pval,它是一个 p 值矩阵,用于基于非零相关性备择假设来检验无相关性假设。

示例

[rho,pval] = corr(___,Name,Value) 可在前面语法中的输入参数外使用一个或多个名称-值对组参数指定选项。例如,'Type','Kendall' 指定计算肯德尔 tau 相关系数。

示例

全部折叠

计算两个矩阵之间的相关性,并将其与两个列向量之间的相关性进行比较。

生成样本数据。

rng('default')
X = randn(30,4);
Y = randn(30,4);

在矩阵 X 的第二列和矩阵 Y 的第四列之间引入相关性。

Y(:,4) = Y(:,4)+X(:,2);

计算 XY 的列之间的相关性。

[rho,pval] = corr(X,Y)
rho = 4×4

   -0.1686   -0.0363    0.2278    0.3245
    0.3022    0.0332   -0.0866    0.7653
   -0.3632   -0.0987   -0.0200   -0.3693
   -0.1365   -0.1804    0.0853    0.0279

pval = 4×4

    0.3731    0.8489    0.2260    0.0802
    0.1045    0.8619    0.6491    0.0000
    0.0485    0.6039    0.9166    0.0446
    0.4721    0.3400    0.6539    0.8837

与预期相符,X 的第二列和 Y 的第四列之间的相关系数 rho(2,4) 最高,表示这两列之间存在高正相关性。对于所示的四个数,对应的 ppval(2,4) 为零。由于 p 值小于显著性水平 0.05,这表明拒绝两列之间不存在相关性的假设。

使用 corrcoef 计算 XY 之间的相关性。

[r,p] = corrcoef(X,Y)
r = 2×2

    1.0000   -0.0329
   -0.0329    1.0000

p = 2×2

    1.0000    0.7213
    0.7213    1.0000

corr 函数不同,MATLAB® 函数 corrcoef 在计算输入矩阵 XY 之间的相关性之前,将它们转换为列向量 X(:)Y(:)。因此,在矩阵 X 的第二列和矩阵 Y 的第四列之间引入的相关性不再存在,因为这两列位于转换后的列向量的不同部分。

r 的非对角线元素的值(表示 XY 之间相关系数)较低。该值表示 XY 之间几乎没有相关性。同样,p 的非对角线元素的值(表示 p 值)远远高于显著性水平 0.05。该值表明没有足够的证据来拒绝 XY 之间没有相关性的假设。

检验两个矩阵列之间正、负和非零相关性的备择假设。比较每种情况下相关系数的值和 p 值。

生成样本数据。

rng('default')
X = randn(50,4);
Y = randn(50,4);

在矩阵 X 的第一列和矩阵 Y 的第四列之间引入正相关性。

Y(:,4) = Y(:,4)+0.7*X(:,1);

X 的第二列和 Y 的第二列之间引入负相关性。

Y(:,2) = Y(:,2)-2*X(:,2);

检验相关性大于零的备择假设。

[rho,pval] = corr(X,Y,'Tail','right')
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.3327    0.8405    0.5097    0.0000
    0.7962    1.0000    0.6192    0.0836
    0.7803    0.0615    0.9927    0.2298
    0.9940    0.9397    0.2398    0.3982

与预期相符,X 的第一列和 Y 的第四列之间的相关系数 rho(1,4) 具有最高的正值,表示这两列之间存在高正相关性。对于所示的四个数,对应的 ppval(1,4) 为零,低于显著性水平 0.05。这些结果表明拒绝这两列之间不存在相关性的原假设,并得出相关性大于零的结论。

检验相关性小于零的备择假设。

[rho,pval] = corr(X,Y,'Tail','left')
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.6673    0.1595    0.4903    1.0000
    0.2038    0.0000    0.3808    0.9164
    0.2197    0.9385    0.0073    0.7702
    0.0060    0.0603    0.7602    0.6018

与预期相符,X 的第二列和 Y 的第二列之间的相关系数 rho(2,2) 为绝对值最大的负数 (-0.86),表示这两列之间存在高负相关性。对于所示的四个数,对应的 ppval(2,2) 为零,低于显著性水平 0.05。同样,这些结果表明拒绝原假设,并得出相关性小于零的结论。

检验相关性不为零的备择假设。

[rho,pval] = corr(X,Y)
rho = 4×4

    0.0627   -0.1438   -0.0035    0.7060
   -0.1197   -0.8600   -0.0440    0.1984
   -0.1119    0.2210   -0.3433    0.1070
   -0.3526   -0.2224    0.1023    0.0374

pval = 4×4

    0.6654    0.3190    0.9807    0.0000
    0.4075    0.0000    0.7615    0.1673
    0.4393    0.1231    0.0147    0.4595
    0.0120    0.1206    0.4797    0.7964

对于所示的四个数,ppval(1,4)pval(2,2) 均为零。由于 p 值低于显著性水平 0.05,因此相关系数 rho(1,4)rho(2,2) 显著不同于零。因此,拒绝原假设;相关性不是零。

输入参数

全部折叠

输入矩阵,指定为 n×k 矩阵。X 的行对应于观测值,而列对应于变量。

示例: X = randn(10,5)

数据类型: single | double

输入矩阵,当 X 指定为 n×k1 矩阵时,指定为 n×k2 矩阵。Y 的行对应于观测值,而列对应于变量。

示例: Y = randn(20,7)

数据类型: single | double

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: corr(X,Y,'Type','Kendall','Rows','complete') 仅使用不包含缺失值的行返回肯德尔 tau 相关系数。

相关性的类型,指定为以逗号分隔的对组,其中包含 'Type' 和下列值之一。

corr 使用 Student t 分布来转换相关性以计算皮尔逊相关性的 p 值。当 XY 来自正态分布时,这种相关性是精确的。corr 使用精确排列分布(对于小样本)或大样本近似分布计算肯德尔 tau 和斯皮尔曼 rho 的 p 值。

示例: 'Type','Spearman'

在计算中要使用的行,指定为以逗号分隔的对组,其中包含 'Rows' 和下列值之一。

描述
'all'使用输入的所有行,而不考虑缺失值 (NaN)。
'complete'仅使用没有缺失值的输入行。
'pairwise'使用 ij 列中没有缺失值的行计算 rho(i,j)

'pairwise' 值不同,'complete' 值始终生成正定或半正定 rho。此外,当输入(XY)的行包含缺失值时,'complete' 值通常使用较少的观测值来估计 rho

示例: 'Rows','pairwise'

备择假设,指定为以逗号分隔的对组,其中包含 'Tail' 和下表中的值之一。'Tail' 指定计算 p 值所针对的备择假设,用于检验无相关性的假设。

描述
'both'检验相关性不为 0 的备择假设。
'right'检验相关性大于 0 的备择假设
'left'检验相关性小于 0 的备择假设。

corr 通过将两个单尾 p 值中的较大值加倍,计算双尾检验的 p 值。

示例: 'Tail','left'

输出参数

全部折叠

两两线性相关系数,以矩阵形式返回。

  • 如果您只输入矩阵 Xrho 是对称的 k×k 矩阵,其中 k 是 X 中的列数。条目 rho(a,b)X 中 a 列和 b 列之间的两两线性相关系数。

  • 如果您输入矩阵 XYrho 是 k1×k2 矩阵,其中 k1 和 k2 分别是 XY 中的列数。条目 rho(a,b)X 中的 a 列和 Y 中的 b 列之间的两两线性相关系数。

p 值,以矩阵形式返回。pval 的每个元素均为 rho 的对应元素的 p 值。

如果 pval(a,b) 较小(小于 0.05),则相关性 rho(a,b) 显著不同于零。

详细信息

全部折叠

皮尔逊线性相关系数

皮尔逊线性相关系数是最常用的线性相关系数。对于矩阵 X 中的 Xa 列和矩阵 Y 中的 Yb 列,其含义为 X¯a=i=1n(Xa,i)/n,Y¯b=j=1n(Yb,j)/n,皮尔逊线性相关系数 rho(a,b) 定义为:

rho(a,b)=i=1n(Xa,iX¯a)(Yb,iY¯b){i=1n(Xa,iX¯a)2j=1n(Yb,jY¯b)2}1/2,

,其中 n 为每个列的长度。

相关系数的值的范围是从 –1+1。值 –1 表示完全负相关,而值 +1 表示完全正相关。值 0 表示列之间没有相关性。

肯德尔 tau 相关系数

肯德尔 tau 基于 (i,j) 同序对的计数(其中 i<j),同序是指 Xa,iXa,jYb,iYb,j 具有相同的符号。肯德尔 tau 方程包括对归一化常量中结值的调整项,通常称为 tau-b。

对于矩阵 X 中的 Xa 列和矩阵 Y 中的 Yb 列,肯德尔 tau 系数定义为:

τ=2Kn(n1),

其中 K=i=1n1j=i+1nξ*(Xa,i,Xa,j,Yb,i,Yb,j), 并且

ξ*(Xa,i,Xa,j,Yb,i,Yb,j)={1if(Xa,iXa,j)(Yb,iYb,j)>00if(Xa,iXa,j)(Yb,iYb,j)=01if(Xa,iXa,j)(Yb,iYb,j)<0.

相关系数的值的范围是从 –1+1。值 –1 表示一个列秩序是另一个列秩序的逆,值 +1 表示两个列秩序相同。值 0 表示列之间没有关系。

斯皮尔曼 rho

斯皮尔曼 rho 等效于应用于 Xa 和 Yb 列的秩序的 皮尔逊线性相关系数

如果每个列中的所有秩都不同,该方程可简化为:

rho(a,b)=16d2n(n21),

其中,d 是两个列的秩之差,n 是每列的长度。

提示

corr(X,Y) 和 MATLAB® 函数 corrcoef(X,Y) 之间的区别在于 corrcoef(X,Y) 返回两个列向量 XY 的相关系数的矩阵。如果 XY 不是列向量,corrcoef(X,Y) 会将它们转换为列向量。

参考

[1] Gibbons, J.D. Nonparametric Statistical Inference. 2nd ed. M. Dekker, 1985.

[2] Hollander, M., and D.A. Wolfe. Nonparametric Statistical Methods. Wiley, 1973.

[3] Kendall, M.G. Rank Correlation Methods. Griffin, 1970.

[4] Best, D.J., and D.E. Roberts. "Algorithm AS 89: The Upper Tail Probabilities of Spearman's rho." Applied Statistics, 24:377-379.

扩展功能

版本历史记录

在 R2006a 之前推出