常用的相关分析系数
- 一、Spearman Rank相关系数
- 1.1 Pearson相关系数的定义
- 1.2 python实现pearson相关系数
- 二、Spearman秩相关系数
- 2.1 Spearman 秩相关系数的定义
- 2.2 python 实现 Spearman 秩相关系数
- 三、Kendall(肯德尔)秩相关系数
相关分析是衡量事物之间或称变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程。比如,家庭收入和支出、一个人所受教育程度与其收入、子女身高和父母身高等。
相关分析的计算方式有三种,分别是Pearson相关系数(适用于定量数据,且数据满足正态分布)、Spearman相关系数(数据不满足正态分布时使用)。Kendall’s tau -b相关系数(有序定类变量)。
一、Spearman Rank相关系数
1.1 Pearson相关系数的定义
- 当两个变量都是正态连续独立变量,而且两者之间呈线性关系,两变量的方差不为0,通常用Pearson相关系数来衡量。
pearson是一个介于-1和1之间的值,当两个变量的线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关的,相关系数大于0;如果一个变量增大,另一个变量却减小,表明它们之间是负相关的,相关系数小于0;如果相关系数等于0,表明它们之间不存在线性相关关系。
上式定义了总体相关系数,常用希腊小写字母 ρ 作为代表符号。估算样本的协方差和标准差,可得到样本 Pearson 相关系数,用英文小写字母 r 表示
显著性检验的统计量为t统计量,其数学定义为:
虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度。
在二维空间中分布着一些数据,我们想知道数据点坐标X轴和Y轴的相关程度,如果X与Y的相关程度较小但是数据分布的比较离散,这样会导致求出的协方差值较大,用这个值来度量相关程度是不合理的,为了更好的度量两个随机变量的相关程度,引入了Pearson相关系数,其在协方差的基础上除以了两个随机变量的标准差。
- Pearson 相关系数对异常值比较敏感,在数据清洗阶段需要将异常值过滤或者平滑处理。
1.2 python实现pearson相关系数
import numpy as np
import scipy.stats as stats
import scipy
# 某银行25家分行不良贷款(y)与贷款余额(x)如下:
x = [67.3,111.3,173,80.8,199.7,16.2,107.4,185.4,96.1,72.8,64.2,132.2,58.6,174.6,263.5,79.3,14.8,73.5,24.7,139.4,368.2,95.7,109.6,196.2,102.2]
y = [0.9,1.1,4.8,3.2,7.8,2.7,1.6,12.5,1.0,2.6,0.3,4,0.8,3.5,10.2,3,0.2,0.4,1,6.8,11.6,1.6,1.2,7.2,3.2]
correlation,pvalue = stats.stats.pearsonr(x,y)
print ('correlation',correlation)
print ('pvalue',pvalue)
二、Spearman秩相关系数
2.1 Spearman 秩相关系数的定义
Spearman Rank相关系数,即斯皮尔曼秩相关系数(Spearman Rank Order Correlation Coefficient,简称SROCC)。
Spearman 秩相关系数是一个非参数性质(与分布无关、与是否线性关系无关)的秩统计参数,是用来度量两个连续型变量之间单调关系强弱的相关系数,取值范围也是 [−1,1],也可检测有序的离散变量间的相关系数.采用秩来计算,避免离群值对相关系数的影响。在没有重复数据的情况下,如果一个变量是另外一个变量的严格单调函数,则 Spearman 秩相关系数就是 1 或 −1,称变量完全 Spearman 秩相关。
等级相关,是将两变量的样本值按数据的大小顺序排列位次,以各要素样本值的位次代替实际数据而求得的一种统计量。排序不论从大到小还是从小到大排都无所谓,只要保证大家排序的标准一致即可。
用 来表示 Spearman 相关系数 (用 ρ_p 表示 Pearson 相关系数)。如果每个变量都没有相同的取值 (即没有相同的秩次),则 Spearman 相关系数可由下式计算:
其中,n 表示数据点的个数;di 表示数据点的秩次之差:。
如果某个变量有重复数据,则计算变量之间的 Spearman 相关系数就是计算变量数据秩次之间的 Pearson 相关系数:
其中,rx 表示变量 x 转换后的秩次。从这个定义可以看出来,Spearman 相关系数实际上就是对数据做了秩次变换后的 Pearson 相关系数。
此时,显著性检验的统计量为z统计量,其数据定义为:
- 举例说明,首先将样本进行秩次变换,样本升序排列后的位次如表 所示:
编号 | x | y | |||
1 | 0.1 | 0.1 | 1 | 1.5 | -0.5 |
2 | 0.2 | 0.1 | 2 | 1.5 | 0.5 |
3 | 0.3 | 0.2 | 3 | 3 | 0 |
4 | 0.4 | 0.6 | 4 | 4 | 0 |
5 | 0.5 | 0.7 | 5 | 5 | 0 |
6 | 0.6 | 0.8 | 6 | 6 | 0 |
7 | 0.7 | 0.9 | 7 | 7 | 0 |
8 | 0.8 | 1 | 8 | 8 | 0 |
需要说明的是,这里变量 y 有两个重复数据 0.1,在排序的时候它们的位次相同,此时可以用相同位次的数据所占的位次之和除以数据的数量 (即 (1+2)/2=1.5) 来作为这些重复数据的位次。
根据定义,当存在重复数据的时候,我们计算秩次 (即 rx, ry) 的 Pearson 相关系数
2.2 python 实现 Spearman 秩相关系数
from scipy.stats import spearmanr, pearsonr
x=[0.1, 0.2, 0.3, 0.4, 0.6, 0.7, 0.8, 0.9]
y=[0.1, 0.1, 0.2, 0.6, 0.7, 0.8, 0.9, 1.0]
spearmanr(x,y)
(0.99402979738800479, 5.2961535156451228e-07)
rx=[1, 2, 3, 4, 5, 6, 7, 8]
ry=[1.5, 1.5, 3, 4, 5, 6, 7, 8]
pearsonr(rx,ry)
- Spearman 相关系数是度量两个连续型变量之间单调关系强弱的相关系数,它对数据的分布不作任何假设,能够容忍异常值,也不需要数据的取值是等距的;
- Spearman 相关系数实际上就是对数据做了秩次变换后的 Pearson 相关系数,只要能用 Pearson 相关系数的地方就能使用 Spearman 相关系数;
- Spearman 相关系数还需要对原始数据进行排序,因此计算复杂度高于 Pearson 相关系数,当数据满足 Pearson 相关系数的使用条件时,优先考虑使用 Pearson 相关系数。
https://guyuecanhui.github.io/2019/07/28/feature-selection-spearman/
三、Kendall(肯德尔)秩相关系数
是一个非参数性质(与分布无关)的秩统计参数,是用来度量两个有序变量(如文化程度与消费比率的关系)之间单调关系强弱的相关系数。与Spearman秩相关系数基本类似。
Kendal秩相关系数公式有三个:
- τa公式适用于数据集中不存在相同数值的情况(即秩是唯一的)
表示所有样本两两组合的数量,在变量没有重复值的情况下,m=c+d。同序对c,就是两个变量取值的相对关系一致;异序对d:是指它们的相对关系不一致.
如下所示,假定变量X和变量Y的秩如下,先将X秩按升序排序,然后观察Y秩,变量Y的秩随变量X的秩同步增大的Y的秩对有(2,3),(2,4),(2,5),(3,4),(3,5),(1,4),(1,5),(4,5),即同序对的数目c共有8对;而变量Y的秩未随变量X的秩同步增大的Y的秩对有(2,1),(3,1),即异序对d共有2对。
- τb适用于存在相同数值的情况(即秩有重复的)
其中,c 在计算的时候只能算 ai<aj 且 bi<bj 的对数,d 也只能算 ai<aj 且 bi>bj 的对数 (i<j);tx,ty 分别表示变量 x,y 取值中序号相同的样本对数排除共同平局的部分。
举例说明
- τc公式没有考虑相同数值带来的影响,适用于用表格表示的两变量间相关系数的计算
Kendall检验是一个无参数假设检验,使用计算而得的相关系数去检验两个变量的相关显著性,其显著性检验的统计量为Z统计量,其数学定义为
from scipy.stats import kendalltau
kendalltau(x,y)