python斯皮尔曼spearman相关性分析实例
作者:fanstuck 发布时间:2021-04-13 00:53:13
前言
相关性分析算是很多算法以及建模的基础知识之一了,十分经典。关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达。其中常见的相关性系数就有三种:person相关系数,spearman相关系数,Kendall's tau-b等级相关系数。各有各自的用法和使用场景。当然关于这以上三种相关系数的计算算法和原理+代码我都会在我专栏里面写齐全。目前关于数学建模的专栏已经将传统的机器学习预测算法、维度算法、时序预测算法和权重算法写的七七八八了,有这个需求兴趣的同学可以去看看。 皮尔逊相关性分析一文详解+python实例代码
一、定义
经常用希腊字母ρ表示。 它是衡量两个变量的依赖性的非参数指标。 它利用单调方程评价两个统计变量的相关性。 如果数据中没有重复值, 并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或−1。斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。对于样本容量为n的样本,n个原始数据被转换成等级数据,相关系数ρ为:
其中,di为Xi和Yi之间的等级差。 di的计算方式为:
二、斯皮尔曼相关使用场景
斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只需两个变量的观测值是成对的等级评定数据,或者是由连续变量观测数据转化得到的等级数据,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。只要数据满足单调关系(例如线性函数、指数函数、对数函数等)就能够使用。
斯皮尔曼相关系数对于异常值不太敏感,因为它基于排序位次进行计算,实际数值之间的差异大小对于计算结果没有直接影响。
三、斯皮尔曼相关系数计算
和上期文章使用的函数一样,可以使用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
热力图
plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.heatmap(rho, annot=True)
plt.title('Heat Map', fontsize=18)
或者使用scipy的state函数,效果是一样的:
import numpy as np
from scipy import stats
stats.spearmanr(data1,data2)
四、斯皮尔曼相关系数的假设检验
分为两种情况:小样本和大样本
小样本情况(n ≤ 30),直接查临界值表H0:rs = 0; H1:rs ≠ 0
使用得出的斯皮尔曼相关系数 r 与对应的临界值进行比较。
大样本情况下,统计量
H0:rs = 0; H1:rs ≠ 0,计算检验值z*,并求出对应的p值与0.05比较即可。
来源:https://juejin.cn/post/7195433939593330749


猜你喜欢
- 目录前言项目设计后端前端运行项目Q&A前言在前面的Api开发中,我们使用FastApi已经可以很好的实现。但是实际使用中,我们通常建
- 找到nginx多网站配置文件:类似 nginx/sites-available/www.baidu.comserver { li
- 主要有以下区别:1、MySQL默认采用的是MyISAM。2、MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默
- 1.导入依赖包import ( "github.com/spf13/viper")2.编写ya
- 1. 初始化项目// ① npm i -g @vue/cli// ② vue create my-project// ③ npm insta
- 1.if ...else ...判断进行断言from time import *from selenium import webdriver
- Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块我在之前的文章已经有所介绍,它提
- 值得庆幸的是,我们可以通过数组的 slice 方法将 arguments 对象转换成真正的数组: var args = Array.prot
- Matplotlib可以无缝的处理LaTex字体,在图中加入数学公式from matplotlib.patches import Polyg
- XML文档对象模型(DOM)是什么?可扩展标记语言XML的基础是 DOM。XML 文档具有一个称为节点的信息单元层次结构;DOM 是描述那些
- 这篇文章主要介绍了Python socket聊天脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 一、开发接口的作用1、mock接口:模拟一些接口。有一些有关联的接口,在别的接口没有开发好的时候,需要用这个接口,就可以写一个假接口,返回想
- 有时候我们没办法得到pdf或者word文档,这个时候会使用手机或者相机进行拍照,往往会出现背景,打印出来就是灰色的或者有黑色的背景,这个时候
- 本文主要介绍了pandas针对excel处理的实现,分享给大家,具体如下:读取文件import padasdf = pd.read_csv(
- 一、创建数据表1、基本语法create table 表名 ( 字段名 字段类型 [字段属性], &n
- 需求我的需求是批量裁剪某一文件夹下的所有图片,并指定裁剪宽高。思路1、 先使用PIL.Image.size获取输入图片的宽高。2、宽高除以2
- http通过StreamingHttpResponse完成连续的数据传输长链接问题http服务之间传递结果流一个由flask封装起来的算法,
- 若你在搜索引擎(如百度)或者各种问答社区(如知乎)搜索 学习Python 最好的 IDE/编辑器是哪个?我想答案肯定是:PyCharm、Ju
- Numpy学习1 Numpy 介绍与应用1-1Numpy是什么NumPy 是一个运行速度非常快的数学库,一个开源的的python科学计算库,
- 1 concatconcat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合pd.concat(objs, axis=0,