主要内容

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

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(0,"twister"); % For reproducibility
X = rand(5, 5);
indices = randperm(numel(X), 1);
X(indices) = NaN
X = 5×5

    0.8147    0.0975    0.1576    0.1419    0.6557
    0.9058    0.2785    0.9706    0.4218    0.0357
    0.1270    0.5469    0.9572    0.9157    0.8491
    0.9134    0.9575    0.4854       NaN    0.9340
    0.6324    0.9649    0.8003    0.9595    0.6787

计算由两两线性相关系数组成的矩阵。

rho = corr(X)
rho = 5×5

    1.0000   -0.0875   -0.4566       NaN   -0.3958
   -0.0875    1.0000    0.2336       NaN    0.5303
   -0.4566    0.2336    1.0000       NaN   -0.3636
       NaN       NaN       NaN       NaN       NaN
   -0.3958    0.5303   -0.3636       NaN    1.0000

每个条目 rho(a,b)Xa 列和 b 列之间的两两线性相关系数。默认情况下,如果 ab 包含缺失值,则 rho(a,b)NaN

使用在列 ab 中没有缺失值的行计算系数矩阵的每个元素 rho(a,b)

rho2 = corr(X,Rows="pairwise")
rho2 = 5×5

    1.0000   -0.0875   -0.4566   -0.7054   -0.3958
   -0.0875    1.0000    0.2336    0.9089    0.5303
   -0.4566    0.2336    1.0000    0.6948   -0.3636
   -0.7054    0.9089    0.6948    1.0000    0.4338
   -0.3958    0.5303   -0.3636    0.4338    1.0000

软件仅使用 X 的第一行、第二行、第三行和第五行来计算第四行第四列的系数。

仅使用 X 中没有缺失值的行计算系数矩阵的每个元素 rho(a,b)

rho = corr(X,Rows="complete")
rho = 5×5

    1.0000   -0.4044   -0.3842   -0.7054   -0.7317
   -0.4044    1.0000    0.5057    0.9089    0.3614
   -0.3842    0.5057    1.0000    0.6948   -0.2608
   -0.7054    0.9089    0.6948    1.0000    0.4338
   -0.7317    0.3614   -0.2608    0.4338    1.0000

软件仅使用 X 的第一行、第二行、第三行和第五行来计算系数矩阵。

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

生成样本数据。

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'

在计算中要使用的行,指定为以下值之一。

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

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

如果 Rows="all"(默认值),则当列 ij 包含缺失值时,rho(i,j)pval(i,j)NaN

示例: Rows="pairwise"

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

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

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

示例: 'Tail','left'

观测值权重,指定为有非负标量值组成的 n×1 向量,其中 n 是观测值数目。有关详细信息,请参阅算法

示例: Weights=[300 457 200]

数据类型: single | double

输出参量

全部折叠

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

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

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

  • 如果 Rows="all"(默认值),则当列 ij 包含缺失值时,rho(i,j)NaN

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

rho 的对应元素为 NaN,或当您使用 Weights 名称-值参量指定观测值权重时,pvalNaN

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

详细信息

全部折叠

提示

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

算法

当您指定 Weights 名称-值参量时,corr 通过对方差和协方差计算进行加权来计算皮尔逊相关性。对于斯皮尔曼相关性(基于秩),corr 按照 [5] 的建议计算加权秩。要计算肯德尔相关性(基于排列计数),corr 会扩展 [6] 中的加权计数算法以考虑结值。

参考

[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.

[5] Bailey, Paul, and Ahmad Emad (2023). wCorr: Weighted Correlations. R package version 1.9.7, https://american-institutes-for-research.github.io/wCorr.

[6] Van Doorn, Johnny, et al. "Using the Weighted Kendall Distance to Analyze Rank Data in Psychology." The Quantitative Methods for Psychology, vol. 17, no. 2, June 2021, pp. 154–65.

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开