Python程序设计:人工智能案例实践
上QQ阅读APP看书,第一时间看更新

4.18 数据科学入门:离中趋势度量

在前面的章节对描述性统计的讨论中,我们考虑了对表示集中趋势的均值、中值和众数的度量。这些度量可以帮助我们对一组值中的典型值进行分类,例如学生的平均身高或某个国家的居民最常购买的汽车品牌(众数)等。

当讨论一个群体时,这个群体被称为种群。有时种群相当庞大,例如,在下一次美国总统选举中可能参加投票的选民,这个数字可能会超过100,000,000人。美国民意调查组织试图预测谁将成为下一任总统,但从现实情况考虑,需要在精心挑选的种群子集(称为样本)上开展工作。在2016年的美国大选中,许多民意调查样本的规模大约为1000人。

本节将继续讨论基本的描述性统计数据,并引入离中趋势度量(也称为变异性度量)帮助人们了解值的分布情况。例如,在一个班的学生中,可能多数学生的身高接近平均水平,但少数学生明显偏矮或偏高。

为了说明这个问题,我们将使用以下10个六面骰子的点数构成种群,分别通过手动方式和使用statistics模块中的函数来计算每种离中趋势度量:

    1, 3, 4, 2, 6, 5, 3, 4, 5, 2

方差

为了确定方差[1],我们从这些值的均值3.5开始计算。可以通过用点数之和35除以投掷次数10来得到此结果。接下来,从每个骰子点数中减去平均值(这样会产生一些负数结果),结果如下:

    -2.5, -0.5, 0.5, -1.5, 2.5, 1.5, -0.5, 0.5, 1.5, -1.5

然后,计算每一个数值的平方(结果全部为正数),结果如下:

    6.25, 0.25, 0.25, 2.25, 6.25, 2.25, 0.25, 0.25, 2.25, 2.25

最后,计算这些平方的平均值,即2.25(22.5 / 10),这个值称为总体方差。计算每个骰子的点数与平均值之差的平方是为了强调异常值,即距离均值最远的值。随着我们对数据分析的深入了解,有时我们会特别注意异常值,而有时我们又会忽略它们。以下代码使用statistics模块的pvariance函数来检验手工计算的结果:

标准偏差

标准偏差是方差的平方根(在这个例子中为1.5),它降低了异常值的影响。方差和标准偏差越小,数据值越接近均值,值和均值之间的总体偏差就越小。下面的代码使用statistics模块的pstdev函数计算总体标准偏差,检查手动计算的结果:

pvariance函数的结果传递给math模块的sqrt函数来验证输出结果1.5:

标准偏差相对于方差的优点

假设已经记录了我们所在地区3月份的华氏温度,可能包含31个数字,例如19、32、28和35等,这些数字的单位是“度”。当对温度求平方以计算总体方差时,总体方差的单位变为“平方度”。而采用总体方差的平方根来计算总体标准偏差时,单位再次变为“度”,这与温度的单位相同。


[1] 为了简单起见,我们计算的是总体方差。总体方差和样本方差之间存在着微小的差异。样本方差除以n–1,而不是除以n(示例中的投掷次数)。对于小样本,这种差异非常明显,但随着样本量的增加而变得越来越微不足道。statistics模块提供了分别计算总体方差和样本方差的函数pvariancevariance。同样,statistics模块也提供了pstdevstdev函数,用于分别计算相对标准偏差和样本标准偏差。