摘要統計量可以一致,卻仍然在騙你
想像有兩位分析師各遞給你一句話來描述一份資料集。兩個人都說:「平均大約 7.5、離散程度約 2,而且呈現很強的正向關係。」你很自然會假設這兩份資料長得差不多。這個假設,正是這整篇指南要拆解的陷阱。兩堆數字可以共享每一個檯面上的統計量,卻描述著截然不同的世界——可能是平穩的趨勢、急轉的曲線,或是一個失控的點在撐起全場。
先用白話講。所謂摘要統計量,就是用一個數字來代表一整欄資料——平均數(即mean)、位於正中間的數值(即中位數),或衡量數值有多分散的指標(即標準差)。相關係數又是一個:一個介於 −1 到 +1 之間、用來說明兩個變數一起變動有多緊密的數字。這些數字確實有用。問題在於它們本質上就是一種「壓縮」:把幾十、幾千、甚至幾百萬個數值,硬擠成寥寥幾個。
來看最小、卻最會咬人的例子。兩個社區都回報家庭平均年收入為 60,000 美元。在第一個社區,幾乎每戶都賺得接近 60,000。在第二個社區,一半家庭年收入 20,000、另一半 100,000——而且沒有任何一戶真的住在「平均」附近。平均數相同,現實卻完全相反。光看平均數,就把離散程度藏了起來。你的直覺也許是:好,那連離散程度一起報告就好。但接下來安斯庫姆那個著名的例子會告訴你:就算平均數、標準差、相關係數全部一致,也仍然不夠。
用符號寫出平均數:把全部 n 個數值加起來再除以 n。它是一個代表整欄資料的數字——好用,卻看不見「形狀」。
安斯庫姆四重奏
1973 年,統計學家法蘭西斯・安斯庫姆(Francis Anscombe)發表了四份極小的資料集,如今稱為安斯庫姆四重奏。每一份都只有十一個點,每個點是一對數字 (x, y)。他刻意把它們設計成:精確到小數點後好幾位,幾乎共享一本教科書會算出的所有摘要統計量。然而,一旦把它們畫出來,四張圖簡直不能再不一樣。
以下是四份共享的東西。x 的平均是 9.0;y 的平均是 7.5。x 與 y 的離散程度都吻合。每一份裡 x 與 y 的相關係數都約為 0.816——「強且為正」。對每一份各配一條直線(即最佳配適線,本系列後面的指南會解釋)你都得到同一條線:y ≈ 3.0 + 0.5·x,解釋了大約 67% 的變異。光看數字,這四份資料集就像同卵雙胞胎。
四份資料集都產生的同一條迴歸線與同一個相關係數——上方已先用文字介紹,這裡用符號呈現,讓你看見它們有多麼完全一致。
四張排成方格的散布圖,每張都畫著同一條直線。左上:點鬆散地散落在線的周圍,是正常的趨勢。右上:點描出一道平滑的拱形,明顯是曲線而非直線。左下:點幾乎完美地落在一條線上,只有一個遠高於其他點的離群值把配適線拉斜。右下:所有點共享同一個 x 值堆成一直排,只有右側單獨一個遙遠的點獨力造出了斜率。
現在看看圖像揭露了什麼。資料集 I 是誠實的情形:一團鬆散、大致呈線性的點雲,這條線確實描述了趨勢。資料集 II 是一道平滑的曲線——關係是真的,但它是彎的,所以直線根本就是錯的模型。資料集 III 幾乎完美線性,只有一個離群值遠遠高踞其他點之上;這單一個點把線往上拽,並削弱了相關係數。資料集 IV 最令人不安:每個點都共享同一個 x 值,只有一個孤零零的點遠在右側——而光是那一個點就決定了整條斜率。把它拿掉,就完全沒有任何關係了。
你的眼睛能抓到、數字卻錯過的東西
為什麼人眼在這裡這麼厲害?因為一張散布圖把每一個資料點都留在紙面上,而摘要幾乎把它們全丟了。你的視覺系統是經過數百萬年磨練的圖樣偵測器:它能在零點幾秒內看出曲線、群集、空隙與孤立的點,遠早於你能算出任何東西之前。圖讓你問出那些你原本不知道自己有的問題。
以下具體列出:圖會立刻浮現、摘要卻會悄悄藏起的那些東西。
- 非線性:關係是彎的(像安斯庫姆 II)。直線模型會自信地給出錯誤答案。
- 離群值與具影響力的點:一兩個極端值拉動了平均、或拉斜了直線(安斯庫姆 III 與 IV)。
- 群集與子群:兩三團彼此分開的點雲,整體平均對誰都不適用。
- 偏態與空隙:某一側拖著長尾,或在你預期有值的地方出現空帶——都是平均數不是正確摘要的訊號。
- 離散程度改變:點隨著 x 變大而散開(雜訊並非固定),這會悄悄破壞許多模型的假設。
- 單純的錯誤:不可能的數值、999 歲、價格為 0、一整片重複——這些臭蟲,任何平均數都不會替你舉旗示警。
這些之中最危險的是具影響力的點。在安斯庫姆 IV 裡,刪掉一個觀測值就抹去了整個發現。在真實工作裡這天天上演:一個打錯的值、一張個人資料表裡混進一個企業級超大客戶、一天壞掉的紀錄。用這種資料訓練出的模型,會把謊言一併繼承下來。下面的互動元件讓你親身感受:拖動一個點,看著最佳配適線往它擺過去。一個頑固的離群值,就能改寫所謂的「關係」。
一張互動式散布圖,一條最佳配適線穿過點雲。當使用者把其中一個點往上、往側邊拖動時,這條線會旋轉並平移去跟隨它,呈現出單一個極端觀測值如何改變看似的斜率與相關性。
上述這些圖樣——曲線、群集、具影響力的點、臭蟲——沒有一個會出現在平均數、標準差或相關係數裡。它們只會出現在圖像中。這就是本篇指南的全部論點,濃縮成一句話:數字告訴你一個值;圖像告訴你該不該相信這個值。
把畫圖當成分析的第一步
正因如此,有經驗的分析師把畫圖當成的不是漂亮的最後一步,而是他們做的第一件事——在任何平均、任何檢定、任何模型之前。這個習慣有個名字:探索性資料分析(EDA),由統計學家約翰・圖基(John Tukey)大力倡導,他主張分析的首要工作就是「先看」。你用快速、醜、用完即丟的圖去探索資料,這些圖唯一的目的,就是讓你看清自己面對的是什麼。
操作的順序很重要。錯誤的順序是:載入資料、算平均、跑模型、報告結果,然後也許為簡報做一張精美的圖。正確的順序把眼睛擺在最前面:載入、先把原始資料畫出來,再去摘要與建模那些圖告訴你「合理」的部分。如果散布圖是一條曲線,你現在就知道別配直線。如果有一個刺眼的離群值,你會在它毒害下游一切之前先去調查它。
import pandas as pd
df = pd.read_csv("sales.csv")
df.describe() # the summary numbers -- necessary, not sufficient
df.hist(bins=30) # ALWAYS look at each column's shape first
df.plot.scatter(x="ad_spend", y="revenue") # and look at the relationship誠實面對這個習慣所預防的失敗模式。配適在「沒畫過的資料」上的模型,可以自信、精確、漂亮地錯下去。它照樣會報出斜率、相關係數、精確到小數點後三位的 R²——安斯庫姆已經證明,在一份模型完全讀錯的資料上,這些全都可以看起來完美無瑕。數字永遠不會警告你,只有圖會。略過畫圖不是一個小小的捷徑,而是選擇蒙著眼睛飛行。
分配:在你摘要之前,永遠先看一眼
安斯庫姆談的是兩個變數之間的關係。但同樣的警告也適用於單獨一個變數。在你報告一欄資料的平均數之前,先看它的分配(distribution)——也就是哪些數值出現、各出現多少次的完整圖像。這張圖的形狀,決定了那個平均數到底有沒有意義。
最常用的工具是直方圖:把一個數值變數的範圍切成等寬的「桶」,再為落在每個桶裡的數值個數畫一根長條。直方圖讓你一眼看出形狀——是單一個對稱的隆起、一條往右拉的長尾,還是兩個分開的峰?它的近親是盒鬚圖,它畫出一個從第 25 百分位到第 75 百分位的盒子(資料中間的一半)、在中位數處畫一條線、鬍鬚延伸到典型範圍,並把太遠的點標記為離群值的候選。盒鬚圖很精簡,非常適合把許多組並排比較。
四張並排的直方圖。第一張:以平均數為中心的對稱鐘形。第二張:右偏的形狀,左側有一個高聳的群集、右側拖著一條細長的尾巴。第三張:雙峰形狀,有兩個分開的峰、中間有個凹谷。第四張:一個主群集,加上遠在右側、幾根孤立的長條,標記著離群值。
形狀會改變你究竟該用哪一種摘要。薪資、反應時間、房價通常是右偏的:多數值都不大,但少數極大,於是平均數被往上拉,描述的幾乎是不存在的人——中位數才是更公平的摘要。雙峰分配(有兩個峰)更糟:平均數會落在兩峰之間的空谷裡,描述著一個不存在的人(想像把幼兒園一班與一支籃球隊的身高平均起來)。而帶離群值的分配,需要你逐一去問:每個極端值是真實且重要的事件,還是資料輸入的錯誤——這個問題,光靠摘要永遠提不出來。
養成「先畫圖」的習慣
知道「應該畫圖」,和「在截稿壓力下真的去畫」是兩回事。解方是把畫圖變成一種反射動作——一套你在每一份新資料集上、在容許自己下任何結論之前都會跑一遍的簡短例行流程。它不必漂亮。這些是給「一位觀眾——你自己」看的診斷圖。
- 把每一個數值欄位都畫成直方圖。你要檢查的是形狀、範圍,以及明顯不可能的數值。
- 把每一組你在意的配對都畫成散布圖。在相信任何相關係數之前,你要檢查曲線、群集與具影響力的點。
- 依一個重要的分組(地區、裝置、世代)把圖拆開,使用小倍數圖——同一張圖排成方格、每組一格——這樣子群的型態就藏不進整體平均裡。
- 在清理「之後」再畫一次圖,而不只是清理之前,以確認你的修正做到了你想做的、且沒有引進新的問題。
- 到了現在,才去計算摘要、跑檢定,或配模型——而且只針對圖像顯示「沒問題」的那部分資料。
順帶談談小倍數圖,因為它是這個習慣的秘密武器。當你懷疑不同的組行為不同時,別把所有東西疊在一張擁擠的圖上。為每一組各畫一次同樣的簡單圖,再把這些小格排成方格。那些被整體數字平均成一團糊的型態——一個地區在跌、其他三個在漲,或某個裝置的轉換漏斗壞了——一旦並排擺著,就會在瞬間躍出。光這一招,就是最常見的真實世界版安斯庫姆(一個看似健康的彙總值,藏著一個生病的子群)的解藥。
好的樣子長什麼樣
把一切串起來。摘要統計量是一種壓縮,壓縮會遺失資訊;許多不同的資料集可以穿著同一組數字。安斯庫姆四重奏用四份共享平均數、離散程度、相關係數與最佳配適線、卻長得毫不相像的資料集證明了這一點。你的眼睛抓得到那些數字錯過的東西——曲線、群集、離群值、具影響力的點,以及徹頭徹尾的臭蟲。所以有紀律的做法是先畫圖:用眼睛探索原始資料及其分配,再只去摘要與建模那些圖像顯示「沒問題」的部分。
具體而言,在這第一層意義上,好的資料視覺化實務長這樣:一份筆記本的最上方是一整面快速畫出的直方圖與散布圖;一個依分組用小倍數圖把圖拆開的習慣;清理之後再看一眼;以及在你看過某個值「從什麼形狀來的」之前,拒絕報告任何平均、相關或模型。報酬不只是更少的錯誤——更是那些只有「去看」才會得到的發現:意料之外的群集、季節性的下滑、行為反過來的某個區隔。
如果這篇指南你只記住一句話,就記這句:絕不要相信一個你沒看過其圖像的數字。當然要算摘要——但先畫圖,每一次都先畫。這是避免「自信、漂亮地錯下去」最便宜、也最可靠的方法。