Hive零基础从入门到实战 进阶篇(九) HiveQL:相关系数函数

目录

 

前言

1. 什么是相关系数

1.1 定义

1.2 性质

1.3 适用范围

1.4 缺点

2. 相关系数函数

2.1 函数功能

2.2 举例


 

前言

本文来介绍相关系数的含义以及Hive中如何使用计算相关系数的函数。

 

1. 什么是相关系数

1.1 定义

相关系数(Correlation coefficient)是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母 r 表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数,也叫简单相关系数或线性相关系数。

用数学公式表示,皮尔森相关系数等于两个变量的协方差除于两个变量的标准差:

协方差和标准差的计算方法可以参见进阶篇(八) 

 

1.2 性质

相关系数定量地刻画了 X 和 Y的相关程度。r的取值在-1与+1之间,若r>0,表明两个变量是正相关,即一个变量的值越大,另一个变量的值也会越大;若r<0,表明两个变量是负相关,即一个变量的值越大另一个变量的值反而会越小。r 的绝对值越大表明相关性越强,要注意的是这里并不存在因果关系。若r=0,表明两个变量间不是线性相关,但有可能是其他方式的相关(比如曲线方式)。

一般相关系数的绝对值与相关程度对应关系如下:   

  • 0.8-1.0     极强相关
  • 0.6-0.8     强相关
  • 0.4-0.6     中等程度相关
  • 0.2-0.4     弱相关
  • 0.0-0.2     极弱相关或无相关 

 

1.3 适用范围

当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于以下三种情况:

  1. 两个变量之间是线性关系,都是连续数据。
  2. 两个变量的总体是正态分布,或接近正态的单峰分布。
  3. 两个变量的观测值是成对的,每对观测值之间相互独立。

 

1.4 缺点

相关系数有一个明显的缺点,即它接近于1的程度与数据组数n相关,这容易给人一种假象。因为,当n较小时(<30),相关系数的波动较大,对有些样本相关系数的绝对值易接近于1,特别是当n=2时,相关系数的绝对值总为1。而当n较大时(>100),相关系数的绝对值容易偏小。

因此在样本容量n较小时,我们仅凭相关系数较大就判定变量x与y之间有密切的线性关系是不妥当的。所以在SPSS、R等统计软件中,在计算相关系数的时,会对相关系数做显著性假设检验。显著性假设检验是为了说明:得到的结果是不是偶然因素导致的(具有统计学意义);相关系数回答的问题是相关程度强弱。

假如说我得到”P<0.05,相关系数 R=0.279”,意味着二者之间确实(P<0.05)存在相关关系,而相关性为0.279,通俗的说就是有95%的把握说明二者有弱相关关系。

而如果“P>0.05,相关系数R=0.799”,则意味着二者之间相关性很强(R=0.799),而这个高相关的结果可能是偶然因素导致的,即不具有统计学意义,通俗的说就是没有大于95%的把握说明二者有弱相关关系。

需要指出的是,当样本量很小时(<10),一般都无法通过显著性检验,而且相关系数很可能偏大,且随n的变化波动很大。而当样本量很大时(>100),一般都能通过显著性检验,但相关系数很可能偏小,得到一个显著弱相关的无效结果。所以推荐计算两个变量的简单相关系数时,使用30-40个样本。

 

2. 相关系数函数

通过上面的介绍,相信大家对相关系数已经有了一定的初步认识。下面我们回到正题,来介绍Hive中计算相关系数的聚合函数。

 

2.1 函数功能

corr(col1, col2)

col1和col2分别写入两个列名,最后会返回两个数字列的皮尔逊相关系数(DOUBLE类型)。另此函数为聚合函数,可以配合group by对多个组同时求两列的相关系数。

 

2.2 举例

新建test.txt文件,输入两列数据,假设第一列为某公司各月销售额,第二列为各月成本。单位均为万元。

[root@hadoop ~]# vim test.txt
50,30
53,32
56,34
59,23
62,38
65,40
68,42
71,44
74,29
77,48
80,50
83,52
86,54
89,64
92,58
95,60
98,62
101,64
104,66
107,68

新建表temp_test3,将test文件中的数据插入,查看数据

CREATE TABLE temp_test3 (
      xiaoshoue INT
      ,chengben INT
      ) row format delimited fields terminated BY ',';


load data local inpath '/root/test.txt' into table temp_test3;

hive (app)> select * from temp_test3;
OK
temp_test3.xiaoshoue	temp_test3.chengben
20	10
23	12
26	14
29	16
32	18
35	20
38	22
41	24
44	26
47	28
50	30
53	32
56	34
59	23
62	38
65	40
68	42
71	44
74	29
77	48
80	50
83	52
86	54
89	64
92	58
95	60
98	62
101	64
104	66
107	68

计算该公司销售额与成本的相关系数。因为样本数为30,所以避免了相关系数的缺点,假定能通过显著性假设检验。

hive (app)> select corr(xiaoshoue,chengben) as corr from temp_test3;

corr
0.9733370471164661

所以该公司销售额与成本的相关系数为0.9733370471164661,说明二者为强正相关。

 


能看到这里的同学,就右上角点个赞吧,3Q~

你可能感兴趣的:(Hive零基础从入门到实战 进阶篇(九) HiveQL:相关系数函数)