python斯皮尔曼spearman相关性分析实例

作者:fanstuck 时间:2021-04-13 00:53:13 

前言

相关性分析算是很多算法以及建模的基础知识之一了,十分经典。关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达。其中常见的相关性系数就有三种:person相关系数,spearman相关系数,Kendall's tau-b等级相关系数。各有各自的用法和使用场景。当然关于这以上三种相关系数的计算算法和原理+代码我都会在我专栏里面写齐全。目前关于数学建模的专栏已经将传统的机器学习预测算法、维度算法、时序预测算法和权重算法写的七七八八了,有这个需求兴趣的同学可以去看看。 皮尔逊相关性分析一文详解+python实例代码

python斯皮尔曼spearman相关性分析实例

一、定义

经常用希腊字母ρ表示。 它是衡量两个变量的依赖性的非参数指标。 它利用单调方程评价两个统计变量的相关性。 如果数据中没有重复值, 并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或−1。斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。对于样本容量为n的样本,n个原始数据被转换成等级数据,相关系数ρ为:

python斯皮尔曼spearman相关性分析实例

其中,di为Xi和Yi之间的等级差。 di的计算方式为:

python斯皮尔曼spearman相关性分析实例

二、斯皮尔曼相关使用场景

斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只需两个变量的观测值是成对的等级评定数据,或者是由连续变量观测数据转化得到的等级数据,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。只要数据满足单调关系(例如线性函数、指数函数、对数函数等)就能够使用。

斯皮尔曼相关系数对于异常值不太敏感,因为它基于排序位次进行计算,实际数值之间的差异大小对于计算结果没有直接影响。

三、斯皮尔曼相关系数计算

和上期文章使用的函数一样,可以使用pandas的函数corr:

DataFrame.corr(method='pearson',
              min_periods=1,
              numeric_only=_NoDefault.no_default)

参数说明:

method: {‘pearson’, ‘kendall’, ‘spearman’} or callable。Method of correlation。

  • pearson : standard correlation coefficient,皮尔逊系数

  • kendall : Kendall Tau correlation coefficient,肯德尔系数

  • spearman :Spearman rank correlation,斯皮尔曼系数

min_periods:int, optional。每对列所需的最小样本数。目前仅适用于Pearson和Spearman相关性。

numeric_only:bool, default True。仅包含浮点、整型或布尔型数据。

实现起来很简单

rho =df_test.corr(method='spearman')
rho

python斯皮尔曼spearman相关性分析实例

热力图

plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.heatmap(rho, annot=True)
plt.title('Heat Map', fontsize=18)

python斯皮尔曼spearman相关性分析实例

或者使用scipy的state函数,效果是一样的:

import numpy as np
from scipy import stats
stats.spearmanr(data1,data2)

四、斯皮尔曼相关系数的假设检验

分为两种情况:小样本和大样本

小样本情况(n ≤ 30),直接查临界值表H0:rs = 0; H1:rs ≠ 0

使用得出的斯皮尔曼相关系数 r 与对应的临界值进行比较。

python斯皮尔曼spearman相关性分析实例

大样本情况下,统计量

python斯皮尔曼spearman相关性分析实例

 H0:rs = 0; H1:rs ≠ 0,计算检验值z*,并求出对应的p值与0.05比较即可。

来源:https://juejin.cn/post/7195433939593330749

标签:python,spearman,斯皮尔曼,相关性,数据分析
0
投稿

猜你喜欢

  • 三条asp语句搞定路径

    2007-10-22 13:30:00
  • php7 图形用户界面GUI 开发示例

    2023-09-12 03:16:50
  • ASP伪静态页简单教程

    2007-09-28 14:35:00
  • 6个网站改版时需要注意的问题

    2010-02-26 10:47:00
  • 详解Python如何使用Netmiko进行文件传输

    2021-06-20 19:49:17
  • 关于VSCode 配置使用 PyLint 语法检查器的问题

    2023-06-18 17:10:33
  • SQLServer中的切割字符串SplitString函数

    2011-12-01 08:14:09
  • python基础教程之csv文件的写入与读取

    2021-06-18 21:21:00
  • python分布式编程实现过程解析

    2023-11-10 21:13:48
  • python交互式图形编程实例(一)

    2022-11-12 14:44:53
  • python3.6的venv模块使用详解

    2023-05-11 12:13:41
  • php连接不上mysql但mysql命令行操作正常的解决方法

    2023-11-18 20:02:43
  • 定义列表: DL DT DD

    2009-05-06 13:08:00
  • 如何利用Image Data Type在主页中显示图形?

    2010-01-01 15:13:00
  • Python timeit模块原理及使用方法

    2023-09-22 08:19:18
  • Access数据库安全问答

    2007-08-23 15:28:00
  • Python稀疏矩阵scipy.sparse包使用详解

    2022-07-31 04:42:42
  • 情感的容器 被寄托了的QQ2010视觉设计

    2010-02-03 14:51:00
  • 互联网产品的用户体验看着“很美”

    2009-07-07 12:04:00
  • 用 AjaxTags 简化 Ajax 开发

    2007-11-27 00:00:00
  • asp之家 网络编程 m.aspxhome.com