关注风云之声
提升思维层次
导读

“拟合度……几乎为1……数据过于完美……属于小概率事件,在实际生活中几乎是不可能发生的事。因此可以断定,阿里……对销售额数据进行了人工修饰,存在造假事实。”这些话对外行可能显得很有说服力,对真正做过拟合的人来说,却只会笑掉大牙。

注:风云之声内容可以通过语音播放啦!读者们可下载讯飞有声APP,听公众号,查找“风云之声”,即可在线收听~


最近,发生了一场关于双十一销售额是不是造假的热烈争论。这里涉及到不少统计学知识,因此,这正是一个向大家介绍统计学的好例子。


这场争论的源头,是2019年4月24日,一位叫做“尹立庆”的网友发了一条微博,内容如下:


“#淘宝双11骗局# 从天猫双十一的全天销售额来看,实际生产数据几乎完美地分布在三次回归曲线上,拟合度均超过99.94%,几乎为1,而且生产数据有10年之久,每一年的数据都这么高度拟合,数据过于完美,销售额与年份的增长趋势仿佛按预期的设定的线性公式发展,属于小概率事件,在实际生活中几乎是不可能发生的事。因此可以断定,阿里为了吸引双十一的购物热度,对销售额数据进行了人工修饰,存在造假事实。可断定淘宝历年双11全天销售额数据存在假造,并且从一开始就在造假。马云真的是个大骗子,骗了全世界人民,并且骗了十年。如果继续如此造假,可预测2019年淘宝双11当天销售额为2675.37亿或者2689.00亿。”


尹立庆2019年4月24日的微博


11月12日,2019年双十一的销售额出炉了:2684亿。这时许多人翻出了尹立庆半年前的预测,惊呼“神推算”,类似下面这样:


2019年11月12日网民认为尹立庆神推算的微博

观众朋友们,请问你们对此怎么看?真的是神推算吗?真的是阿里造假被抓现行了吗?请仔细思考后回答。


我在这里可以告诉大家答案:这根本不是什么阿里造假的证据,而是作者对统计学半通不通的证据。因为他论证的逻辑完全是错误的,而最终的销售额用其他合理得多的方法也能预测个八九不离十。


具体而言,我们可以提出三个灵魂问题:


一,你真的相信,多项式函数的拟合度接近1是小概率事件吗?


二,如果马云要造假,你认为他应该用多项式函数还是指数函数?


三,如果你用指数函数来外推,会得到什么样的预测?


下面来详细解释一下。


尹立庆的微博说:“拟合度……几乎为1……数据过于完美……属于小概率事件,在实际生活中几乎是不可能发生的事。”这些话对外行可能显得很有说服力,对真正做过拟合的人来说,却只会笑掉大牙。因为,多项式函数拟合度接近1实在是太容易做到了,不接近1的都不好意思出来见人。


为了具体说明这个问题,我们需要对原文的数据做一些拟合的数值实验。其实像WPS和excel这样常用的软件就可以做拟合,欢迎大家去看我的朋友、风云学会会员陈经11月13日在我们的微信公众号“风云之声”发表的文章《解密天猫双11成交数据的“神奇”拟合:统计的障眼法》(解密天猫双11成交数据的“神奇”拟合:统计的障眼法 | 陈经),那里介绍了具体的操作方法。


尹立庆使用的原始数据,是2009年至2018年的双十一销售额,如下图(以下都以亿元为单位):


2009年至2018年的双十一销售额

我在excel上,把年份减去2009作为横坐标,也就是说2009年对应x = 0,2018年对应x = 9,对这些数据进行二次多项式拟合,得到如下所示的结果:


对2009年至2018年双十一销售额的二次多项式拟合


拟合出来的二次多项式是


y= 30.095 x2 - 33.99 x + 6.3011,


拟合度(goodness of fit)R2 = 0.9994,也就是99.94%。


光看这个,你也许会觉得这拟合真是太准确了,99.94%啊!且慢,让我们做些数值实验,看看这个拟合度的含金量有多高。


首先,把2018年的数据调高10%,也就是从2135增加到2348.5,然后再去拟合。你觉得会怎么样呢?直觉的想法是,拟合度会变得很差,对吧?


但当你真的算了以后,你就会发现,拟合度仍然高达99.67%!


对2009年至2018年双十一销售额的二次多项式拟合,2018年数据调高10%

再从相反的方向试验一下,把2018年的数据调低10%,也就是从2135降低到1921.5。这时你会发现,拟合度仍然高达99.52%。


对2009年至2018年双十一销售额的二次多项式拟合,2018年数据调低10%


有兴趣的观众可以尝试一下,要对2018年的数据做多大的变化,才能让拟合度小于99%。再来对前面年份的数据做类似的试验,答案会让你感到很滑稽。


由此可见,这些数据在很大的变动范围内,都会显得好像完美符合拟合的曲线!因此,拟合度接近1几乎是默认的,不接近1才是怪事。其实,用3个参数拟合区区10个点,想不准都难啊。把拟合度接近1作为造假的证据,实在是少见多怪,贻笑大方。


如果你对统计学的理论不感兴趣,那么你了解到这个程度就够了。如果你想理解拟合度为什么这么容易接近1,我们来解释一下。


这里的关键,是搞清拟合度的定义。如果听到一个东西的拟合度为99%,外行可能会理解为:这件事有99%的可能是真的。但其实,根本不是这个意思!


所谓拟合,就是寻找一条曲线,使它尽可能地靠近已知的若干个点。什么叫做“尽可能靠近”呢?最容易想到的判据是,每一点的真实值和拟合值之间都有个误差,令这些误差的绝对值之和最小。但这样在数学上不容易处理,因此真正常用的判据是,令这些误差的平方和最小。由此推出的算法,叫做最小二乘法(method of least squares)。


在最小二乘法的框架下,拟合度的定义是


R2= SSR / SST = 1 - SSE / SST,


其中的SSR、SSE和SST是三个数量。它们是什么意思呢?


定义这三个量,需要用到三类关于单个数据点的数值:第一类是真实值,例如上面例子中2009年的0.5和2018年的2135等真实销售额;第二类是拟合值,在上面的例子中就是拟合出来的二项式函数在各个年份的计算值;最后一类是所有真实值的平均值,在上面的例子中等于711.055。如果一组数据有n个点,那么我们就有n个真实值和n个拟合值,而平均值总是只有一个。


有了这些基础以后,SSR、SSE和SST这三个量的定义就是:


SSR、SSE和SST的定义(https://blog.csdn.net/S20144144/article/details/99672706)


SSR叫做回归平方和(Sum of Squares for Regression),它是每一点的拟合值与平均值的差值的平方和;


SSE叫做残差平方和(Sum of Squares for Error),它是每一点的真实值与拟合值的差值的平方和;


SST叫做总离差平方和(Sum of Squares for Total),它是每一点的真实值与平均值的差值的平方和。同时它也刚好等于SSE + SSR,这并不是显而易见的,但可以由最小二乘法的定义证明。有兴趣的观众,可以在统计学的资料中找到证明。


知道这个定义,就容易明白为什么拟合度经常接近1了。


对于一组真实的数据,各个点的真实值往往差别很大。例如在上面的双十一销售额数据中,最小值是0.5,最大值是2135。因此,大多数点真实值跟平均值的差别都不小,在上面的例子中是几百上千的量级。这些差别的平方和就是总离差平方和SST,它是一个很大的值。


另一方面,只要这组数据不是太畸形,那么在每一个点上,真实值跟拟合值的差别都可以做到比较小。在上面的例子中,就是几到几十的量级。这些差别的平方和就是残差平方和SSE,显然它比总离差平方和SST小得多。


回顾一下,拟合度


R2= 1 - SSE / SST,


因此它接近于1,不是理所当然的吗?


以上,我们解答了第一个灵魂问题:你真的相信,多项式函数的拟合度接近1是小概率事件吗?


了解了这个基本道理,所谓造假的指控就已经烟消云散了。如果你还想学到更多,那么还可以再去思考后面两个灵魂问题。我在这里给出最简略的回答,陈经的文章(解密天猫双11成交数据的“神奇”拟合:统计的障眼法 | 陈经)里有详细的数值,欢迎大家去阅读。


第二个灵魂问题:如果马云要造假,你认为他应该用多项式函数还是指数函数?


回答是:指数函数才是合理的,因为可以保证是个增函数。而多项式不是单调函数,这会造成很可笑的后果。你仔细看一下拟合出来的二次多项式


y= 30.095 x2 - 33.99 x + 6.3011,


x= 0对应的是2009年的拟合值,等于常数项6.3011,


x= 1对应的是2010年的拟合值,等于


30.095 - 33.99 + 6.3011 = 2.4061。


也就是说,2010年的销售额会比2009年的低。什么人会白痴到制定这样的造假计划啊!


第三个灵魂问题:如果你用指数函数来外推,会得到什么样的预测?


2009年至2019年的双十一销售额增长率(解密天猫双11成交数据的“神奇”拟合:统计的障眼法 | 陈经


回答是:根据前几年的增长率,一个正常的感觉是2019年的增长率会在25%左右。这样得到的预测值是2668.75,跟真实值2684也十分接近。


我的朋友黄文政博士是一位统计学专家,在哈佛大学等学校给研究生讲过高等统计回归方法。他对此事还有四点评论。


黄文政在哈佛大学办公室

第一,在新闻上看到小概率事件,是常有的事。因为狗咬人不是新闻,人咬狗才是新闻,被报道出来的是已经被筛选过的。但人们看报道时往往忘记了这一点,所以大惊小怪。


第二,对于这种全都大于0但数量级跨度很大的数据,标准的处理方法是先求对数再拟合,也就是我前面说的用指数函数拟合。直接在原始尺度上做拟合,是非常不专业的做法。这样会导致拟合结果过度依赖于数值最大的一些点,而对数值小的点可能相对误差已经很大了,绝对误差却在大图上看不出来。上面的例子中就是这样,x = 0也就是2009年的拟合值等于6.3011,而真实值是0.5,相对误差高达1160.22%!


第三,阿里很可能确实有一定的销售目标,有很多手段去帮助达到这些目标。其实我觉得正常的企业都会有这样的目标和手段,没有就怪了。但这不叫造假啊!


第四,从长远来看,人口决定消费的长期趋势。根据2010年人口普查,中国的出生人口从1990年的2800万在十年内降至1999年的约1500万,这些人是双十一的购物主体。由于中国的生育率远低于更替水平,未来中国的人口会快速下降,这是一个重大的危机。


现在,大家知道为什么内行对此事一眼就能看明白了吧?大家对统计学,也理解得深入多了吧?


在数据分析中,拟合是一个相当有用的工具。但为了向人们提醒它的局限性,伟大的数学家冯·诺依曼(John von Neumann,1903 - 1957)有一句名言:


冯·诺依曼

“用四个参数我可以拟合出一头大象,而用五个参数我可以让它的鼻子摇起来。”


这话最初只是开玩笑,但后来真有人去研究如何用四个参数拟合大象,而且还真让他们给研究出来了(http://blog.sciencenet.cn/blog-3779-803730.html)。2010年6月,尤根·迈尔(Jürgen Mayer)等三位德国分子生物学家在《美国物理学期刊》(American Journal of Physics)发表了一篇文章,标题是《用四个复参数画出一头大象》(Drawing an elephant with four complex parameters)。他们发现,用四个复参数可以大致勾勒出大象的形状,再引入一个复参数就可以让大象的鼻子摆动起来(https://www.zhihu.com/question/64001603/answer/216061603)。


拟合大象


严格地说,这里用到的参数不止四个,因为一个复数相当于两个实数。不过无论如何,这大象是不是充满了灵性?!

 

扩展阅读:

为什么我们说不要轻易和数学家吵架之辛普森悖论 | 科技袁人
从蓝眼睛问题,看群众理解能力的巨大差异 | 袁岚峰
奇妙的数学:蓝眼睛岛和强弱共识 | 袁岚峰
“只写答案不给分”,这真的是为了你好!| 科技袁人


背景简介本文作者为袁岚峰,中国科学技术大学化学博士,中国科学技术大学合肥微尺度物质科学国家研究中心副研究员,科技与战略风云学会会长,青年科学家社会责任联盟理事,中国无神论学会理事,安徽省科学技术协会常务委员,微博@中科大胡不归,知乎@袁岚峰(https://www.zhihu.com/people/yuan-lan-feng-8)。

责任编辑孙远

继续阅读
阅读原文