解密天貓雙11成交數據的“神奇”擬合:統計的障眼法 | 陳經_風聞
风云之声-风云之声官方账号-2019-11-13 19:34
導讀
2019年雙11過去剛剛過去,阿里報告了天貓雙十一的全天銷售額:2684億。這個數字引發了一場關於統計學的有趣爭執。
2019年雙11過去以後,阿里報告了天貓雙十一的全天銷售額:2684億。這個數字引發了一場關於統計學的有趣爭執。
一位叫“尹立慶”的微博網友,在2019年4月24日發了一個貼,通過擬合2009-2018年的雙11天貓數據,由於擬合度高達99.94%,他認為淘寶是在按公式假造成交數據。並且他還“預測”,天貓2019年雙11成交額為2675.37億(二次擬合)或者2689億(三次擬合)。最終出來的數據是2684億,與他預測的2689億非常接近。
這個“精準”的提前預測引發了不少人的關注,很多人確實相信淘寶是在湊成交額,不然怎麼可能這麼準?
很多人翻出了這個“神預測”,暗示“阿里數字造假被抓現行”。這引發了一場風波,許多人在傳,阿里雙11銷售數字造假。尹立慶在微博上的原貼已經被刪除,但是網上截圖還是很多。
天貓的公關負責人也發了聲明,駁斥了造假的説法。
12日晚間,天貓再度發文回應稱,“今早到現在,這則精心圖文化設計的‘預測’開始被刻意傳播”、“已就這則謠言啓動司法流程”。估計尹立慶刪微博是覺得不太對了。但是個人感覺天貓沒有從數學上解釋這些疑問。
到底阿里有沒有對雙11天貓成交數據造假?如果沒有造假,為什麼統計擬合如此精準,尹立慶提前半年的預測又如此準確?我們來介紹一下相關的知識。
首先説一下,這個預測涉及的“二次擬合”或者“三次擬合”不需要手算,其實是Excel等數據表格軟件的功能。所以,不需要進行高深的數學推理和計算,會用Excel簡單地製表就行了。
首先是數據源,這個是有公開數據的,沒有爭議:
然後,對這兩列數據制一個散點圖表:
然後是二次和三次多項式擬合曲線。
尹立慶的關鍵預測是下面這張圖:
以上這幾個圖都是引自尹立慶發的文章。我們要解釋一下,預測裏的二次、三次多項式擬合,以及R-squared是什麼意思。不用急着去了解概念,看下面的操作流程自然就明白了。
我自己用Excel可以複製這個二次擬合,截圖如下:
這個就是將年份與成交額兩列數據,做成一個散點圖表。然後鼠標點在一個數據點上,就會出來一個“趨勢線”的選項。再把趨勢線選擇成“多項式”,選2次多項式。再讓圖表上顯示公式、R平方值,左邊的曲線擬合圖就自動出來了。
其實用國產免費軟件WPS裏面的表格,也一樣可以做出這種趨勢線的方程。為支持國產軟件,我們用WPS來做。不難摸索出用WPS如何生成趨勢線和方程。
上圖是WPS生成的2009-2019年11年的成交額數據的擬合曲線,可以看出,WPS和Excel生成的二次擬合方程參數是一樣的。
得出的擬合方程是一個二次的多項式:
y= 30.237xx - 121529x + 1E+08**,**
R****平方 = 0.9996
這個R平方就是“相關係數”,越接近1越好,有一個公式來計算的,後面會解釋。公式裏的1E+08是科學計數法寫的常數項,數值太大了寫不下,是一個數字。看樣子曲線擬合得很好,但是為什麼常數項都大到出不來了?哈哈,因為這個軟件,把2009-2019當做數值,也就是説x的取值是2009到2019。它不知道是年份,也把這個擬合做出來了。
我們弄聰明點,把年份用0-10代表,2009就是第0年,2019就是第10年,同樣把圖表和擬合方程做出來。用0開始的好處,是可以直接得到擬合的初值,其實用1-11也差不多。
這個方程就好多了:
y= 30.237xx - 35.064x + 7.3632**,**
R****平方 = 0.9996
我們把x = 10代進去算,得到的是:
30.237* 10 * 10 - 35.064 * 10 + 7.3632 = 2680.423
這個數值相當接近2019年天貓的實際成交額2684億。畫在圖上這麼點差距根本看不出來,點的中心就在趨勢線上。看上去擬合得非常好,簡直太漂亮了,天貓這11年怎麼可能成交得這麼準呢?
到此我們可以看出來,所謂的“二次多項式擬合”,就是用一個方程:
Y =A * xx + B * x + C
去擬合一系列x值對應的原始y值,誤差越小越好,“擬合度”越接近1越好。這個擬合度,就是用“R平方”來代表的。
我們再把R平方的定義解釋一下,
R****平方 = 1 - SSE/SST
SSE就是和方差,每個點的擬合值與實際值有一個誤差,對它平方,所有點的誤差平方加起來,就是SSE。然後所有點原始y值,和平均值有一個差值,對這個差值平方,所有點的差值平方相加,就得到了SST,是個挺大的數。看不懂沒關係,我們用下面的表格來解釋。
第一列年份0-10就是公式裏的x值,分別對應2009-2019年。第二列就是實際的y值,是每年新聞報出的天貓成交額。這些實際成交值,有一個平均值890.35。擬合值,就是用公式“**y = 30.237xx - 35.064x + 7.3632”**算出來的每一年的值。誤差,就是用“實際成交值”減去擬合的值。
這個表是與上個圖並排的,分開來看得清楚一些。誤差平方就是對前面得到的誤差值進行平方。所有的誤差平方相加,就是誤差平方和SSE,等於3183.18。
每一年的實際成交值,和平均值890.35求出一個差異。然後對每個值平方,再求和。得到了“均值差平方和”SST,數值很大是8647639.7。
然後就可以得到“相關係數”R平方,是 1 - 3183.18/8647639.7 = 0.9996。這個值就正好和WPS生成的R平方值相等。
看這個表格,我們就忽然發現,這個擬合的“神奇感”好象下降了。你看第一年0.5的值,擬合值7.3632卻是它的十多倍。第二年的擬合值2.5362,甚至不到第一年擬合值的一半。如果第二年業績是這個鬼樣,馬雲得把天貓負責人就地撤職。但是畫成圖,因為絕對座標的關係,早期很大的擬合誤差,與以後很大的成交值相比顯得很小,畫出來顯得擬合得很好。
我們發現,越是早期的小數據,誤差相對越大。定義一個誤差率,是誤差值除以原值乘以100%。頭四年的誤差離譜地大,高的有1372%和72.9%,第四年差異仍然高達8.74%。後面隨着原值的逐漸地大,誤差率就逐漸減小,只有0.2%、0.1%了。
也就是説,這個擬合的“秘訣”是:注意把每個點的誤差的絕對值弄得小一些,顧頭不顧腚,顧大不顧小。最後畫出圖來,因為座標要跟比較大的數值的尺度,前面較大的相對誤差就縮起來看不見了。
另一點要注意的,不要迷信那個R平方值,以為多麼接近1啊,真神奇啊。例如上圖,假設2019年天貓成交額不是2684億,而是跑到一個很歪的3000億去了。那麼我們新做一個二次多項式擬合,得出的R平方值仍然有0.9952,還是相當接近1。從圖上看出來,後面兩個點已經有點偏了,R平方值仍然漂亮得很。這是因為這個R平方值,分母SST是個特別大的數,怎麼算最後總是接近於1。
尹立慶的預測巧合在於,他對2019年的預測正好碰上這年天貓的增長是中規中矩的25.7%。二次多項式擬合的預測值2675,預期增長是25.3%,正好相差不大。天貓2019年成交增長25%,這個並不奇怪,不少人隨口説個直覺也可能是這個數。
但並不是每一年都如此,其實天貓的增長率也出過異常。
看上圖天貓歷年的增長率,前面增長率高,後面增長率逐漸下滑,因為規模大了增長率下跌正常。但是2017年增長了39%,高於2016年的32%,這是一個數據異常。
假設我們在2016年,看到8年的成交數據,搞了一個二次擬合,結果會是如何?
我們用8個點,同樣得到了一個相當漂亮的擬合曲線!R平方值也是0.9985,相當接近於1。方程是:
y= 28.571xx - 25.295x + 0.1558
如果用這個二次多項式方程,去算2017年的值,會是:
y= 28.571*8*8- 25.295*8 + 0.1558 = 1626.34
2017年的實際成交額是1682億,差了50多億,就沒有2019年只差幾億那麼神了。
有趣的是,這個公式對2017年的預測增長率是34.74%,也高於上年的32.35%。這是因為,2014、2015、2016三年的增長率分別是63%、59%、32%。這個32%降得有點多,在下一年就補回來一些。比如天貓管理團隊認為,2016年增長率不盡如人意,要多想招,2017年的增長率就搞到了39.35%,發力過度,比擬合預測的還要高了。
讓我們來看8個點和11點得到的兩個二次多項式擬合方程:
2009-2016**:y = 28.571xx -25.295x + 0.1558**
2009-2019**:y = 30.237xx -35.064x + 7.3632**
注意,這兩個方程對應的三個係數,差異已經非常大了。就算馬雲有一個“按公式操縱天貓每年雙11成交額”的邪惡計劃,我們也搞不清楚他最初設計的二次方程係數是如何的。
所以,要麼馬雲沒有操縱天貓雙11成交額的數學方程,要麼馬雲在動態修正預測成交的方程。不太可能在某年就把這些係數定死了。
其實,**馬雲在動態修正預測成交的方程,**這個倒是接近真相了。本來做生意就是這樣的,上一年增長夠高了,下一年的增長任務就輕一點,以免各種配套跟不上;上一年增長覺得低了,下一年就多努力做高,免得業績增長不好看。但是都動態上了,本就無可厚非,是人家在搞數值化管理,誰管得着?
等數值都出來了,再去回頭把二次多項式的係數擬合出來,我們可以發現,很容易就擬合得不錯,而且R平方相關係數可以做得很漂亮。前提條件是,這一系列數據增長率要比較大,前期的數據比較小,後期的數值大,就可以僅用二次多項式做出一個漂亮曲線了。
如果增長率變動有點大,那就要用三次、四次多項式了。但原理是一樣的,就不再分析了。
總之,不要相信擬合的神奇,也不要相信“擬合度”接近1的神奇效果。這個在數學統計裏,實在很平常。對搞過數據分析的人來説,這是最平常的手段,迷信擬合真是少見多怪,只會被內行笑掉大牙。
這還只是二次多項式三個係數的擬合。要是用深度學習那上百萬個係數來擬合,結果可以漂亮得讓一些傳統研發人員懷疑人生,轉而去搞機器學習。
最後,貼個經典擬合搞笑圖:大象。吃瓜羣眾看看,數學公式擬合的威力有多大。這就是馮諾依曼説的,用四個參數我可以擬合出一頭大象,而用五個參數我可以讓它的鼻子晃。