相关系数python实现

news2024/12/26 22:13:43

皮尔逊相关系数的python实现

  • 一、相关系数公式
  • 二、python实现
    • 法1:直接按公式算
    • 法2:调用numpy中的corrcoef方法
    • 法3:调用scipy.stats中的pearsonr方法
    • 法4:调用pandas.Dataframe中的corr方法

一、相关系数公式

R的值在-1和1之间,包括-1和1。
公式1:
在这里插入图片描述
其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差。
或者公式2:
在这里插入图片描述
可以转换为公式3:
在这里插入图片描述

二、python实现

法1:直接按公式算

代码

import numpy as np
import math
x = np.array([1, 2, 3])
y = np.array([2, 4, 5])
# 方法1:利用公式2
def get_r1(x, y):  # R
    if len(x) == len(y):
        x_ave = sum(x) / len(x)
        y_ave = sum(y) / len(y)
        numerator = sum([(i - x_ave) * (j - y_ave) for i, j in zip(x, y)])
        d = sum([(i - x_ave) ** 2 for i in x]) * sum([(j - y_ave) ** 2 for j in y])
        denominator = math.sqrt(d)
        return numerator / denominator
    else:
        return None
r = get_r1(x, y)
print(f"公式2的r:{r}")

# 方法2:利用公式3
def get_r(x, y):  # R
    if len(x) == len(y):
        n = len(x)
        sum_xy = np.sum(np.sum(x * y))
        sum_x = np.sum(np.sum(x))
        sum_y = np.sum(np.sum(y))
        sum_x2 = np.sum(np.sum(x * x))
        sum_y2 = np.sum(np.sum(y * y))
        pc = (n * sum_xy - sum_x * sum_y) / np.sqrt((n * sum_x2 - sum_x * sum_x) * (n * sum_y2 - sum_y * sum_y))
        return pc
    else:
        return None
p = get_r(x, y)
print(f"公式3的r:{p}")

在这里插入图片描述

法2:调用numpy中的corrcoef方法

方法
  numpy.corrcoef(x, y=None, rowvar=True, bias=<无值>, ddof=<无值>)
参数:
  x:array_like,包含多个变量和观测值的1-D或2-D数组,x的每一行代表一个变量,每一列都是对所有这些变量的单一观察。
  y:array_like,可选,另外一组变量和观察,y具有与x相同的形状。
  rowvar:bool, 可选,如果rowvar为True(默认值),则每行代表一个变量,并在列中显示。否则,转换关系:每列代表一个变量,而行包含观察。
  bias:没有效果,请勿使用。自1.10.0版开始不推荐使用。
  ddof:没有效果,请勿使用。自1.10.0版开始不推荐使用。
返回值: R : ndarray,变量的相关系数矩阵。
功能: 计算矩阵的相关系数,返回Pearson乘积矩相关系数的矩阵。

代码

import numpy as np
x = np.array([1, 2, 3])
y = np.array([2, 4, 5])
p = np.corrcoef(x, y)
print(p)

在这里插入图片描述

法3:调用scipy.stats中的pearsonr方法

方法:
  pearsonr(x, y)
参数:
  输入:x为特征,y为目标变量.
  x:(N,) array_like,Input array。
  y:(N,) array_like,Input array。
  注: p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。
返回值:
  r : float,皮尔逊相关系数,[-1,1]之间。
  p-value : float,Two-tailed p-value(双尾P值)。
代码

import numpy as np
from scipy.stats import pearsonr
x = np.array([1, 2, 3])
y = np.array([2, 4, 5])
pc = pearsonr(x, y)
print("相关系数:", pc[0])
print("显著性水平:", pc[1])

在这里插入图片描述

法4:调用pandas.Dataframe中的corr方法

pandas.DataFrame.corr()是pandas中DataFrame对象的方法,用于计算DataFrame中列与列之间的相关性矩阵。该方法的返回值是一个相关性矩阵,矩阵的行与列分别对应着DataFrame中的列。

方法:
  corr(self,method,min_periods)
参数:
  method:计算相关性的方法,包括’pearson’(默认)、‘kendall’和’spearman’
    pearson:皮尔逊相关系数
    kendall:肯德尔等级相关系数
    spearman:斯皮尔曼等级相关系数
  min_periods:计算相关性时的最小样本量,最少为1。
  dropna:布尔类型的参数,设置是否在计算相关性时忽略缺失值。默认为True,即忽略缺失值。
返回值:
  返回各类型之间的相关系数DataFrame表格。

代码:

import pandas as pd
data = pd.DataFrame({"x": [1, 2, 3], "y": [2, 4, 5]})
print(data)
print(data.corr("pearson"))

在这里插入图片描述

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

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

相关文章

AJAX | 拦截器、文件上传和下载

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; AJAX Ajax即Asynchronous Javascript And XML&#xff08;异步JavaScript和XML&#xff09;&#xff1b;Ajax技术网页应用能够快速地将增量更新呈现在用户界面上&…

Docker 镜像原理

Linux文件系统由bootfs和rootfs两部分组成&#xff1a;- bootfs&#xff1a;包含bootloader&#xff08;引导加载程序&#xff09;和 kernel&#xff08;内核&#xff09;- rootfs&#xff1a; root文件系统&#xff0c;包含的就是典型 Linux 系统中的/dev&#xff0c;/proc&am…

Verilog | 二进制与格雷码

一、格雷码简介 格雷码是一个叫弗兰克格雷的人在 1953 年发明的&#xff0c;最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时&#xff0c;只有一个数据位发生跳变&#xff0c;由于这种特点&#xff0c;就可以避免二进…

基于DSP+FPGA+AD9238的冲击波超压测试系统设计与实现

对冲击波关键特征参数进行可靠、精确地评估是进行军事行动规划的前提和依据&#xff0c; 测试结果可以为战斗部设计提供参考&#xff0c;也可以为武器弹体材料的研发制造提供有效依据。 近年来&#xff0c;随着集成电子技术与软件系统取得突破性成果&#xff0c;冲击波测试技术…

北京筑龙:采购供应链平台-构建能源企业数智供应链的必经之路

4月13至14日&#xff0c;“中国国际管道会议&#xff08;CIPC&#xff09;暨技术装备与成果展”高峰论坛在北京举行。来自国内外管道领域的院士、知名专家、学者齐聚一堂&#xff0c;共同探讨新时代背景下管道技术领域的发展方向。作为采购供应链数字化产品及服务提供商&#x…

涨点神器:卷积变体DCNV2引入Yolov5/Yolov7,助力涨点

1.DCN V2介绍 DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems 论文:https://arxiv.org/abs/2008.13535 作者通过在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版…

tsx零基础页面开发全流程(vue环境)

tsx零基础页面开发全流程&#xff08;vue环境&#xff09;一 注册 tsx 页面二 页面布局绘制三 注册并引入组件三 LogistTrackCard 组件绘制四 LogistTrackCard 组件绘制五 动态数据接驳5.1 tsx | props传递变量与使用变量5.2 tsx | 表达式的灵活使用5.3 tsx | 插槽使用5.4 tsx …

【Linux系统:进程控制】

目录 1 进程创建 1.1 fork函数 1.2 写时拷贝 1.3 fork常规用法 1.4 fork调用失败的原因 2 进程终止 2.1 进程退出场景 2.2 进程常见退出方法 3 进程等待 3.1 进程等待必要性 3.2 进程等待的方法 3.2.1 wait方法 3.2.2 waitpid方法 3.3 获取子进程status 4 进程程序替…

【hello Linux】Linux项目自动化构建工具-make/Makefile

目录 1.make/Makefile的背景 2. 实例代码 2.1 常规代码执行过程&#xff1a; 2.2 使用make工具执行代码程序&#xff1a; 3. makefile文件内容的解释 3.1 生成解决方案 3.2 清理解决方案 4. 多文件的makefile文件书写 5. 缓冲区 Linux&#x1f337; 1.make/Makefile的背景 1. …

淘宝/天猫店铺订单数据导出、销售报表、数据分析

最近有厂商提出想把天猫店铺的数据拿到后台ERP管理系统中&#xff0c;并能实现线下打印电子面单功能。接手这个需求按照度娘给的指引&#xff0c;申请天猫开发者帐号&#xff0c;但是。。。大厂把订单传送接口关了&#xff0c;只对厂商自研软件开放&#xff0c;还需要租用聚石塔…

力扣118杨辉三角:代码实现+注释详解+其它思考

文章目录第一部分&#xff1a;题目第二部分&#xff1a;代码第三部分&#xff1a;题解3.1 generate()方法解析3.2 main方法调用第四部分&#xff1a;思考第一部分&#xff1a;题目 &#x1f3e0; 链接&#xff1a;118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; ⭐ 难…

在Matlab中开发AutoSAR模型的流程(自下而上)

目录 前面 创建模型&#xff0c;环境配置 AutoSAR配置 SWC与Runable Interface Port 前面 前面介绍了AutoSAR软件组件开发的两种方式&#xff0c;其中自下向上的方式&#xff0c;是从模型出发&#xff0c;流程如下。 创建模型&#xff0c;环境配置 1、新建模型&#x…

前端技巧总结---持续更新

易遗漏事件总结 关闭/保存后 重置 一些变量、表单 考虑业务流程 加载数据提示 移动端技巧总结 阿里图库 在原有的基础上加新图标 该代码替换掉原有的 iconfont.css ❗src 请求头要加https&#xff0c;要不然移动端会不显示阿里图标 onBackPress 返回上一级 onBackPr…

【Unity VR开发】结合VRTK4.0:不可移动区域

语录&#xff1a; 生活坏到一定程度就会好起来&#xff0c;因为它无法更坏。努力过后&#xff0c;才知道许多事情坚持坚持&#xff0c;就过来了。 前言&#xff1a; 有时候我们可能并不需要所有的区域都进行移动&#xff0c;而只需要部分区域进行移动&#xff0c;那么我们就要将…

中核武汉 x Tapdata:能源领域老牌央企如何释放数据力量,推进精细化管理

数据孤岛是一直以来的老大难问题&#xff0c;之前也有在寻找相关产品和解决方案&#xff0c;要么太重&#xff0c;要么不容易落地&#xff0c;直到偶然间看到 Tapdata。这是一个小而美的产品&#xff0c;专注实时数据开发领域&#xff0c;其异构数据实时同步能力使我们可以更专…

陶泓达:4.17午间提前布局美盘黄金原油操作建议!

黄金方面&#xff1a; 上周五(4月14日)&#xff0c;美市盘中&#xff0c;黄金金价大幅下跌&#xff0c;盘中一度下跌55美元。随着黄金遭遇技术性抛售压力&#xff0c;回吐一周的大部分涨幅&#xff0c;不过&#xff0c;在周末之前&#xff0c;许多分析师表示&#xff0c;市场早…

MySQL索引及SQL优化

先对索引做个大概回顾,然后我们详细探讨SQL优化 索引 索引的分类 主键索引 设定为主键后数据库会自动建立索引&#xff0c;innodb为聚簇索引 单值索引 即一个索引只包含单个列&#xff0c;一个表可以有多个单列索引【建议不要超过3】 唯一索引 索引列的值必须唯一&#xff0…

算法训练第五十九天 | 503.下一个更大元素II 、42. 接雨水

单调栈part02503.下一个更大元素II题目描述思路42. 接雨水题目描述思路暴力解法双指针优化单调栈解法准备工作单调栈处理逻辑503.下一个更大元素II 题目链接&#xff1a;503.下一个更大元素II 参考&#xff1a;https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E…

升级长江存储最新闪存,忆恒创源发布新一代企业级NVMe SSD

2023年4月11日 —— 北京忆恒创源科技股份有限公司&#xff08;Memblaze&#xff09;正式发布搭载高品质国产闪存的PBlaze6 6541 系列企业级PCIe 4.0 NVMe SSD。作为 MUFP 平台化开发的最新作品&#xff0c;PBlaze6 6541 采用长江存储最新一代晶栈 Xtacking 3D NAND&#xff0c…

类中的那点事

c入门必看类类的基本介绍类的实例化类的6个默认成员函数构造函数析构函数拷贝构造函数赋值重载静态成员友元类 类的基本介绍 class为定义类的关键字&#xff0c;ClassName为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类…