Pearson 相关系数的可视化辅助判断和怎么用

news/2024/9/24 10:19:11/

Pearson__0">Pearson 相关系数的可视化辅助判断和怎么用

flyfish

Pearson 相关系数 是一种用于衡量两个连续型变量之间线性相关程度的统计量。其定义为两个变量协方差与标准差的乘积的比值。公式如下: r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} r=(xixˉ)2(yiyˉ)2 (xixˉ)(yiyˉ)
其中:

  • x i x_i xi y i y_i yi 分别是变量 X 和 Y 的观测值。

  • x ˉ \bar{x} xˉ y ˉ \bar{y} yˉ 分别是 X 和 Y 的均值。

取值范围为 [-1, 1]:

  • 1 表示完全正相关。

  • -1 表示完全负相关。

  • 0 表示无线性相关。
    在这里插入图片描述

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y1 = 2 * x + np.random.randn(100)  # 正相关
y2 = -2 * x + np.random.randn(100) # 负相关data = pd.DataFrame({'x': x, 'y1': y1, 'y2': y2})# 绘图
plt.figure(figsize=(12, 6))# 正相关
plt.subplot(1, 2, 1)
sns.regplot(x='x', y='y1', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Positive Correlation')# 负相关
plt.subplot(1, 2, 2)
sns.regplot(x='x', y='y2', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Negative Correlation')plt.show()

在零均值化处理之后,Pearson 相关系数的计算公式与 Cosine 相似度的计算公式本质上变得相同

可视化辅助判断相关性

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics.pairwise import cosine_similarity# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y1 = 2 * x + np.random.randn(100)  # 正相关
y2 = -2 * x + np.random.randn(100) # 负相关
y = 0.5 * x**2 + np.random.randn(100)  # 非线性相关data = pd.DataFrame({'x': x, 'y1': y1, 'y2': y2, 'y': y})# 绘图
plt.figure(figsize=(18, 6))# 正相关
plt.subplot(1, 3, 1)
sns.regplot(x='x', y='y1', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Positive Correlation')# 负相关
plt.subplot(1, 3, 2)
sns.regplot(x='x', y='y2', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title('Negative Correlation')# 非线性相关
plt.subplot(1, 3, 3)
sns.scatterplot(x='x', y='y', data=data, color='blue')
plt.title('Nonlinear Correlation')plt.show()# 热图(Heatmap)
corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Correlation Matrix Heatmap')
plt.show()# 散点图矩阵(Pair Plot)
sns.pairplot(data)
plt.show()# 计算 Pearson 相关系数与 Cosine 相似度
x_mean = x - np.mean(x)
y_mean = y1 - np.mean(y1)
pearson_corr = np.corrcoef(x, y1)[0, 1]
cosine_sim = cosine_similarity([x_mean], [y_mean])[0, 0]print(f'Pearson 相关系数: {pearson_corr}')
print(f'Cosine 相似度: {cosine_sim}')

Pearson_Cosine___114">Pearson 相关系数与Cosine 相似度 的比较

Pearson__115">Pearson 相关系数

Pearson 相关系数衡量的是两个变量之间的线性相关性,具体公式为:
r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( y i − y ˉ ) 2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} r=(xixˉ)2(yiyˉ)2 (xixˉ)(yiyˉ)其中, x i x_i xi y i y_i yi 是变量 X X X Y Y Y 的观测值, x ˉ \bar{x} xˉ y ˉ \bar{y} yˉ 分别是 X X X Y Y Y 的均值。
Pearson 相关系数的取值范围是 [-1, 1]:

  • 1 表示完全正相关。

  • -1 表示完全负相关。

  • 0 表示没有线性相关性。

Cosine 相似度

Cosine 相似度主要用于衡量两个向量在向量空间中的方向相似度,公式为:
Cosine Similarity = ∑ x i y i ∑ x i 2 ∑ y i 2 \text{Cosine Similarity} = \frac{\sum x_i y_i}{\sqrt{\sum x_i^2 \sum y_i^2}} Cosine Similarity=xi2yi2 xiyi
取值范围是 [0, 1]:

  • 1 表示两个向量完全同向。

  • 0 表示两个向量完全不相关。

当向量经过零均值化处理后,对两个变量 X X X Y Y Y 进行零均值化处理(即将它们的均值减去),那么 Pearson 相关系数和 Cosine 相似度是相等的。

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity# 生成样本数据
np.random.seed(0)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)# 0 均值化
x_mean = x - np.mean(x)
y_mean = y - np.mean(y)# 计算 Pearson 相关系数
pearson_corr = np.corrcoef(x, y)[0, 1]# 计算 Cosine 相似度
cosine_sim = cosine_similarity([x_mean], [y_mean])[0, 0]print(f'Pearson 相关系数: {pearson_corr}')
print(f'Cosine 相似度: {cosine_sim}')
Pearson 相关系数: 0.9006752160894267
Cosine 相似度: 0.9006752160894267

Pearson__166">Pearson 相关系数的使用条件

  1. 线性关系:
    Pearson 相关系数适用于度量两个变量之间的线性关系。如果变量之间的关系是非线性的,Pearson 相关系数可能无法准确反映它们的相关性。

  2. 连续变量:
    适用于连续型变量。对于分类变量或离散型变量,应该使用其他相关性度量方法,如 Spearman 相关系数或 Kendall 相关系数

  3. 正态分布:
    变量应该大致符合正态分布。如果变量显著偏离正态分布,可以考虑进行数据变换(如对数变换)或使用非参数方法(如 Spearman 相关系数)。

  4. 独立性:
    变量应该是独立的。相关系数度量的是两个变量之间的关系,而不是因果关系。因此,两个变量的独立性是一个基本假设。

  5. 方差不为零:
    变量的方差不应该为零。如果一个变量的方差为零,那么所有观测值都是相同的,无法计算相关性。

Pearson__183">Pearson 相关系数的使用注意事项

  1. 敏感性:
    Pearson 相关系数对异常值非常敏感。少量的异常值可能会显著影响相关系数的值,因此在计算相关系数之前,应处理异常值(如删除或平滑处理)。

  2. 线性相关性:
    Pearson 相关系数只能度量线性相关性。如果两个变量之间存在复杂的非线性关系,Pearson 相关系数可能无法准确反映它们的相关性。应结合散点图等可视化手段来判断是否存在线性关系。

  3. 范围限制:
    Pearson 相关系数的取值范围在 [-1, 1] 之间。绝对值接近 1 表示强线性相关性,接近 0 表示弱线性相关性。然而,接近 0 的相关系数并不一定意味着变量之间没有关系,可能存在非线性关系。

  4. 数据清洗:
    在计算相关系数之前,需对数据进行清洗,包括处理缺失值、异常值和确保数据满足正态分布等条件。

  5. 样本大小:
    Pearson 相关系数的可靠性依赖于样本大小。较小的样本可能导致不稳定的相关系数,因此需要足够大的样本量以获得可靠的估计。

  6. 因果关系:
    Pearson 相关系数只能反映变量之间的相关性,不能推断因果关系。即使两个变量之间存在高相关性,也不能直接说明一个变量导致了另一个变量的变化。


http://www.ppmy.cn/news/1474190.html

相关文章

golang编译成Linux可运行文件

把Windows环境修改为linux,修改完成后,编译的go程序就是linux可运行文件 # cmd set GOARCHamd64 go env -w GOARCHamd64 set GOOSlinux go env -w GOOSlinux还原成windows环境 # 还原 go env -w GOARCHamd64 go env -w GOOSwindows注意: 这…

Python从0到100(三十六):字符和字符集基础知识及其在Python中的应用

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

论文 | Measuring and Narrowing the Compositionality Gap in Language Models

存在的问题: 关于一个复杂的多跳问题,大语言模型可以正确回答基于该问题分解的多个子问题,但是对于这个问题的最终答案大语言模型可能最终还是给不出来正确的。该论文根据这个现象提出了一个术语,叫“组合性差距”。 解决的方法&…

【前端从入门到精通:第二课:HTML头部标签常用标签】

走进HTML世界 HTML简介 可参考百度百科 学习变成到底难不难? A. 1 * 5 ? B. 111 * 555 ? A 到 B的过程, 差距就在于动手,不动手你就学不会。 如何创建HTML文件 ​鼠标右键->新建文本文件->更改后缀名.html 创建文件所需要注…

PostgreSQL数据库常用函数用法介绍

本文将介绍一些PostgreSQL中常用的函数,包括其用途、参数说明、使用示例、测试用例,以及一些复杂函数的使用。 1. length() 用途 计算字符串的长度。 参数说明 text:需要计算长度的字符串。 使用示例 SELECT length(PostgreSQL);输出&…

《框架封装 · Redis 事件监听》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

adobe pdf设置默认打开是滚动而不是单页视图

上班公司用adobe pdf,自己还不能安装其它软件。 每次打开pdf,总是默认单页视图,修改滚动后,下次打开又 一样,有时候比较烦。 后面打开编辑->首选项, 如下修改,下次打开就是默认滚动了

硬件开发笔记(二十四):贴片电容的类别、封装介绍,AD21导入贴片电容、原理图和封装库3D模型

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140241817 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…