小白学(Python数据分析与数据运营)的日常杂记12

it2022-05-05  128

有关相关性分析的混沌

1 相关和因果是一回事吗2 相关系数低就是不相关吗3 代码实操:Python相关性分析 相关性分析是指对多个具备相关关系的变量进行分析,从而衡量变量间的相关程度或密切程度。 相关性可以应用到所有数据的分析过程中,任何事物之间都是存在一定的联系。相关性用R(相关系数)表示,R的取值范围是[-1,1]。

1 相关和因果是一回事吗

相关性不等于因果,用x1和x2作为两个变量进行解释,相关意味着x1和x2是逻辑上的并列相关关系,而因果联系可以解释为因为x1所以x2(或因为x2所以x1)的逻辑关系,二者是完全不同的。

用一个运营示例来说明二者的关系:做商品促销活动时,通常都会以较低的价格进行销售,以此来实现较高的商品销量;随着商品销售的提升,也给线下物流配送体系带来了更大的压力,在该过程中通常会导致商品破损量的增加。

商品低价与破损量增加并不是因果关系,即不能说因为商品价格低所以商品破损量增加;二者的真实关系是基于促销这个大背景下,低价和破损量都是基于促销产生。

相关性的真实价值不是用来分析“为什么”,而是通过相关性来描述无法解释的问题背后真正成因。相关性的真正价值是能知道“是什么”,即无论通过何种因素对结果产生影响,最终出现的规律就是二者会一起增加、降低等。

仍然是上面的案例,通过相关性分析我们可以知道,商品价格低和破损量增加是相伴发生的,这意味着当价格低的时候(通常是做销售活动,也有可能产品质量问题、物流配送问题、包装问题等),我们就想到破损量可能也会增加;但是到底由什么导致的破损量增加,是无法通过相关性得到的。

2 相关系数低就是不相关吗

其实不是首先,R的取值可以为负,R=-0.8代表的相关性要高于R=0.5,负相关只是意味着两个变量的增长趋势相反。因此需要看R的绝对值来判断相关性的强弱。

其次,即使R的绝对值低,也不一定说明变量间的相关性低,原因是相关性衡量的仅仅是变量间的线性相关关系,变量间除了线性关系外,还包括指数关系、多项式关系、幂关系等,这些非线性相关的相关性不在R(相关性分析)衡量范围之内。

3 代码实操:Python相关性分析

将使用Numpy进行相关性分析

import numpy as np data = np.loadtxt('D:/jupter_workspace/chapter3/data5.txt', delimiter='\t') # 读取数据文件 x = data[:, :-1] # 切分自变量 correlation_matrix = np.corrcoef(x, rowvar=0) # 相关性分析 print(correlation_matrix.round(2)) # 打印输出相关性结果,使用round方法保留2位小数 ---------------------- 输出结果: [[ 1. -0.04 0.27 -0.05 0.21 -0.05 0.19 -0.03 -0.02] [-0.04 1. -0.01 0.73 -0.01 0.62 0. 0.48 0.51] [ 0.27 -0.01 1. -0.01 0.72 -0. 0.65 0.01 0.02] [-0.05 0.73 -0.01 1. 0.01 0.88 0.01 0.7 0.72] [ 0.21 -0.01 0.72 0.01 1. 0.02 0.91 0.03 0.03] [-0.05 0.62 -0. 0.88 0.02 1. 0.03 0.83 0.82] [ 0.19 0. 0.65 0.01 0.91 0.03 1. 0.03 0.03] [-0.03 0.48 0.01 0.7 0.03 0.83 0.03 1. 0.71] [-0.02 0.51 0.02 0.72 0.03 0.82 0.03 0.71 1. ]] ------------------------------ 相关性矩阵的左侧和顶部都是相对变量,从左到右、从上到下依次 是列1到列9。从结果看出: ·第5列和第7列相关性最高,系数达到0.91; 第4列和第6列相关性较高,系数达到0.88; ·第8列和第6列相关性较高,系数达到0.83

最新回复(0)