欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

两个变量的相关性- - - 协方差与皮尔逊基相关系数

程序员文章站 2022-07-13 08:53:29
...
应用场景:在实际应用中,我们常常会想了解两个变量之间的关系
这里举一个简单的例子:一个商店的经理想确定,周末电视广告播放的次数与下周商店销售额之间的关系
我们使用:协方差和相关系数,作为衡量两个变量关系的方法

一 协方差的一些解释:

在坐标轴中,使用x_u、y_u画两条直线,会使数据分布在四个象限
当s_xy为正时,表示变量x、y是正的线性关系,即x增加,y增加
当s_xy为负时,表示变量x、y为负的线性关系,即x增加,y减小
当s_xy=0时,表示数据均匀的分布在四个象限中,两个变量基本没有相关性

二 皮尔逊基相关系数的一些解释:

如果变量x、y存在完全的线性关系时,所有的点在一条直线上,此时相关系数的值为 1(完全正线性关系) 或 -1(完全负线性关系)
当相关系数越接近0值,表示越若的线性关系,当相关系数为0时,表示两个变量没有相关性

三  一份简单的计算代码

import numpy as np

# 协方差的度量
def XFCWork(x, y):      # 注:使用这种方法时,两个变量属性相近,度量单位相同,否则会因为度量单
                        #位不同,x,y变量的数值会影响协方差的值

    n = len(x)      # 注意:这里的x与y的长度是相等的

    x_u = np.mean(x)     # 5.0
    y_u = np.mean(y)     # y_u= 713.4

    x1 = x - x_u        # [-3. -1.  1.  4. -1.]
    y1 = y - y_u        # [-145.4  -34.4    6.6  251.6  -78.4]

    re1 = np.multiply(x1, y1)   # [ 436.2   34.4    6.6 1006.4   78.4]
    re2 = np.sum(re1)           # 1562.0
    s_xy = re2 / (n - 1)        # 390.5

    return s_xy

# 皮尔逊基相关系数的度量
def PEXJWork(x, y):

    n = len(x)  # 注意:这里的x与y的长度是相等的

    x_u = np.mean(x)  # 5.0
    y_u = np.mean(y)  # y_u= 713.4

    x1 = x - x_u  # [-3. -1.  1.  4. -1.]
    y1 = y - y_u  # [-145.4  -34.4    6.6  251.6  -78.4]

    re1 = np.multiply(x1, y1)  # [ 436.2   34.4    6.6 1006.4   78.4]
    re2 = np.sum(re1)  # 1562.0
    s_xy = re2 / (n - 1)  # 390.5

    s_x = np.std(x, ddof=1)   # 2.6457513110645907
    s_y = np.std(y, ddof=1)   # 151.50676552550385

    p_xy = s_xy / (s_x * s_y) # 0.9741817548422143

    return p_xy

x1 = np.array([2, 4, 6, 9, 4])      #  广告播放的次数
y1 = np.array([568, 679, 720, 965, 635])    # 销售的额度
s_xy = XFCWork(x1, y1)
p_xy = PEXJWork(x1, y1)
print('s_xy=', s_xy)
print('p_xy=', p_xy)

 

相关标签: 数据科学