python 皮尔森相关系数(Pearson)

这篇具有很好参考价值的文章主要介绍了python 皮尔森相关系数(Pearson)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

  • 皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数。记为r,用来反映两个变量X和Y的线性相关程度,r 值介于-1到1之间,绝对值越大表明相关性越强。
  • 适用连续变量。
  • 相关系数与相关程度一般划分为
       0.8 - 1.0 极强相关
       0.6 - 0.8 强相关
       0.4 - 0.6 中等程度相关
       0.2 - 0.4 弱相关
       0.0 - 0.2 极弱相关或无相关

二、定义

2.1 总体样本定义

ρ X , Y = c o v ( X , Y ) σ X σ Y = E ( X − μ X ) E ( Y − μ Y ) σ X σ Y \begin{aligned} \rho_{X,Y} = \frac {cov(X,Y)} {\sigma_{X} \sigma_{Y}} = \frac {E(X-\mu_{X}) E(Y-\mu_{Y})} {\sigma_{X} \sigma_{Y}} \end{aligned} ρX,Y=σXσYcov(X,Y)=σXσYE(XμX)E(YμY)
其中, σ X = E { [ X − E ( X ) ] 2 } , σ Y = E { [ Y − E ( Y ) ] 2 } \sigma_{X} = \sqrt{E\{[X - E(X)]^{2}\}},\sigma_{Y} = \sqrt{E\{[Y - E(Y)]^{2}\}} σX=E{[XE(X)]2} ,σY=E{[YE(Y)]2}

2.2 估算样本定义

  • 估算样本的协方差和标准差,可得到样本相关系数(即样本皮尔森相关系数),常用 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 \begin{aligned} r = \frac { \displaystyle \sum_{i=1}^{n} (X_{i} - \overline{X}) (Y_{i} - \overline{Y}) } { \sqrt{ \displaystyle \sum_{i=1}^{n} (X_{i} - \overline{X})^{2} } \sqrt{ \displaystyle \sum_{i=1}^{n} (Y_{i} - \overline{Y})^{2} } } \end{aligned} r=i=1n(XiX)2 i=1n(YiY)2 i=1n(XiX)(YiY)

  • 还可以由(Xi,Yi)样本点的标准分数均值估计得到与上式等价的表达式
    r = 1 n − 1 ∑ i = 1 n ( X i − X ‾ σ X ) ( Y i − Y ‾ σ Y ) \begin{aligned} r = \frac{1}{n-1} \sum_{i=1}^{n}{ (\frac {X_{i} - \overline{X}} {\sigma_{X}} ) (\frac {Y_{i} - \overline{Y}} {\sigma_{Y}} ) } \end{aligned} r=n11i=1n(σXXiX)(σYYiY)
    其中, X i − X ‾ σ X \frac {X_{i} - \overline{X}} {\sigma_{X}} σXXiX 是样本X的标准分数。

2.3 两种计算方式

  • (1)
    ρ X , Y = c o v ( X , Y ) σ X σ Y = E ( X − μ X ) E ( Y − μ Y ) σ X σ Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 ( Y ) \begin{aligned} \rho_{X,Y} = \frac {cov(X,Y)} {\sigma_{X} \sigma_{Y}} = \frac {E(X-\mu_{X}) E(Y-\mu_{Y})} {\sigma_{X} \sigma_{Y}} = \frac {E(XY) - E(X)E(Y)} { \sqrt{E(X^2) - E^{2}(X)} \sqrt{E(Y^2) - E^{2}(Y)} } \end{aligned} ρX,Y=σXσYcov(X,Y)=σXσYE(XμX)E(YμY)=E(X2)E2(X) E(Y2)E2(Y) E(XY)E(X)E(Y)

  • (2)
    ρ X , Y = n ∑ X Y − ∑ X ∑ Y n ∑ X 2 − ( ∑ X ) 2 n ∑ Y 2 − ( ∑ Y ) 2 \begin{aligned} \rho_{X,Y} = \frac {n \sum{XY} - \sum{X}\sum{Y}} { \sqrt{n \sum{X^{2}} - (\sum{X})^{2}} \sqrt{n \sum{Y^{2}} - (\sum{Y})^{2}} } \end{aligned} ρX,Y=nX2(X)2 nY2(Y)2 nXYXY

2.4 皮尔森距离

d X , Y = 1 − ρ X , Y d_{X,Y} = 1 - \rho_{X,Y} dX,Y=1ρX,Y

三、python 实现

3.1 生成随机数据集

import random
import pandas as pd

n = 10000
X = [random.normalvariate(100, 10) for i in range(n)] # 随机生成服从均值100,标准差10的正态分布序列
Y = [random.normalvariate(100, 10) for i in range(n)] # 随机生成服从均值100,标准差10的正态分布序列
Z = [i*j for i,j in zip(X,Y)]
df = pd.DataFrame({"X":X,"Y":Y,"Z":Z})

皮尔逊相关系数 python,python,概率论,机器学习,数据分析

3.2 绘制散点图

import matplotlib.pyplot as plt 

# 绘制散点图矩阵
pd.plotting.scatter_matrix(df)
plt.show()

皮尔逊相关系数 python,python,概率论,机器学习,数据分析

3.3 计算相关系数

3.3.1 自定义函数(无显著性检验)

import math

def PearsonFirst(X,Y):
    '''
        公式一
    '''
    XY = X*Y
    EX = X.mean()
    EY = Y.mean()
    EX2 = (X**2).mean()
    EY2 = (Y**2).mean()
    EXY = XY.mean()
    numerator = EXY - EX*EY                                 # 分子
    denominator = math.sqrt(EX2-EX**2)*math.sqrt(EY2-EY**2) # 分母
    
    if denominator == 0:
        return 'NaN'
    rhoXY = numerator/denominator
    return rhoXY

def PearsonSecond(X,Y):
    '''
        公式二
    '''
    XY = X*Y
    X2 = X**2
    Y2 = Y**2
    n = len(XY)
    numerator = n*XY.sum() - X.sum()*Y.sum()                                            # 分子
    denominator = math.sqrt(n*X2.sum() - X.sum()**2)*math.sqrt(n*Y2.sum() - Y.sum()**2) # 分母
    
    if denominator == 0:
        return 'NaN'
    rhoXY = numerator/denominator
    return rhoXY 
    
r1 = PearsonFirst(df['X'],df['Z'])  # 使用公式一计算X与Z的相关系数
r2 = PearsonSecond(df['X'],df['Z']) # 使用公式二计算X与Z的相关系数
print("r1: ",r1)
print("r2: ",r2)

皮尔逊相关系数 python,python,概率论,机器学习,数据分析

3.3.2 python 函数

(1)pandas.corr 函数(无显著性检验)
  • 参数解析
    DataFrame.corr(
      method = ‘pearson’, # 可选值为{‘pearson’:‘皮尔森’, ‘kendall’:‘肯德尔秩相关’, ‘spearman’:‘斯皮尔曼’}
      min_periods=1    # 样本最少的数据量
    )
df.corr(method="pearson")

皮尔逊相关系数 python,python,概率论,机器学习,数据分析

(2)scipy.stats.pearsonr 函数 (有显著性检验)
from scipy.stats import pearsonr

r = pearsonr(df['X'],df['Z'])
print("pearson系数:",r[0])
print("   P-Value:",r[1])

皮尔逊相关系数 python,python,概率论,机器学习,数据分析

(3)pandas.corr 加 scipy.stats.pearsonr 获取相关系数检验P值矩阵
def GetPvalue_Pearson(x,y):
    return pearsonr(x,y)[1]

df.corr(method=GetPvalue_Pearson)

皮尔逊相关系数 python,python,概率论,机器学习,数据分析文章来源地址https://www.toymoban.com/news/detail-784661.html

  • 参考:pandas.DataFrame.corr
  • 参考:皮尔森相关系数(Pearson correlation coefficient)
  • 参考:scipy.stats.pearson

到了这里,关于python 皮尔森相关系数(Pearson)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 相关系数(皮尔逊相关系数和斯皮尔曼相关系数)

     本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:5.1 对数据进行描述性统计以及皮尔逊相关系数的计算方法_哔哩哔哩_bilibili 注:直接先看 ( 三、两个相关系数系数的比较 ) 部分!!! 目录 ​编辑 一、数据的描述性统计分析  二、

    2024年01月21日
    浏览(26)
  • 数学建模.皮尔逊相关系数

    一.前言 皮尔逊相关系数说白了就是一次函数中的斜率k,反应两个变量之间的关系,与斜率不同的地方在于其数值在1和-1之间,越接近于1,则说明两个变量之间是完全正向的线性关系;越接近于-1,说明两个变量之间是完全负向的线性关系。(本文是作者在学习清风的建模网课

    2024年02月01日
    浏览(35)
  • js计算皮尔逊相关系数

    代码如下; 调用:  效果:

    2024年01月25日
    浏览(30)
  • 皮尔逊相关系数及假设检验

    一、看两者是否算相关要看两方面:显著水平以及相关系数 (1)显著水平,就是P值,这是首要的,因为如果不显著,相关系数再高也没用,可能只是因为偶然因素引起的,那么多少才算显著,一般p值小于0.05就是显著了;如果小于0.01就更显著;例如p值=0.001,就是很高的显著水平了,只要

    2024年02月08日
    浏览(40)
  • 数学建模学习笔记-皮尔逊相关系数

    内容:皮尔逊相关系数 一.概念:是一个和线性线关的相关性系数 1.协方差概念: 协方差受到量纲的影响因此需要剔除 2.相关性的误区 根据这个结论,我们在计算该系数之前需要确定是否为线性函数 二.相关性的计算 1.Matlab:只含相关性不含假设检验:下面第三大点讲解假设

    2024年02月20日
    浏览(32)
  • 数学建模.皮尔逊相关系数假设检验

    一、步骤 查表找临界值 二、更好的方法 三、使用条件 作图可以使用spss 这个图对不对还不好说,因为还没进行正态分布的验证 四、正态分布验证 (1)JB检验 所以之前的数据的那个表是错的,因为不满足正态分布 (2)Shapiro-wilk检验 看最后一列,为p值,由此观之,不符合原

    2024年01月18日
    浏览(35)
  • 【数学建模】皮尔逊相关系数和假设检验

    为了说明两组数据之间的相关性,例如身高与50米跑步的成绩,我们引入相关系数,本文先介绍person相关系数以及在特定情况下的使用方法。 Person相关系数在 满足特定条件下 用来衡量两个变量之间的相关性。 在正式介绍person相关系数之前,我们先引入协方差的概念 协方差是

    2024年02月09日
    浏览(28)
  • [皮尔逊相关系数corrwith]使用案例:电影推荐系统

    协同过滤算法用于发现用户与物品之间的相关性,主要有两种:基于用户的和基于物品的。 基于用户: 用户1购买了物品A、B、C、D,并给了好评;而用户2也买了A、B、C,那么认为用户1和用户2是同类型用户,也可以把D推荐给用户2。 基于物品: 物品A和物品B都被用户1、2、

    2024年02月10日
    浏览(30)
  • 皮尔逊相关系数及代码实现(C语言+MATLAB)

    皮尔逊相关系数,常用于度量两个变量X和Y之间的相关性(线性相关)。本文通过介绍其 概念定义、数学公式 ,进而引出其 适用场合 ,并基于 MATLAB和C语言 对皮尔逊相关系数分别进行了 代码实现 。 在统计学中, 皮尔逊相关系数( Pearson correlation coefficient) ,又称皮尔逊积

    2024年02月06日
    浏览(29)
  • 概率论:方差、标准差、协方差、皮尔逊相关系数、线性相关

    一个随机变量,的值的变化程度可以用方差计算:  ;其中 是期望。 另外一种等价表达式:      其中为均值,N为总体例数 我们举个例子: 服从均一分布,取值为0.1,0.2,0.3,0.4,0.5 ,每种值的概率是20%,可算出期望是0.3,那么方差就是: 标准差是方差的平方根,随机

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包