最近和小伙伴一起探索了一下双十一后闹得沸沸扬扬的一篇文章:“淘宝2009-2018年历年双十一销售额数据造假”。原文作者使用初中阶段学过的抛物线,就将每年的销售额增长趋势拟合得非常完美。
(如果大家想学习如何画出上述的图像,可参见前面一篇博客:用 ggplot 重绘天猫双十一销售额图)
同时在知乎上,这个问题也成功上了当时的热搜榜,各路大神云集,也发表了很多很有意思的观点:如何看待有人质疑淘宝双十一数据造假,并在4月份成功预测今年销售额为2680亿?。
看了很多大神的文章后,自己对这个数据也进行了一些探索,尝试看看能否发现一些不一样的有趣的事情。
我们先看看原文中提到的问题,这条直线拟合得过于完美了,在我们通常的认知中,如果某个指标随着年份发生变化,例如:销售额,增长率等,我们用一条非常规律的曲线去回归,是基本上不可能呈现这种没有波动的情况,一般会呈现下图这样的结果。
但从原文的图中我们可以看到,红色的散点近乎完美地点缀在拟合出来的曲线上。在现实生活中出现这种情况非常罕见,且极其神奇!
原文作者至此就断言:拟合太过完美,在现实生活中不可能存在。双十一数据一定是造假了,马云是个大骗子,骗了我们十年。并且文章认为数据造假提到的核心证据是 过高(越高数据和模型的拟合效果越好,,是几乎不会存在的完美拟合),而我们在亲手重现原文的结果之后,也验证了原文的观点。可是原文除了以 极高来判断淘宝数据作假,还有其他证据吗?是否探索了该数据现象背后可能的原因?
乍一看原文的内容和如此精妙的拟合,我也差点相信了。但仔细一想,就逻辑而言,原文这种断言是非常不严谨的。原作者有一个问题,那就是过于武断和过于依靠经验。举个栗子,有人没见过灰天鹅,就说所有的天鹅一定都不是灰色的,但只要有一只灰天鹅出现,就能推翻“天鹅一定不是灰色的”这个结论,这就是证伪。
同样,我们也不能因为某件事情出现的情况非常少,就直接说明这件事是有问题的。例如,每一期**中头奖的幸运儿,我们难道能说他们都是开了挂才中奖的吗?
本着发扬刻苦钻研(xian zhe wu liao)的探索精神,我们再次对双十一销售额数据进行了更多的探索。
首先需要了解回归的自变量与因变量。自变量就是本身发生变化的变量,因变量就是由于自变量发生变化而引起变化的变量。在这里因变量表示的是每年双十一的销售额。而自变量为 2009-2018年 这 10 个年份。单从年份数值上来看,自变量非常大,但实际上,这是一个非常有规律以及特殊的数列。它的排列是有顺序的,并且每一个数值之间的间距是相同的,从根本来看,这是一个有序数列,也就是 ordinal 变量(定序变量),定序型数据具有内在固有大小或高低顺序。在这里,它表示的是一个阶段内第一年、第二年……直至第十年的双十一销售额变化情况。那么,我们是否可以使用 1-10 年的定序数据来表示自变量呢?
答案是肯定的,使用 1-10 年来表示自变量所得到的回归 与使用2009-2018年为自变量的结果完全一致。既然 1-10 能作为自变量,那么是否用其他排列规律相同的定序数据都能作为自变量?于是,我们尝试了使用 2、4、6……20 十个数作为自变量,所得回归的 也与之前一模一样。
其实,如果我们把级别数量相同的定序变量(在这里级别数量为 10 个,代表十年)作为自变量,得到的 都是一样的(有数理基础的童鞋可以从其公式上进行验证)。这恰恰是因为,自变量从一开始所代表的意义就是一个阶段内的发展顺序,而不仅仅是从其本身数值上理解的“年份”(请各位读者留意这个自变量的“顺序”)。
看到这里,有的读者可能会问:你不是要探索淘宝双十一销售额有没有造假吗?怎么跑题开始说起了年份的问题?
别急,只有当我们理解了自变量的真实含义,才能从理论的角度来说明双十一数据到底有没有造假。自变量我们已经能使用一个有序数列来表示了,那么因变量呢?可以看到,原文章中的数据只有销售额与年份,那么通过这两个变量,我们还能得到的一个重要信息便是每一年的销售额增长率了:
得到这两个信息之后,我们便找到了探索更多信息的突破口。
在现实生活中,许多经济学原理都与发展阶段或增长率挂钩。那么,像原文那样完美拟合的情况会不会是一些经济学现象所引起的呢?如果我们能够通过理论验证它符合某些经济学规律,我们就有证据说明这样拟合的非常好的销售额曲线是因为服从这样的规律,才出现了这么巧合的现象,而不是因为数据造假。另一方面,如果我们通过验证发现它不符合经济学规律,那么也能从理论的角度说明原数据存在造假的嫌疑。
那么,增长率是如何变化的呢?我们来看看!
| 年份 | 销售额 | 增长率 |
|---|---|---|
| 2009 | 0.5 | — |
| 2010 | 9.36 | 1772.00 |
| 2011 | 52 | 455.56 |
| 2012 | 191 | 267.31 |
| 2013 | 350 | 83.25 |
| 2014 | 571 | 63.14 |
| 2015 | 912 | 59.72 |
| 2016 | 1207 | 32.35 |
| 2017 | 1682 | 39.35 |
| 2018 | 2135 | 26.93 |
| 2019 | 2684 | 25.71 |
销售额的增长率竟然从第二年开始就逐年下降了!而且从数据来看,增长率下降的速度在前几年非常快,在后几年逐年放缓。我们知道,2009年为淘宝双十一促销的第一年,到现在已经有了十年的发展过程。随着淘宝双十一促销的发展成熟,它的销售额增长率却在逐年下降,这是否符合某种经济学规律呢?
其实经济学中的 Gibrat 定律有阐释过这一点,其基本结论是:
- 企业的生存能力随着规模的扩大而提高;已存活下来的企业成长率随着其规模的扩大而下降;
- 对于任何一个企业,随着其生存年限的增加,其成长率会有所降低,但生存能力却随之提高。
在 2009 年,阿里第一次推出双十一促销活动,当时商家数量与促销力度均有限,但营业额远远超过预期效果,于是从那年起,每年的11月11日均举行大型购物促销活动。阿里作为行业领军企业一年一年发展壮大,双十一企业和消费者参与的深度和广度也逐年增加,也就是说,淘宝的规模逐年增大。根据《统计上大中小型企业划分办法(暂行)》,企业规模大小的指标之一为销售额,而企业的成长率则能在一定程度上由销售额增长率反映。如果数据真实,那么如果淘宝双十一销售额增长率数据符合Gibrat定律,那么随着淘宝的逐年壮大,淘宝双十一销售额增长率势必会出现逐年下降的现象。
但同样是下降,增长率的下降曲线真的符合 Gibrat 定律中的下降曲线吗?(我不要我觉得,我要理论证明的)
在 Gibrat 定律中,公司的成长率随公司规模变化有两种可能的下降曲线,一种是 log normal 分布,它长这样:
另一种下降曲线叫做Power law(幂律),它长这样:
不好意思放错图了,长这样:
为了先从直观上进行对比,我们绘制了销售额增长率在这十年间的下降曲线:
单纯从图像上来看,增长率的变化曲线简直与 Power law “亲如手足”!但,我们是严谨的小编,还要从统计的角度进行严格的验证,看是否与幂律相符,从而验证这样的增长率是否符合经济学规律。
我们先来谈一谈,Power law是什么?它在我们生活中有怎样的角色呢?我们如何从统计学以及理论的角度来验证它?
Power law,又称 Scaling law,早在100年前就已经被发现了。根据许多的经验研究,我们生活中的许多经济现象都符合幂律分布。一般来说,现实生活中的许多经济学原理都是定性的,少有定量的规律。然而Power law就是一种少见的、但却在经济学中真实存在的定量定律。它的建立不仅仅是基于经验的,也是基于理论的。
先举一个简单的例子:帕累托分布。这个名词你也许会感到陌生和疑惑,但我如果说出它的另一个名字,你或许就懂了。它也叫做二八效应——没错,就是那个 80% 的财富掌握在 20%的人手中的定律,它就是Power law在我们生活中的体现之一。
除了被大众最为熟知的二八效应以外,幂律在经济学与社会科学中的身影多到不计其数。比如,公司规模大小的分布、城市人口的分布情况、股市交易情况、词语出现频率的分布等等。
具体来讲,Power law描述了这样的一种关系:个体的规模和其名次(或排序大小)之间存在着幂次方的反比关系。用公式来表达,就是以下这种形式:
其中X代表规模(如:人口、成绩、营业额),Y代表名次(第1名的规模最大)。幂律有几个重要性质,分别是高度的不平衡性、阶层式结构与动态演化过程。
那么,幂律现象通常出现在哪些数据或情况中呢?首先是自组织现象(self-organization)。如果一个现象(例如销售额增长率)是由多个复杂的因素(例如公司小环境,政策大环境等等)共同决定,我们称其为复杂系统的 “自组织”(self-organization)现象。这个现象很有可能在总体层面呈现一个非常简单的形式规则,幂律就是其中一种非常常见的现象。第二点,就是随机增长过程(Random growth process)。引起幂律现象的重要原因之一就是随机增长过程,而随机增长模型又通常在经济学与社会科学中体现,它包含许多不为人所控制的因素,往往出现在庞大的社会经济体中,比如社会财富增长、公司规模成长、城市人口增长等。
现在我们回忆一下前面的销售额增长率分布。可以看到,它与Power law的形态一样,具有高度的不平衡性。除此之外,从第一年起步到现在的第十年呈现的阶层式结构、过去与未来随着年份继续变化的极其复杂的动态演化过程……看到这里,你是不是也开始想要用理论来大胆验证一下,淘宝双十一销售额增长率是否符合幂律了呢?
验证一个分布是否符合幂律分布从数学角度来看有一个方法,那就是如果对自变量x和因变量y取对数之后,它们的关系能用线性关系描述,那么可以认为它符合幂律分布,如下述公式所示。
将销售额增长率与年份取对数之后,绘制他们的散点图,可以看到点状在一条直线附近轻微波动。
为了结果的严谨性,我们列出历年的销售额增长率,并对销售额增长率与年份进行了回归:
得到估计参数:
| 参数、统计量与p值 | 对应值 |
|---|---|
| 值 |
能够看到, 非常高, 且 p 值极低( p 值是统计学中常用的一个工具,通常小于 0.05,我们就认为有一定的理由相信两者关系是符合幂律的,并且p值越小可能性越大)。到这里,我们才终于可以得出——双十一历年销售额数据,是符合幂律分布的!
在声称双十一销售额数据造假的文章中,原作者用回归对2019年的数据预测得非常准确。那么使用幂律分布来预测2019的销售额增长率,会得到什么结果?
上图展示了天猫双十一的年份与销售额增长率的拟合情况。我们用2009-2018年的数据按照前文的公式进行拟合,用于预测2019年的情况。上面右图表示总体情况,左图表示在右图基础上,将2013-2019年数据放大后的情况。我们发现,按照经济学规律,用回归对2019年的数据增长率预测得也非常准确,并且预测2019年的增长率为:26.10,而实际的增长率为:25.71,同样也估计得非常准!
因此,之所以销售额会出现这样一条神奇的二次曲线,极大的可能就是因为Gibrat定律与幂律同时造成的。而作者却仅仅通过简单的拟合,就直接得出“马云是个大骗子”的结论,却完全忽略了对数据进行更多的统计分析和深层探索,会不会有点太不严谨了呢?
我们可以试着想一想,如果双十一销售额数据真的想要造假,那么我们便能利用统计学方法很容易地发现数据不符合经济学规律之处,想要精准造假是非常艰难的。当然,正因为双十一的销售额的不确定性,并且取决于各种复杂的现实因素,我们也不能百分之一百的确信这份数据毫无造假之嫌,只能说从一些经济学规律的角度,我们能够说明这份数据的合理之处。
当然了,这份数据无论如何分析,都只是猜测,所有的结果都是,信则有,不信则无,都还是需要大家自己去思考,得到自己的答案。
最后,本篇博文涉及的绘图,后面都会一个一个写个教程,手把手教大家进行绘制~