@notmylove
2019-07-18T10:42:54.000000Z
字数 2880
阅读 9102
统计学
协方差
相关系数
应用场景:评价变量的波动情况;构建评价指标体系(可以灵活应用)
应用价值: 通过相关性分析,删除反映信息重复的指标,保证指标体系的简洁有效,提升模型的准确性;
相信大家都知道方差(标准差)的概念,它们反映了随机变量取值的波动范围,但是在比较两个随机变量的波动大小时,如果仅看方差(或者标准差)的大小有时会产生不合理的现象,这有两个原因:
所以要比较两个随机变量的波动大小时,在有些场合使用以下定义的变异系数来进行比较会更有意义。
设随机变量的二阶矩(不知道二阶矩是什么的同学没有关系,这个条件存在是为了保证方差的存在性)存在,则称比值
因为变异系数是以其数学期望为单位去度量随机变量取值范围波动程度的特征数,标准差的量纲与数学期望的量纲是一致的,所以变异系数是一个无量纲的量,从而消除量纲度波动的影响。
用随机变量表示某种同龄树的高度,其量纲是米(m),用表示某年龄段儿童的身高,其量纲也是米(m)。设,那你是否可以根据两者的方差就认为的波动小?这就一个取值相对大小的问题。在这个问题上使用变异系数是恰当的。因为的变异系数:
还有一点需要给大家介绍的,与这些知识相关的且实用但是会容易混淆的统计学里的一些知识点:
协方差表示的是两个变量的总体的误差,描述两个变量间的相互关联程度(线性),这与只表示一个变量误差的方差(方差是协方差的特殊情况,即两个变量相同的时候)不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
计算公式
性质
协方差矩阵就是多个变量中两两变量之间的协方差构成的矩阵,常使用在主成分分析法(PCA)中。
python简单实现
import numpy as np
# 随机生成多个变量构成的多维数组
X = np.random.randint(1, 10, 12).reshape(3, 4)
# X结果如下
array([[6, 2, 7, 6],
[4, 8, 8, 4],
[1, 9, 9, 2]])
# x_0 = [6, 2, 7, 6]
# x_1 = [4, 8, 8, 4]
# x_2 = [1, 9, 9, 2]
# 协方差计算
covar = np.cov(X)
# covar结果如下
array([[ 4.91666667, -2. , -3.75 ],
[-2. , 5.33333333, 10. ],
[-3.75 , 10. , 18.91666667]])
# 其中covar[0, 1]为x_0与x_1之间的协方差
协方差是有量纲的量,因此为了消除量纲的影响,现对协方差除于相同量纲的量,就得到了一个新的概念——相关系数(线性),它的定义如下:
从以上定义可以看出相关系数与协方差是同符号的,这说明从相关系数的取值也可以反映出X与Y的正相关、负相关和不相关。
相关系数的另一个解释是:它是相应标准化变量的协方差。相应数学推导过程这里就不提及了。
性质
相关系数刻画了X与Y之间的线性关系强弱,因此也常称为线性相关系数。
这种相关系数也叫Person相关系数,统计学中有三大相关系数,除了Person相关系数,还有Spearman相关系数、Kendall相关系数。其中Person相关系数受异常值的影响比较大,并且分母不能为0(也就是说标准差不能为0)。Spearman相关系数由于它的计算公式就不受分母不能为0的影响了,并且受异常值的影响相对较小,在生物实验数据分析中,尤其是在分析多组学交叉的数据中说明不同组学数据之间的相关性时,使用的频率很高。Kendall相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。分类变量可以理解成有类别的变量,可以分为无序的,比如性别(男、女)、血型(A、B、O、AB);有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。通常需要求相关性系数的都是有序分类变量。
举个例子。比如评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否一致,这时候就可以使用Kendall相关系数进行衡量。具体的计算公式就不说了,大家知道怎么使用就好。
python简单实现
from scipy.stats import pearsonr,spearmanr,kendalltau
import numpy as np
# 随机生成多个变量构成的多维数组
X = np.random.randint(1, 10, 12).reshape(3, 4)
# x_0,x_1,x_2与前面一样
# 相关系数矩阵(Person相关系数)
corr = np.corrcoef(X)
# 其中corr[0, 1]为x_0与x_1之间的相关系数
# x_0与x_1之间的Person相关系数
pearsonr(X[0, :], X[1, :])
# x_0与x_1之间的Spearman相关系数
spearmanr(X[0, :], X[1, :])
# x_0与x_1之间的Kendall相关系数
kendalltau(X[0, :], X[1, :])