皮尔逊相关系数

皮尔逊相关系数

一、统计学知识

期望值 E ( X ) E(X) E(X)表示随机变量 X \textit X X的期望值。
E ( X ) = X ‾ = 1 n ∑ i = 1 n X i \mathrm{E(X) =\overline{X} = \frac{1}{n} \sum_{i=1}^{n} X_i} E(X)=X=n1i=1nXi
方差:衡量一组数据的离散程度的统计量
σ X 2 = 1 n − 1 ∑ i = 1 n ( X i − X ‾ ) 2 \mathrm{\sigma_X^2 = \frac{1}{n-1} \sum_{i=1}^{n} \left(X_i - \overline{X}\right)^2} σX2=n11i=1n(XiX)2
标准差:反映一个数据集的离散程度,是方差的算术平方根。

  • 总体标准差

σ = ∑ i = 1 n ( x − x ‾ ) 2 n \sigma=\sqrt{\frac{\sum_{i=1}^n(x-\overline{x})^2}n} σ=ni=1n(xx)2

  • 样本标准差

S = ∑ i = 1 n ( x − x ‾ ) 2 n − 1 S=\sqrt{\frac{\sum_{i=1}^n(x-\overline{x})^2}{n-1}} S=n1i=1n(xx)2

协方差(Covariance)-:在概率论和统计学中用于衡量两个变量的总体误差。方差是协方差的一种特殊情况,即当两个变量是相同的情况。
C o v ( X , Y ) = E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] = E ( X Y ) − 2 E ( X ) E ( Y ) + E ( X ) ( Y ) = E ( X Y ) − E ( X ) E ( Y ) \begin{aligned} Cov(X,Y)& =E[(X-E(X))(Y-E(Y))] \\ &=E(XY)-2E(X)E(Y)+E(X)(Y) \\ &=E(XY)-E(X)E(Y) \end{aligned} Cov(X,Y)=E[(XE(X))(YE(Y))]=E(XY)2E(X)E(Y)+E(X)(Y)=E(XY)E(X)E(Y)

二、标准皮尔逊相关系数

2.1 定义

两个变量之间的皮尔逊 相关系数定义为两个变量之间的协方差和标准差的商:
ρ X , Y = c o v ( X , Y ) σ X σ Y = E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] σ X σ Y \begin{aligned}\rho_{X,Y}&=\frac{cov(X,Y)}{\sigma_X\sigma_Y}\\&=\frac{E[(X-E(X))(Y-E(Y))]}{\sigma_X\sigma_Y}\end{aligned} ρX,Y=σXσYcov(X,Y)=σXσYE[(XE(X))(YE(Y))]
上式定义了总体相关系数,常用希腊小写字母$\rho 作为代表符号。估算样本的协方差和标准差,可得到样本相关系数 ( 样本皮尔逊系数 ) ,常用英文小写字母 作为代表符号。估算样本的协方差和标准差,可得到样本相关系数(样本皮尔逊系数),常用英文小写字母 作为代表符号。估算样本的协方差和标准差,可得到样本相关系数(样本皮尔逊系数),常用英文小写字母\text{r}$代表:
r = ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) ∑ i = 1 n ( X i − X ‾ ) 2 ∑ i = 1 n ( Y i − Y ‾ ) 2 r=\frac{\sum_{i=1}^n(X_i-\overline{X})(Y_i-\overline{Y})}{\sqrt{\sum_{i=1}^n(X_i-\overline{X})^2}\sqrt{\sum_{i=1}^n(Y_i-\overline{Y})^2}} r=i=1n(XiX)2 i=1n(YiY)2 i=1n(XiX)(YiY)
r \text{r} r亦可由 ( X i , Y i ) (X_i,Y_i) (Xi,Yi)标准化的样本点均值估计,得到与上式等价的表达式:
r = 1 n − 1 ∑ i = 1 n ( X i − X ‾ σ X ) ( Y i − Y ‾ σ Y ) r=\frac1{n-1}\sum_{i=1}^n(\frac{X_i-\overline{X}}{\sigma_X})(\frac{Y_i-\overline{Y}}{\sigma_Y}) r=n11i=1n(σXXiX)(σYYiY)
其中 X i − X ‾ σ X , X ‾ , σ X \frac{X_i-\overline{X}}{\sigma_X},\quad\overline{X},\quad\sigma_X σXXiX,X,σX分别是 X i X_{i} Xi样本的标准化形式、样本平均值和样本标准差。

2.2 相关系数的性质
  1. X X X Y Y Y 相互独立,则 p X , Y = 0 p_{X,Y} = 0 pX,Y=0,但 p X , Y = 0 p_{X,Y} = 0 pX,Y=0 不能推出 X X X Y Y Y 相互独立,等于0的情况称不相关,即独立则不相关,反过来不一定。
  2. 第一条的例外:当 ( X , Y ) (X, Y) (X,Y) 为二维正态时,由 p X , Y = 0 p_{X,Y} = 0 pX,Y=0 能推出 X X X Y Y Y 独立。
  3. − 1 ≤ ρ X , Y ≤ 1 -1 \leq \rho_{X,Y} \leq 1 1ρX,Y1,小于0时为负相关,大于0时为正相关,为当且仅当 X X X Y Y Y 有严格线性关系时取等。
2.3 适用范围

当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

(1)、两个变量之间是线性关系,都是连续数据。

(2)、两个变量的总体是正态分布,或接近正态的单峰分布。

(3)、两个变量的观测值是成对的,每对观测值之间相互独立。

2.4 物理意义

皮尔森相关系数反映了两个变量的线性相关性的强弱程度,r的绝对值越大说明相关性越强。

当r>0时,表明两个变量正相关,即一个变量值越大则另一个变量值也会越大;
当r<0时,表明两个变量负相关,即一个变量值越大则另一个变量值反而会越小;
当r=0时,表明两个变量不是线性相关的(注意只是非线性相关),但是可能存在其他方式的相关性(比如曲线方式);
当r=1和-1时,意味着两个变量X和Y可以很好的由直线方程来描述,所有样本点都很好的落在一条直线上。

2.5 判断变量的相关强度:
|r|相关强度
0.8-1.0极强相关
0.6-0.8强相关
0.4-0.6中等程度相关
0.2-0.4弱相关
0.0-0.2极弱相关或无相关
2.6 Python代码实现相关性计算
  • 调库实现
# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns# 设置matplotlib的字体为SimHei,以正确显示中文
matplotlib.rcParams['font.family'] = 'SimHei'# 读取污染物数据Excel文件,选择特定列,并将特定的缺失值标记为NaN
pollutant_data = pd.read_excel('附件1.xlsx', usecols=["月", "日", "CO", "NO₂","O₃", "PM₁₀", "PM₂.₅","SO₂", "AQI"], na_values=['NA', 'NaN', '-'])# 读取气象数据Excel文件,选择特定列,并将特定的缺失值标记为NaN
weather_data = pd.read_excel('附件2.xlsx', na_values=['NA', 'NaN', '-'],usecols=["月", "日", "平均气温", "露点温度", "平均气压", "平均风速","降水量", "相对湿度"])# 合并污染物和气象数据集,基于"月"和"日"两列进行内连接
data = pd.merge(pollutant_data, weather_data, on=['月', '日'], how='inner')# 删除"月"和"日"两列,因为它们已用于合并数据集
data = data.drop(columns=['月', '日'])# 使用前向填充和后向填充方法处理数据集中的缺失值,确保数据的完整性
data.ffill(inplace=True)
data.bfill(inplace=True)# 计算所有列的相关性矩阵
corr_matrix = data.corr()# 创建一个12x8英寸大小的绘图窗口
plt.figure(figsize=(12, 8))# 使用seaborn库绘制相关性矩阵的热图,设置显示数值,以及颜色映射
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')# 设置图表标题
plt.title('Correlation Matrix')# 显示图表
plt.show()
  • 手动实现:该部分代码可对上面代码打印的相关性矩阵进行验证,读者自行调整代码参数即可,主要调整参数要读取的文件,以及就是要计算的两个列名
import pandas as pd# 读取污染物数据Excel文件,选择特定列,并将特定的缺失值标记为NaN
pollutant_data = pd.read_excel('附件1.xlsx', usecols=["月", "日", "CO", "NO₂","O₃", "PM₁₀", "PM₂.₅","SO₂", "AQI"], na_values=['NA', 'NaN', '-'])# 读取气象数据Excel文件,选择特定列,并将特定的缺失值标记为NaN
weather_data = pd.read_excel('附件2.xlsx', na_values=['NA', 'NaN', '-'],usecols=["月", "日", "平均气温", "露点温度", "平均气压", "平均风速","降水量", "相对湿度"])# 合并污染物和气象数据集,基于"月"和"日"两列进行内连接
data = pd.merge(pollutant_data, weather_data, on=['月', '日'], how='inner')
# 删除"月"和"日"两列,因为它们已用于合并数据集
data = data.drop(columns=['月', '日'])# 使用前向填充和后向填充方法处理数据集中的缺失值
data.ffill(inplace=True)
data.bfill(inplace=True)# 初始化变量用于计算相关系数
sum_xy = 0
sum_x_squared = 0
sum_y_squared = 0
# 计算"PM₂.₅"列的样本平均值,将用于相关系数计算
avgx = data["PM₂.₅"].mean()
# 注意:avgy被赋值为与avgx相同的值,这意味着你实际上是在计算"PM₂.₅"列与自身的相关性
avgy = data["PM₂.₅"].mean()# 遍历数据集的每一行
for index, row in data.iterrows():# 计算协方差部分sum_xy += (row["PM₂.₅"] - avgx) * (row["PM₂.₅"] - avgy)# 计算X平方和sum_x_squared += (row["PM₂.₅"] - avgx) ** 2# 注意:这里应该是计算Y平方和,但由于avgy等于avgx,所以实际上也是X平方和sum_y_squared += (row["PM₂.₅"] - avgx) ** 2# 计算X标准差
std_x = (sum_x_squared ** 0.5)
# 注意:这里应该是计算Y标准差,但由于avgy等于avgx,所以实际上也是X标准差
std_y = (sum_y_squared ** 0.5)# 打印相关系数
print(sum_xy / (std_x * std_y))

三、参考文献

【1】相关系数——皮尔逊相关系数的公式及其理解_皮尔逊相关系数公式-CSDN博客

【2】皮尔森相关系数(Pearson correlation coefficient) - 南石 - 博客园 (cnblogs.com)

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

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

相关文章

【代码随想录|第十一章 图论part01 | 797.所有可能的路径 】

代码随想录|第十一章 图论part01 | 图论理论基础&#xff0c;797.所有可能的路径&#xff0c;广搜理论基础 一、图论理论基础1.图的基本概念2.图的构造1&#xff09;邻接矩阵2&#xff09;邻接表 3.图的遍历方式4.深度优先搜索理论基础 二、797.所有可能的路径1.核心代码2.问题…

Mysql-错误处理: Found option without preceding group in config file

1、问题描述 安装MYSQL时&#xff0c;在cmd中“初始化”数据库时&#xff0c;输入命令&#xff1a; mysqld --initialize --consolecmd报错&#xff1a; D:\mysql-5.7.36-winx64\bin>mysql --initialize --console mysql: [ERROR] Found option without preceding group …

Web开发:ASP.NET CORE的后端小结(基础)

1.后端重定向到指定路由 public IActionResult Index(){return RedirectToAction("Index", "Main");//重定向>Main/Index} 【备注】如果在MainController的Index方法中return View();本质是 return View("Index")&#xff0c;返回和方法同名的…

Mysql中delete数据后磁盘空间浅析

在MySQL中&#xff0c;使用DELETE语句删除数据后&#xff0c;磁盘上的文件不会立即缩小&#xff0c;因为MySQL通常不会重建文件并删除不再使用的空间。这是因为DELETE操作只标记已删除的数据为可重用&#xff0c;并不立即清除物理存储空间。 为了释放磁盘空间&#xff0c;你需要…

windows配置python项目本地定时执行(一)

背景 之前写的一个基金数据爬取的脚本需要部署在windows系统&#xff0c;需要一个启动、关闭脚本 通用bat代码实现&#xff1a; echo offTITLE "启动bat" rem 需要处理的程序名 SET process_name"Snipaste.exe" rem 存放进程id的文件用来判断进程是否已…

部署和运维

目录 1.Git1.1. Git指令中merge和rebase的区别1. Commit 记录2. 合并方式3. 冲突处理4. 使用场景选择建议 1.2. cherry-pick的使用如何使用 git cherry-pick例子处理冲突撤销 cherry-pick其他选项 结论 2. 部署1. Nginx的使用场景 编译打包1. webpack2. webpack打包优化1. 代码…

vscode通过ssh链接远程服务器上的docker

目录 1 编译docker image1.1 编译镜像1.2 启动镜像 2 在docker container中启动ssh服务2.1 确认是否安装ssh server2.2 修改配置文件2.3 启动ssh服务 3 生成ssh key4 添加ssh公钥到docker container中5 vscode安装插件Remote - SSH6 在vscode中配置 1 编译docker image 一般来…

二叉树的前、中、后序遍历(递归法、迭代法)leetcode144/94/145

leetcode144、二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a;…

【golang-ent】go-zero框架 整合 ent orm框架 | 解决left join未关联报错的问题

一、场景 1、子表&#xff1a;cp_member_point_history cp_member_point_history表中字段&#xff1a;cp_point_reward_id 是cp_point_reward的主键id 当本表中的cp_point_reward_id字段为0&#xff08;即&#xff1a;没有可关联主表的&#xff09; CREATE TABLE cp_member_poi…

数据结构(Java):优先级队列(堆)堆的模拟实现

目录 1、优先级队列 1.1 概念 1.2 PriorityQueue底层结构 2、 堆 2.1 堆的概念 2.2 堆的存储结构 3、优先级队列&#xff08;堆&#xff09;的模拟实现 3.1 堆的创建 3.1.1 向下调整算法建完整堆 3.2 堆的插入 3.2.1 向上调整算法 3.3 堆的删除 3.4 堆排序 1、优先…

CH552的bootload程序IAP直接对ROM-flash修改数据(未尝试)

手动写bootload程序的可能 1&#xff0c;根据ch552g的使用手册内容查看到 2&#xff0c;在下面的参考文件的IAP文件夹中看到IAP文件 参考 下面程序中并没有跳转到厂家bootload的过程&#xff0c;这是直接通过控制有关的寄存器对FLSH进行直接写入和修改&#xff0c;这样可以认…

如何学习Hadoop:糙快猛的大数据之路(利用GPT 学习)

目录 引言Hadoop是什么&#xff1f;学习Hadoop的"糙快猛"之道1. 不要追求完美&#xff0c;先动手再说2. 从简单的MapReduce开始3. 利用大模型加速学习4. 循序渐进&#xff0c;建立知识体系 构建您的Hadoop技能树1. 夯实基础&#xff1a;Linux和Java2. 深入理解HDFS3.…

Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2) 20240718

A. Diverse Game 题目 彼得看着谢尔盖的流&#xff0c;想出了一个矩阵 a a a &#xff0c;由 n n n 行和 m m m 列组成( i i i 第一行和 j j j 第列中的数字表示为 a i , j a_{i, j} ai,j​ )&#xff0c;它包含了从 1 1 1 到 n ⋅ m n \cdot m n⋅m 的所有整数。但是…

GreenDao实现原理

GreenDao 是一款针对 Android 平台优化的轻量级对象关系映射 (ORM) 框架&#xff0c;它将 Java 对象映射到 SQLite 数据库&#xff0c;以简化数据持久化操作。GreenDao 的主要优点包括高性能、低内存占用、易于使用以及对数据库加密的支持。 以下是基于源码的 GreenDao 实现原…

AI 应用还没有大量出现,缺什么?缺聊天机器人编程语言 | Chatopera

只有帮助人发挥创意的才是大市场 现在是需要大量的 AI 应用了。如何产生大量的 AI 应用呢&#xff1f;当年乔布斯说&#xff0c;他看到了个人电脑的两个趋势&#xff0c;一个是图形化用户界面&#xff0c;一个是面向对象编程语言。今天&#xff0c;AI 应用也是新的【图形用户界…

【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)

目录 0.简介 1.详细代码及解释 1&#xff09;原label显示在界面上 2&#xff09;水平翻转 3&#xff09;垂直翻转 4&#xff09;顺时针旋转45度 5&#xff09;逆时针旋转 0.简介 环境&#xff1a;windows11 QtCreator 背景&#xff1a;demo&#xff0c;父类为QWidget&a…

Cisco 路由重发布 —— 实现路由信息在不同路由选择域间的传递

一、技术背景 在实际的组网中&#xff0c;可能会遇到这样一个场景&#xff1a;在一个网络中同时存在两种或者两种以上的路由协议。例如客户的网络原先是纯 Cisco 的设备&#xff0c;使用 EIGRP 协议将网络的路由打通。但是后来网络扩容&#xff0c;增加了一批华为的设备&#…

应用层——HTTP

像我们电脑和手机使用的应用软件就是在应用层写的&#xff0c;当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能&#xff0c;比如HTTP,FTP… 我们程序员写的一个个解决我们实际的问题都在应用层&#xff0c;我们今天来聊一聊HTTP。 协议 协议…

【接口自动化_12课_基于Flask搭建MockServer】

知识非核心点&#xff0c;面试题较少。框架搭建的过程中的细节才是面试要点 第三方接口&#xff0c;不方便进行测试&#xff0c; 自己要一个接口去进行模拟。去作为我们项目访问模拟接口。自己写一个接口&#xff0c;需要怎样写 一、flask:轻量级的web应用的框架 安装命令 …

旧系统的会员信息如何导入新系统?

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…