样本统计量

人类的认知能力仅对少量的对象比较敏感,所以从大量数据中找出共性并不是人类所擅长的。为了解决这一问题,归纳和概括大量数据的指标便出现了,这就是统计量的由来。

一、集中趋势度量

集中趋势指一组数据向某一中心值靠拢或集中的程度。

1、均值

均值就是平均数,适用于数值型数据,它是数据集中趋势的最主要测量度。
算术平均数、调和平均数、几何平均数是三种不同形式的平均数,分别有各自的应用条件。进行统计研究时,适宜采用算术平均数时就不能用调和平均数或几何平均数,适宜用调和平均数时,同样也不能采用其他两种平均数。但从数量关系来考虑,如果用同一资料(变量各值不相等)计算以上三种平均数的结果是:算术平均数大于几何平均数,而几何平均数又大于调和平均数。当所有的变量值都相等时,则这三种平均数就相等。它们的关系可用不等式表示:H(调和平均数)≤G(几何平均数)≤X(算术平均数)

2、中位数

将数据从小到大进行排序,其中在数据集中有一半数据高于这个值,一半低于这个值,那么这个值就是中位数,适用于数值型数据,它是描述数据中心位置的数字特征。
对于对称分布的数据,均值与中位数比较靠近;对于偏态分布的数据,均值与中位数不同。中位数的一个显著特点是不受异常值的影响,具有稳健性,因此是非常重要的统计量。

3、众数

众数是数据集中出现次数最多的类别或值,既适用于数值型数据也适用于类别型数据,不受极端值的影响,具有一定稳健性。
如果数据没有明显的集中趋势,那么众数可能不存在;也可能有两个最高峰点,那么就有两个众数。众数适用于数据量较多,并且数据分布偏斜程度较大有明显峰值时。

4、切尾均值

平均数经常被人诟病的原因是有时候群体中可能会出现少量的异常值,这些异常值会显著地拉高或降低均值,让平均数失效。有很多方法可以帮助我们过滤掉异常值,切尾均值(又称截尾均值)是其中一种直观且效果很不错的滤掉异常值的方法。
如同名字所暗示的,切尾均值需要丢弃一部分数据。具体做法是,将所有数据从小到大(或从大到小)排序,然后将最前面的a%和最后面的a%丢弃,再求剩下数据的算术平均数。
数据丢弃的比例可以自行选择,实践中丢弃的比例一般在5%~25%之间。
我们很容易就能发现,切尾均值通常能够有效地避免异常值的影响。当考察的样本的分布类似像人的身高这样正态分布时,切尾均值理论上和算术平均数的值应该相等,当样本中存在极端的异常值时,切尾均值又能有效地避免或减小这些异常值的影响(与普通均值相比鲁棒性更好)。
切尾均值通常与中位数很接近,但与中位数相比,它包含了更多的样本信息,因此通常认为它更能反应统计对象的一般水平。
切尾均值现已广泛应用于电视大奖赛、体育比赛及需要由人们进行综合评价的竞赛项目,我们在电视中所熟悉的”去掉一个最高分,去掉一个最低分,最后得分是×分”就是利用切尾均值方法进行的评估。

5、三均值

还有一些类似的均值与切尾均值一样不易受异常值的影响,比如三均值。三均值(TM)或图基三均值,也需要将样本按大小排序,然后按个数平均分为4份,并取得对应的三个四分位数Q1、Q2、Q3,其第二四分位Q2(实际上就是中位数)在计算时将具有双倍的权重。
三均值实际上是在中位数的基础上增加了一些对样本分布的考虑,因此比中位数包含了更多的样本信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
import stats as sts
data = [31, 24, 23, 25, 14, 25, 13, 12, 14, 23,
32, 34, 43, 41, 21, 23, 26, 26, 34, 42,
43, 25, 24, 23, 24, 44, 23, 14, 52, 32,
42, 44, 35, 28, 17, 21, 32, 42, 12, 34]

# 集中趋势的度量
print('算术平均值:',np.mean(data))
print('调和平均数:',sts.harmonic_mean(data))
print('几何平均数:',sts.geometric_mean(data))
print('中位数:',np.median(data))
print('众数:',sts.mode(data))
selected = [x for x in data if x >= sts.quantile(data,p=0.1) and x< sts.quantile(data,p=0.9)]
print('切尾均值:',np.mean(selected))
print('三均值',(sts.quantile(data,p=0.25)+2*sts.quantile(data,p=0.5)+sts.quantile(data,p=0.75))/4)

二、离中趋势度量

离中趋势指一组数据远离其中心值的程度,从另一种层面说明了集中趋势度量值的代表程度。

1、极差

极差(又称范围误差或全距),是指最大值减最小值后所得之数据。数据越分散,极差就越大。
极差只利用了数据两端的信息,容易受极端值的影响,并没有充分利用数列的信息。

2、四分位差(IQR)

四分位差(又名四分位数极差),它是上四分位数与下四分位数的差。
四分位差反映了中间50%数据的离散程度(不受极值的影响),其数值越小,说明中间的数据越集中;其数值越大,说明中间的数据越分散。
此外,由于中位数处于数据的中间位置,因此,四分位差的大小在一定程度上也说明了中位数对一组数据的代表程度。

3、平均差

平均差(又称平均偏差)指数据中各样本值同全体样本值的平均数的离差绝对值(离差是总体各单位的标志值与算术平均数之差)的算术平均数。
平均偏差越大,表明各标志值与算术平均数的差异程度越大,该算术平均数的代表性就越小;平均偏差越小,表明各标志值与算术平均数的差异程度越小,该算术平均数的代表性就越大。
平均偏差又有简单平均偏差和加权平均偏差之分。

4、方差与标准差

方差指数据中各样本值同全体样本值的平均数的离差的平方的平均数。方差的算术平方根称为标准差。

方差和标准差的区别
方差与我们要处理的数据的量纲是不一致的,多了个平方,虽然能很好的描述数据与均值的偏离程度,但是处理结果是不符合我们的直观思维的。 而标准差的根号就抵消了这个平方,就能相对直观了描述数据与均值之间的偏离程度。

5、离散系数

离散系数(又称变异系数)是一种统计学当中测度数据离散程度的统计量。
当进行两个或多个资料离散程度的比较时,如果度量单位与平均数相同,可以直接利用标准差来比较。如果单位和(或)平均数不同时,比较其离散程度就不能采用标准差,而需采用标准差与平均数的比值(相对值)来比较。

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
import stats as sts
data = [31, 24, 23, 25, 14, 25, 13, 12, 14, 23,
32, 34, 43, 41, 21, 23, 26, 26, 34, 42,
43, 25, 24, 23, 24, 44, 23, 14, 52, 32,
42, 44, 35, 28, 17, 21, 32, 42, 12, 34]

# 离散趋势的度量
print('极差:',np.max(data)-np.min(data))
print('四分位差',sts.quantile(data,p=0.75)-sts.quantile(data,p=0.25))
print('方差:',np.var(data))
print('标准差:',np.std(data))
print('离散系数:',np.std(data)/np.mean(data))