相关性分析

前言

参考网址:https://zhuanlan.zhihu.com/p/60059869
Pearson, Spearman, Kendall 三类相关系数是统计学上的三大重要相关系数,
表示两个变量之间变化的趋势方向和趋势程度。
复制代码

1/什么是相关性

相关性分析就是对总体中确实具有联系的标志进行分析,其主体是对总体中具有因果关系标志的分析。
它是描述客观事物相互间关系的密切程度,并用适当的统计指标表示出来的过程。

在一段时期内,出生率随经济水平上升而上升,这说明这2个特征之间是正相关关系;
而在另一段时期内,随着经济水平进一步发展,出现出生率下降的现象,两特征之间是负相关关系。

简单来说:
相关性就是看2个变量之间是否具有某种关系
如果一个变量变大,另一个也跟着变大,这就是正相关,
如果一个变量变大,另一个变量变小,则这是负相关。
如果2个变量之间没有关系,则说明这2个变量之间是没有相关性的,也就是说2个变量是独立的。
复制代码

2/相关系数r

两个变量之间的相关性用相关系数r来表示。
相关系数r的取值范围是[-1,1],可以是此范围内的任何值。

r值在0和1之间,这是正相关,散点图是斜向上的,这时一个变量增加,另一个变量也增加;
r值在-1和0之间,这是负相关,散点图是斜向下的,此时一个变量增加,另一个变量将减少。

r的绝对值越接近1,两变量的相关性越强(正相关性越强,负相关性越强),
r的绝对值越接近0,两变量的相关性越弱。

相关系数r大于0.4小于0.7叫弱相关,大于0.7叫强相关,
相关系数不管多大,只要Pvalue>0.05都无意义,pvalue>0.05说明得到的结果可能是偶然的

<0.2 不相关
0.2<r<0.4 关系一般
0.4<r<0.7 关系密切
r>0.7 关系非常密切

P_value,即p值,也就是Sig值。
如果P值<0.01即说明某件事情的发生至少有99%的把握,
如果P值<0.05(并且>0.01)则说明某件事情的发生至少有95%的把握。
当P<0.01或P<0.05,则为说明水平显著,这样得到的相关性才有意义

相关系数r回答的问题是相关程度强弱,显著性回答的问题是他们之间是否有关系,说明得到的结果是不是偶然因素导致的,是否具有统计学意义。
假如说我得到p<0.05 相关系数r=0.279,意味着二者之间确实(P<0.05)存在相关关系,而相关性为0.279,相关性并不高。
而如果p>0.05 相关系数r=0.799,则意味着二者之间相关性很强,而这个高相关的结果可能是偶然因素导致的,不具有统计学意义。
复制代码

3/相关性分析的要求

<1>只能对数值类型的变量进行相关性分析,不能对离散型(字符串类型)的变量进行分析,
   如果需要的话,可以通过一定的映射条件,把离散型数据映射成数值型.

<2>样本必须是成对的。

<3>在进行相关性分析的时候,为了保证得到的结果是更加科学的,所以对样本量是有要求的。
   最好样本量>500,如果样本量太少,不具有较强的说服力
   
复制代码

4/如何计算相关性

<1>dataframe.corr()

  .corr()方法是pandas的dataframe数据对象独有的方法
  该方法可以计算dataframe数据对象中任意2个变量(列)之间的相关系数,
  但是只能计算相关系数r,不能计算pvalue。
  而且只能对数值类型的列计算相关系数r,不是数值类型的列会被自动过滤掉。
  
  DataFrame.corr(method="pearson",min_periods=500)  # 相关系数只适用于数据类型的数据
  参数说明:
    method:可选值为{‘pearson’,‘spearman’,‘kendall’}
        1)pearson:又称积矩相关系数,Pearson相关系数来衡量两个数据集合是否在一条线上面,
                   即适用于线性数据的相关系数计算,对非线性数据会有误差。
          
        2)spearman:又称秩相关系数,非线性的,非正态分析的数据的相关系数
        
        3)kendall:也是秩相关系数,用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正态分布的数据。
    min_periods:样本最少的数据量
    
  返回值:各类型之间的相关系数构成的DataFrame表格,不能给出pvalue值
复制代码

<2>pearson 又称积矩相关系数,必须是连续变量

1)适用条件,只有满足以下条件,用pearson计算相关系数才有意义。
   <1>两个变量分别服从正态分布,或接近正态的单峰分布
   <2>两个变量的标准差都不为零时
   <3>两个变量之间是线性关系
   <4>两个变量都是连续变量
   <4>两个变量的观测值是成对的,每对观测值之间相互独立,样本量最好是在500以上
    
2)语法:
    from scipy import stats
    stats.pearsonr(x,y)
    
3)python3.6应用
  Dataframe.corr(method='pearson'), 返回相关关系矩阵,但不能给出pvalue值。

  from scipy.stats import normaltest, probplot
  normaltest(a)返回统计数和检验P值, 样本要求>20。
  probplot(np.array(x,y), dist="norm", plot=pylab) 化PP图,若在对角线,则相关性强。
  
复制代码

<3>spearman 又称秩相关系数,必须是连续变量

1)spearman是无参数的等级相关系数,即其值与两个相关变量的具体值无关,
  而仅仅与其值之间的大小关系有关。di表示两个变量分别排序后成对的变量位置差,N表示N个样本,减少异常值的影响。
复制代码

image.png

2)spearman对数据条件的要求没pearson相关系数严格,
    只要两个变量的观测值是成对的等级评定资料,
    或者是由连续变量观测资料转化得到的等级资料,
    不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。
 3)语法
    from scipy import stats
    stats.spearmanr(x,y)
 4)python3.6应用 :
    a) Dataframe.corr(method='spearman'), 返回相关关系矩阵,但是
    b) from scipy.stats import spearmanr
       spearmanr(array)返回 Spearman 系数(系数矩阵)和检验P值, 样本要求>20。
复制代码

<4> Kendall 相关系数,有序分类变量

结果:属于等级相关系数。排序一致,则为1, 排序完全相反则为-1。

python3.6应用 :
a) Dataframe.corr(method='kendall'), 返回相关关系矩阵
b) from scipy.stats import kendalltau
   kendalltau(x, y) 返回系数和P值
复制代码

<4>什么情况下采用pearson,什么情况下用spearman

1)两个连续变量间呈线性相关时(线绘制散点图,看是否是线性相关),使用Pearson积矩相关系数,
   不满足积矩相关分析的适用条件时,使用Spearman秩相关系数来描述.

2)利用两变量的秩次大小作线性相关分析,对原始变量的分布不作要求,属于非参数统计方法,适用范围更广。
  对于服从Pearson相关系数的数据亦可计算Spearman相关系数,但统计效能要低一些。
  Spearman相关系数的计算公式可以完全套用Spearman相关系数计算公式,但公式中的x和y用相应的秩次代替即可。
3)二者共同的地方是:2个变量必须都是连续变量,不能是离散变量
    
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享