corr
线性或秩相关性
说明
示例
计算两个矩阵之间的相关性
计算两个矩阵之间的相关性,并将其与两个列向量之间的相关性进行比较。
生成样本数据。
rng('default')
X = randn(30,4);
Y = randn(30,4);
在矩阵 X
的第二列和矩阵 Y
的第四列之间引入相关性。
Y(:,4) = Y(:,4)+X(:,2);
计算 X
和 Y
的列之间的相关性。
[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)
最高,表示这两列之间存在高正相关性。对于所示的四个数,对应的 p 值 pval(2,4)
为零。由于 p 值小于显著性水平 0.05
,这表明拒绝两列之间不存在相关性的假设。
使用 corrcoef
计算 X
和 Y
之间的相关性。
[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
在计算输入矩阵 X
和 Y
之间的相关性之前,将它们转换为列向量 X(:)
和 Y(:)
。因此,在矩阵 X
的第二列和矩阵 Y
的第四列之间引入的相关性不再存在,因为这两列位于转换后的列向量的不同部分。
r
的非对角线元素的值(表示 X
和 Y
之间相关系数)较低。该值表示 X
和 Y
之间几乎没有相关性。同样,p
的非对角线元素的值(表示 p 值)远远高于显著性水平 0.05
。该值表明没有足够的证据来拒绝 X
和 Y
之间没有相关性的假设。
检验相关性的备择假设
检验两个矩阵列之间正、负和非零相关性的备择假设。比较每种情况下相关系数的值和 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)
具有最高的正值,表示这两列之间存在高正相关性。对于所示的四个数,对应的 p 值 pval(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
),表示这两列之间存在高负相关性。对于所示的四个数,对应的 p 值 pval(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
对于所示的四个数,p 值 pval(1,4)
和 pval(2,2)
均为零。由于 p 值低于显著性水平 0.05
,因此相关系数 rho(1,4)
和 rho(2,2)
显著不同于零。因此,拒绝原假设;相关性不是零。
输入参数
X
— 输入矩阵
矩阵
输入矩阵,指定为 n×k 矩阵。X
的行对应于观测值,而列对应于变量。
示例: X = randn(10,5)
数据类型: single
| double
Y
— 输入矩阵
矩阵
输入矩阵,当 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
— 相关性的类型
'Pearson'
(默认) | 'Kendall'
| 'Spearman'
相关性的类型,指定为以逗号分隔的对组,其中包含 'Type'
和下列值之一。
值 | 描述 |
---|---|
'Pearson' | 皮尔逊线性相关系数 |
'Kendall' | 肯德尔 tau 相关系数 |
'Spearman' | 斯皮尔曼 rho |
corr 使用 Student t 分布来转换相关性以计算
皮尔逊相关性的 p 值。当 X
和 Y
来自正态分布时,这种相关性是精确的。corr
使用精确排列分布(对于小样本)或大样本近似分布计算肯德尔 tau 和斯皮尔曼 rho 的 p 值。
示例: 'Type','Spearman'
Rows
— 在计算中要使用的行
'all'
(默认) | 'complete'
| 'pairwise'
Tail
— 备择假设
'both'
(默认) | 'right'
| 'left'
备择假设,指定为以逗号分隔的对组,其中包含 'Tail'
和下表中的值之一。'Tail'
指定计算 p 值所针对的备择假设,用于检验无相关性的假设。
值 | 描述 |
---|---|
'both' | 检验相关性不为 0 的备择假设。 |
'right' | 检验相关性大于 0 的备择假设 |
'left' | 检验相关性小于 0 的备择假设。 |
corr
通过将两个单尾 p 值中的较大值加倍,计算双尾检验的 p 值。
示例: 'Tail','left'
输出参数
pval
— p 值
矩阵
p 值,以矩阵形式返回。pval
的每个元素均为 rho
的对应元素的 p 值。
如果 pval(a,b)
较小(小于 0.05
),则相关性 rho(a,b)
显著不同于零。
详细信息
皮尔逊线性相关系数
皮尔逊线性相关系数是最常用的线性相关系数。对于矩阵 X 中的 Xa 列和矩阵 Y 中的 Yb 列,其含义为 和 ,皮尔逊线性相关系数 rho(a,b) 定义为:
,其中 n 为每个列的长度。
相关系数的值的范围是从 –1
到 +1
。值 –1
表示完全负相关,而值 +1
表示完全正相关。值 0
表示列之间没有相关性。
肯德尔 tau 相关系数
肯德尔 tau 基于 (i,j) 同序对的计数(其中 i<j),同序是指 和 具有相同的符号。肯德尔 tau 方程包括对归一化常量中结值的调整项,通常称为 tau-b。
对于矩阵 X 中的 Xa 列和矩阵 Y 中的 Yb 列,肯德尔 tau 系数定义为:
其中 并且
相关系数的值的范围是从 –1
到 +1
。值 –1
表示一个列秩序是另一个列秩序的逆,值 +1
表示两个列秩序相同。值 0
表示列之间没有关系。
斯皮尔曼 rho
提示
corr(X,Y)
和 MATLAB® 函数 corrcoef(X,Y)
之间的区别在于 corrcoef(X,Y)
返回两个列向量 X
和 Y
的相关系数的矩阵。如果 X
和 Y
不是列向量,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.
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
另请参阅
corrcoef
| partialcorr
| corrcov
| tiedrank
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)