在《统计数字会撒谎》里,有这样一个案例:
我相信你不是一个势利小人,而我也并不做房地产生意。但请让我们作这样的假定,并且假设,此刻你正在一条我所住的加利福尼亚山谷不远处寻找想买的房子。对你的情况进行了初步判断后,我巧舌如簧、费尽心思地让你相信附近居民的平均年收入大约有15000美元。也许这坚定了你要在此居住的信心,不管怎样,买卖最终成交了,那美妙的数字也被牢记在你的脑海。而且,既然你已经买下了房子--你有那么一点势利,当与朋友聊天时,你就会不经意地流露出你居住的地点:我住在一个相当棒的高收入小区。
一年左右过后,我们又见面了。作为某纳税者委员会的成员,我正在四处奔走,为降低税率、降低财产估价,或降低公共交通费用而呼吁。我的理由很简单,我们支付不起各种上涨的费用,毕竟,附近居民的平均年收入只有3500美元。也许你会加入到我们委员会的工作中来--你不仅势利,而且还挺吝啬。但是,当听到那可怜的2000英镑时,你也禁不住大吃一惊。到底是我现在撒谎了呢?还是一年前撒了谎?
其实这两次你都无法怪罪于我,利用统计撒谎的妙处被展现得淋漓尽致。无论是15000美元,还是3500美元,它们都是合法的平均数,计算方法也完全正确。两个数字都基于相同的数据,来自相同的居民,根据相同的收入。所有都是相同的,但显然其中有一个数据令人误解,足以与弥天大谎相媲美。
我的花招就是两次分别使用了不同的平均数“平均数”这个词宽泛的涵义帮了大忙。当一个家伙希望用数据影响公众观点,或者向其他人推销广告版面,平均数便是一个经常被使用的伎俩。
众所周知,统计学里有这样一个简单的结论:
如果一个分布的偏度(skewness)为负(换句话说,服从右偏分布),那么大概有这么一个规律:
(均值)mean>(中位数)median>(众数)mode
相反,如果一个分布的偏度为正,那么大概有这么个规律mean<median<mode.
理解这个结论不需要任何数学基础,例如,收入的分布是一个左偏分布,穷人永远是大多数(众数是一个很低的数字),中产阶级收入高一些(中位数比众数更大),被富人平均之后,大家收入看起来很可观(均值最大)
如果只是介绍这个结论,这篇文章就太无聊了。万事万物皆是算法,下面写一段简单程序模拟上述结论:
x1=100*random('norm',1,1,8000,1);
x2=100*random('norm',5,1,4000,1);
x1=round(x1);
x2=round(x2);
上述代码生成了8000个穷人和4000个富人,并且假设穷人的收入均值为1,标准差为1;富人收入均值为5,标准差为1。为了使众数有意义,用round函数进行了离散化处理。
x=[x1;x2];
把穷人和富人放到一起
subplot(2,2,1)
ksdensity(x1)
subplot(2,2,2)
ksdensity(x2)
subplot(2,1,2)
ksdensity(x)
做概率密度估计。这里插一句,在做可视化时,很多情况下,ksdensity(概率密度估计图)比hist(分布直方图)、histfit(加入正态拟合的分布直方图)更加简洁明了,效果比较如下:
hist\histfit\ksdensity最后是描述性统计量:
fprintf('均值是%3f\n',mean(x));
fprintf('中位数是%3f\n',median(x));
fprintf('众数是%3f\n',mode(x));
fprintf('偏度是%3f\n',skewness(x));
程序输出与结论分析:
穷人+富人均值是232.538583
中位数是165.000000
众数是98.000000
偏度是0.505472
结论很显著。
有人调侃自己“被平均了”,还是有统计学依据的。
网友评论