学习大数据的必修之路是学习统计学,而贯穿于统计学的几个基本统计量和统计图却是我们很容易忘记和搞混的,这篇文章就是为了解释这些基本的统计量与统计图的含义、作用、区别的。能够加深我们对数据分析的理解。
样本协方差
在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
从数值来看,协方差的数值越大,两个变量同向程度也就越大,反之亦然。
可以看出来,协方差代表了两个变量之间的是否同时偏离均值,和偏离的方向是相同还是相反。
公式:
# 用numpy实现
import numpy as np
# Sample Date - SH000300 Earning in 2017-03
datas_sh000300 = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]
datas_sz000651 = [0.07, -0.55, -0.04, 3.11, 0.28, -0.50, 1.10, 1.97, -0.31, -0.55, 2.06, -0.24, -1.44, 1.56, 3.69, 0.53, 2.30, 1.09, -2.63, 0.29, 1.30, -1.54, 3.19]
cov2 = np.cov(datas_sh000300, datas_sz000651, ddof=0)[1][0]
print(str(cov2))
# result = 0.438529489603
# 用numpy实现
import numpy as np
datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]
variance = np.var(datas)
print(str(variance))
# result = 0.253493383743
# 用numpy实现
import numpy as np
# Sample Date - SH000300 Earning in 2017-03
datas = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]
standard_deviation2 = np.std(datas, ddof = 0)
print(str(standard_deviation2))
# result =0.50348126454
协方差的相关系数
协方差的相关系数,不仅表示线性相关的方向,还表示线性相关的程度,取值[-1,1]。也就是说,相关系数为正值,说明一个变量变大另一个变量也变大;取负值说明一个变量变大另一个变量变小,取0说明两个变量没有相关关系。同时,相关系数的绝对值越接近1,线性关系越显著。
公式:用X、Y的协方差除以X的标准差乘以Y的标准差。
import numpy as np
import math
# Sample Date - SH000300 Earning in 2017-03
datas_sh000300 = [0.16, -0.67, -0.21, 0.54, 0.22, -0.15, -0.63, 0.03, 0.88, -0.04, 0.20, 0.52, -1.03, 0.11, 0.49, -0.47, 0.35, 0.80, -0.33, -0.24, -0.13, -0.82, 0.56]
datas_sz000651 = [0.07, -0.55, -0.04, 3.11, 0.28, -0.50, 1.10, 1.97, -0.31, -0.55, 2.06, -0.24, -1.44, 1.56, 3.69, 0.53, 2.30, 1.09, -2.63, 0.29, 1.30, -1.54, 3.19]
cov = np.cov(datas_sh000300, datas_sz000651, ddof=0)[1][0]
standard_deviation_sh000300 = np.std(datas_sh000300, ddof=0)
standard_deviation_sz000651 = np.std(datas_sz000651, ddof=0)
ppcc = cov/(standard_deviation_sh000300*standard_deviation_sz000651)
print(str(ppcc))
# result = 0.554372485367