两个变量的相关性- - - 协方差与皮尔逊基相关系数
程序员文章站
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)
上一篇: java的一些基础啊
下一篇: opencv-python 图像预处理