皮尔逊相关性分析一文详解+python实例代码

news2024/9/22 6:00:53

目录

前言

一、数值类型

二、皮尔逊系数使用场景

二、皮尔逊相关系数(Pearson correlation)

1.定义

 2.线性关系判定

 3.正态检验

1.KS检验

4.计算代码

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

参阅


前言

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


 

一、数值类型

之前在我上篇文章说过关于数据特征是一个很重要的例子,任何分析算法都需要建立在其符合使用场景之上,我们需要对症下药,从数据特征开始分析。

按照数据存储的数据格式可以归纳为两类:

  按照特征数据含义又可分为:

  • 离散型随机变量:取值只能是可取范围内的指定数值类型的随机变量,比如年龄、车流量此类数据。
  • 连续随机变量:按照测量或者计算方法得到,在某个范围内连取n个值,此类数据可化为定类数据。
  • 二分类数据:此类数据仅只有两类:例如是与否、成功与失败。
  • 多分类数据:此类数据有多类:例如天气出太阳、下雨、阴天。
  • 周期型数据:此类数据存在一个周期循环:例如周数月数。

那么问题来了,关于这三种系数到底适用于哪种数据场景呢?

二、皮尔逊系数使用场景

首先使用皮尔逊系数的情况包含以下三种特性,我们从scipy的函数pearsonr的相关说明就可以看出:

The Pearson correlation coefficient [1] measures the linear relationship between two datasets. Like other correlation coefficients, this one varies between -1 and +1 with 0 implying no correlation. Correlations of -1 or +1 imply an exact linear relationship. Positive correlations imply that as x increases, so does y. Negative correlations imply that as x increases, y decreases.

也就是说:

皮尔逊相关系数测量两个数据集之间的线性关系。与其他相关系数一样,该系数在-1和+1之间变化,0表示不相关。-1或+1的相关性意味着精确的线性关系。正相关意味着x增加,y也增加。负相关意味着随着x增加,y减少。

总结一下对于皮尔逊相关系数的使用场景,有三种必要的特性使用皮尔逊系数最佳:

  • 连续数据
  • 正态分布
  • 线性关系

上述三个条件均满足才能使用pearson相关系数,否则就用spearman相关系数。定序数据之间也只用spearman相关系数,不能用pearson相关系数。

二、皮尔逊相关系数(Pearson correlation)

1.定义

两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:

 上式定义了总体相关系数,常用希腊小写字母\rho作为代表符号。估算样本的协方差和标准差,可得到皮尔逊相关系数,常用英文小写字母r代表:

 r亦可由(X_{i},Y_{i})样本点的标准分数均值估计,得到与上式等价的表达式:

 其中以及\sigma _{X}分别是对X_{i}样本的标准分数、样本平均值和样本标准差。

 变量相关强度

相关程度极强相关强相关中等强度相关弱相关极弱相关或无相关
相关系数绝对值1-0.80.8-0.6

0.6-0.4

0.4-0.20.2-0

 2.线性关系判定

一般可以利用散点图加上最小二乘法拟合大体看出线性关系:

 

 

 3.正态检验

1.KS检验

假设检验的基本思想:

       若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的。如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设。

实质分析:

        假设检验实质上是对原假设是否正确进行检验,因此检验过程中要使原假设得到维护,使之不轻易被拒绝;否定原假设必须有充分的理由。同时,当原假设被接受时,也只能认为否定该假设的根据不充分,而不是认为它绝对正确。

借助假设检验的思想,利用K-S检验可以对数列的性质进行检验:

def normal_test(data):
    u = data.mean()
    std = data.std()
    result = stats.kstest(data, 'norm', (u, std))
    print(result)
normal_test()

 此时,pvalue > 0.05,不拒绝原假设。因此数据服从正态分布。

4.计算代码

若以上验证均成功则采取皮尔逊相关系数进行相关性分析,可以使用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='pearson')
rho

 

对生成的相关系数矩阵进行可视化操作(生成热力图):

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


 

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见

参阅

kstest 检验数据是否符合正态分布

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

肯德尔(Kendall)相关系数概述及Python计算例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL中这10个小玩意,让人眼前一亮

我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中&…

给Kylin iso中添加自定义rpm包

前言 在日常产品交付中会有如下需求: 客户自己安装centos / ubuntu / kylin iso,然后我们把rpm包给到客户 我们直接将rpm包封装到iso,给客户交付整体iso,这样不管是对于客户还是对于公司都是最省心的,会避免很多因为系…

疯狂2023:科技迎来爆发之年,关注云计算这些方向

临近年末,熬过艰难苦恨繁霜鬓的2022,打工人已默默扛起来年的OKR 。根据市场研究机构Garner预测,2023将迎来科技爆发之年,最值得关注的云计算趋势是AI和ML、多云和混合云解决方案、物联网、云安全等。 及时了解不断变化的技术格局…

汇聚数据库创新力量 GBASE携手openGauss助企业数字化转型

12月29日,openGauss Summit 2022于线上举行。本次大会是由openGauss开源数据库社区联合行业组织、伙伴及客户共同举办的一场年度数据库产业界交流与分享峰会。天津南大通用数据技术股份有限公司(简称:GBASE)首次以openGauss社区理…

PDF转换成JPG图片怎么转换?这两招轻松搞定

PDF转换成JPG图片怎么转换?PDF文件是我们常用的一类文件,在现在的办公环境中,PDF真的用途很广,不仅是日常发送文件,还有学习工作中都会用到,不过有时候我们也需要将PDF文件转换成其他的格式,比如…

JUC并发编程学习笔记(五)读写锁和阻塞队列

8 读写锁 8.1 悲观锁和乐观锁介绍 回顾悲观锁和乐观锁的概念 悲观锁:单独每个人完成事情的时候,执行上锁解锁。解决并发中的问题,不支持并发操作,只能一个一个操作,效率低 顾名思义,就是比较悲观的锁&am…

配置文件中命名空间的作用

命名空间 实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 命名空间的作用 是建立一些互相分隔的作用域,把一些…

11_3、Java集合之迭代器Iterator接口

一、引入Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。 GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中各个元 素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器…

华脉智联铁路巡检及指挥调度系统

技术方案 整套系统基于云通讯平台和智能终端的结合,实现指挥中心和现场人员的实时互动,同时保证现场取证材料的实时上报以及指挥中心实时将决策及命令下发到现场人员。提高巡检效率及巡检准确性。 方案拓扑如下: 在指挥中心通信机房部署指挥…

k8s集群监控cadvisor+prometheus+grafana部署

目录 1.新建命名空间monitor 2.部署 2.1部署cadvisor 2.2部署node_exporter 2.3部署prometheus资源 2.4部署rbac权限 2.5.部署 metrics 2.6部署grafana 3.测试效果 参考文章: k8s集群部署cadvisornode-exporterprometheusgrafana监控系统 - cyh00001 - 博客园 …

JDBC --- 数据库连接池 C3P0

目录 1、基本定义 2、使用C3P0(数据库连接池)的必要性 2.1.JDBC传统模式开发存在的主要问题 2.1.1时间和内存资源消耗巨大 2.1.2 有内存泄漏的风险 3、数据库连接池的详细说明 4、使用连接池的明显优势 4.1.资源的高效利用 4.2.更快的系统反应速…

linux中awk命令和argxs命令的详解使用

一 awk命令1.1 命令的作用awk为行命令处理器,对每一行的文本数据,进行格式化文本信息。目的:在处理庞大文件时不会出现内存溢出或是处理缓慢的问题。1.2 案例应用获取某一行文本数据,提取不同字段的值。1.显示整行数据[rootlocalh…

怎么把照片合成一张?看完这篇文章你就知道了

大家平时有没有遇到过这样的情况?好朋友们组团一起出去玩,但是你因为个人原因无法跟大家一起去。这就可能导致姐妹中的合照少了你一个人,那么要怎样在图片上添加你去了的效果呢?其实很简单,只要编辑图片进行合成就可以…

指针进阶(1)

( )> [ ] > -> > -- > . > * (优先级比较) tips 1. (全是笔者个人自己总结,仅供参考,随意取用) 2. 3. 地址唯一标识一块内存空间 4. printf%s打印字符串的话只要给一个起始地址…

【 Vue3 + Vite + setup语法糖 + Pinia + VueRouter + Element Plus 第二篇】(持续更新中)

在第一篇中我们讲述了Vue3框架的搭建以及Vue3的常用语法,这篇文章将使用 Axios 和 Element Plus 并使用封装组件的方式完成表格搭建。 本期需要掌握的知识如下: 引入并封装 Axios 请求配置 .env 文件通过 api 接口获取数据 下期需要掌握的知识如下: 组件的封装和…

MySQL主从延迟的解决方案

1、MySQL主从延迟的解决方案 之前项目中基于 MySQL 主从复制以及 AOP 的方式实现了读写分离,也写了博客记录了这个实现过程。既然配置了 MySQL 主从复制,那么自然会存在主从延迟,如何尽可能减小主从延迟对应用系统的影响是很有必要的思考点&a…

特征工程原理(一)

一、定义 在机器学习原理中讲过机器学习的基本流程,其中很重要的一个环节就是特征工程。 1.1 基本概念 特征工程(Feature Engineering):从原始数据中提取特征的过程,这些特征可以很好地描述数据,并且利用…

Showdoc升级版本记录

目录 Showdoc介绍 升级步骤 1.备份当前版本 2.下载安装最新版本 总结步骤: Showdoc介绍 ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc,你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线…

GitHub创建仓库,使用SSH建立连接(github创建仓库,github使用SSH建立连接)

GitHub简介:GitHub是一个面向开源及私有软件项目的托管平台,也是一个开源代码库以及版本控制系统,Github拥有超过900万开发者用户,已经成为了管理软件开发以及发现已有代码的首选方法。 怎样创建仓库并使用?详细操作步…

FTP错误代码

本文迁移自本人网易博客,写于2015年4月15日,FTP错误代码 - lysygyy的日志 - 网易博客 (163.com)1、12003错误指定用户未添加到有权限的组中;即指定用户没有权限。2、CFtpFileFind.FindFile GetLastError 12110 (1)当递…