文章目录

  • 1. 皮尔逊相关系数
  • 2. 斯皮尔曼相关系数
  • 3. kendall 系数
  • 参考资料

1. 皮尔逊相关系数

适用数据:用于横向两个连续性随机变量间的相关系数。
数据要求:实验数据之间的差距不能太大
好比:研究人跑步的速度与心脏跳动的相关性,若是人突发心脏病,心跳为0(或者过快与过慢),那这时候咱们会测到一个偏离正常值的心跳,若是咱们把这个值也放进去进行相关性分析,它的存在会大大干扰计算的结果的 [1]。

  1. numpy 中的代码
import numpy as np
x=np.array([1,3,5])
y=np.array([1,3,4])
pc=np.corrcoef(x,y)
print(f"皮尔森相关系数:{pc}")
  1. 调用scipy.stats中的pearsonr方法,能够附加输出显著性水平
    输出值:
    r : float,皮尔逊相关系数,[-1,1]之间。
    p-value : float,Two-tailed p-value(双尾P值); p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。
from scipy.stats import pearsonr
import numpy as np
# 待测的两个序列
x=np.array([1,3,5])
y=np.array([1,3,4])
pc = pearsonr(x,y)
print(f"相关系数:{pc[0]}; 显著性水平:{pc[1]}")
  1. pandas包
import pandas as pd
data=pd.DataFrame({"x":[1,3,5],"y":[1,3,4]})
pc = data.corr("pearson")
print(f"皮尔森相关系数:{pc}")

注意事项:在求皮尔森相关性系数之后,一般还会用t检验之类的方法来进行皮尔森相关性系数检验,而t检验是基于数据呈正态分布的假设的。

2. 斯皮尔曼相关系数

适用数据: 用于衡量分类定序变量间的相关程度。斯皮尔曼相关性系数,一般也叫斯皮尔曼秩相关系数。“秩”,能够理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解 [2]

2.1 首先对两个变量(X, Y)的数据进行排序,而后记下排序之后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。
2.2数据要求
由于是定序,因此咱们不用管X和Y这两个变量具体的值到底差了多少,只须要算一下它们每一个值所处的排列位置的差值,就能够求出相关性系数了.

  1. pandas包
import pandas as pd
import numpy as np#原始数据
x1=pd.Series([1, 2, 3, 4, 5, 6])
y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])#处理数据删除Nan
n=x1.count()
x1.index=np.arange(n)
y1.index=np.arange(n)#分部计算
d=(x1.sort_values().index-y1.sort_values().index)**2
dd=d.to_series().sum()
p=1-n*dd/(n*(n**2-1))#s.corr()函数计算
r=x1.corr(y1,method='spearman')
print(r,p) #0.942857142857143 0.9428571428571428
  1. scipy

from scipy import stats
stats.spearmanr([1,2,3,4,5], [5,6,7,8,7])
x2n = rng.standard_normal((100, 2))
y2n = rng.standard_normal((100, 2))
rho, pval = stats.spearmanr(x2n, y2n)

3. kendall 系数

肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。
分类变量能够理解成有类别的变量,能够分为:
(1) 无序的,好比性别(男、女)、血型(A、B、O、AB);
(2) 有序的,好比肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。
一般须要求相关性系数的都是有序分类变量。

import pandas as pd
import numpy as np#原始数据
x=pd.Series([1, 2, 3, 4, 5, 6])
y=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])
r = x.corr(y,method="kendall") #-0.2611165

参考资料

[1] https://blog.csdn.net/weixin_43876625/article/details/123919665
[2] http://www.javashuo.com/article/p-waavfymd-cx.html
[3] https://www.jianshu.com/p/652dcde6aa43

相关系数与python实现相关推荐

  1. [数学基础知识] Cramér‘s V 相关系数和Python算法实现

    1. 什么是Cramér's V 相关系数 在统计中,Cramér's V (又称为Cramér's phi,表示为φc) 是一个衡量两个 分类变量之间关联的度量,它是一个介于0和+1(包括)之间的值 ...

  2. 皮尔逊(Pearson)相关系数与spearman相关系数(Python实现)

    概念介绍 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 相关系数大小解释 相关性 绝对值 无相关 0 - 0.09 弱相关 0.1 - 0.3 中相关 0.3 - 0.5 强相关 ...

  3. PearsonSpearmanKendall相关系数及Python实现

    Pearson/Spearman/Kendall相关系数 Pearson相关系数 概述: 皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation c ...

  4. Python+pandas统计每个学生学习慕课总时长

    推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷 京东购买链接:https://item.jd.c ...

  5. 使用Python分析最新2000封电子邮件的时间分布

    程序功能:运行后要求输入126邮箱地址和密码,然后绘制柱状图显示最新2000封邮件的时间分布. 如果使用其他邮箱系统的话,可以自行搜索和替换pop服务器地址. 参考代码: 运行结果: -------- ...

  6. Python使用numpy和pandas模拟转盘抽奖游戏

    之前写过一个类似的代码,不过都是用的Python内置对象,详见几行Python代码模拟轮盘抽奖游戏,本文再提供一个使用numpy和pandas实现的代码. 问题描述:有时候饭店或商场会搞活动,门口一个 ...

  7. Python+pandas实现时间序列数据扩展案例一则

    感谢山东科技大学李超老师提供应用背景. 在分析时序数据的有些场合下,可能每个月只能拿到一个数据,然而实际处理时,需要把这个数据扩展到该月的每天,且每天的数据相同. 演示代码: 某次运行结果: ---- ...

  8. Python+pandas+matplotlib数据分析与可视化案例(附源码)

    问题描述:运行下面的程序,在当前文件夹中生成饭店营业额模拟数据文件data.csv 然后完成下面的任务: 1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所 ...

  9. 几行Python代码生成饭店营业额模拟数据并保存为CSV文件

    CSV文件是一种通用的.简单的文件格式,以纯文本形式存储表格数据(数字和文本),在多个领域都有广泛应用,经常用来在不同程序之间交换数据. 下面的代码使用Python标准库datetime和random ...

最新文章

  1. 简单的利用IDEA搭建SpringBoot+Maven+Mybatis+自动生成代码
  2. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...
  3. SAX解析xml (遍历DOM树各节点)
  4. 国内外ip地址黑名单查询
  5. 计算机网络系统容错检测,计算机系统的容错技术方法
  6. 学习使用 Manifest
  7. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)
  8. 16.validate_api
  9. 实现三元组表示的两个稀疏矩阵的加法_K-BERT | 基于知识图谱的语言表示模型
  10. 我如何开始使用Node.js [关闭]
  11. 为底层元素注册监听器
  12. 安装.Net Framework提示:无法建立到信任根颁发机构的证书链
  13. 苹果app开发流程详解
  14. 如何搭建一个网站,访问量一天几千人如何购买服务器?...
  15. iphone13开箱验机全步骤
  16. Jquery点击事件触发多次解决办法
  17. SQL学习(五):lastday函数(返回指定日期所在月份的最后一天)
  18. Excel将多个工作表一键按照字母排序
  19. XML 和 JSON 相互转换
  20. 早上喝水较健康 喝法有学问!

热门文章

  1. 大学生java培训班哪家好?
  2. Linux开源存储全栈详解
  3. 使用QQ2013时连接Android物理设备Eclipse发现不了
  4. java-php-python-ssm选课排课系统计算机毕业设计
  5. Android Studio经验积累之常见问题以及解决方式
  6. 一周看点 | 刘强东卸任京东集团CEO;马斯克成Twitter最大股东;理想汽车回应裁员计划传闻;巴菲特42亿美元买入惠普股份...
  7. Webpack(下)
  8. 高级云计算架构师 -年度总结:回顾2020,催人奋进
  9. java+opencv修改白色背景为图片
  10. 按图索骥:让客户选出最合适的公关公司