如何對右偏數據進行變換
現在,我們需要分情況討論一下。在實際生活中,最常見的情形是靠近正無窮的一側有一個長尾巴(如圖1左),習慣上稱為「右偏」(right-skewed)或「正偏態」(positive skewness)。許多人會有點兒困惑,覺得圖上分布的那個峰明明是向左邊負數一側偏的,怎么叫「右偏」「正偏態」呢?要記住,當我們描述偏態的方向時,說的是分布的尾巴,而不是峰。這本身沒有什么大道理可講,就是一種約定俗成而已。

圖1 一個右偏(正偏態)的總體分布
右偏的分布之所以常見,是因為有許多變量的取值有一個明確的下界(通常是 0 )而沒有上界。最典型的例子就是人均收入。這個例子我們在《數據到手了,第一件事先干啥?》里也提到過。首先,收入不可能是負的。其次,對於經濟狀況正常的社會,處於貧困狀態的人相對較少,多數人都在小康水平上下浮動,這就保證了總體分布基本呈現中間高、兩邊低的形態。然而,總會有極少數像比爾蓋茨、巴菲特那樣的巨富,待在分布右側很遠的地方——而且更虐心的是,收入這事兒可是沒有上限的。同樣的討論適用於許多其他情形,在生物醫學中,很多變量的分布都有類似的性質,尤其是那些健康人群正常值比較小(因而峰值比較靠近下限)的生理指標。
相信你還記得我們在上上集《不是正態分布,t 檢驗還能用嗎?》里說過的判斷樣本分布正態性的兩個方法——頻率直方圖和 q-q 圖。快速重溫一下,假設我們有一個來自圖 1 左邊的總體分布的樣本,如果對此樣本畫出頻率直方圖和 q-q 圖(圖 1 中、右),可以看到頻率直方圖大體和總體分布相似,樣本分布右側有個尾巴,而 q-q 圖中各數據點並不完全在一條直線上,這些都說明樣本分布不太正態。(忘了 q-q 圖的意義和讀法?戳此處回顧該集)
好了,像這樣一個分布,我們應該用怎樣的函數來作變換?記得我們說過,函數的最基本條件需要是單調的。為了使數據點的大小次序不會顛倒過來,我們進一步把考慮范圍縮小到單調增函數。為了要把分布右側的尾巴縮短一點,我們需要這樣一個函數,它在 y 比較小的時候增長得比較快,而在 y 比較大的時候增長得慢一些。這樣一來,在原來分布右邊相距較遠的任意兩個點之間的距離就會相對變小,從而分布的偏態就能得到改善了。
回想一下中學數學,有什么常見的單調增長函數是越漲越慢的呢?不難想到,對數函數 、平方根 、甚至三次方根 等函數都具備這樣的性質(圖 2)。滿足這樣性質的函數其實有無數個,這幾個由於形式簡單,因此比較常用。對數變換另外還有一個優良的性質,使其成為了比較受歡迎的選擇,這個性質我們會在本文末尾提到。

圖2 常見的用於右偏分布的變換函數
從圖 2 中也能看到,這些變換函數對 y 較大時的壓縮程度不同,變換后 f(y) 的取值范圍也不同。到底哪一個效果更好(也可能效果都不好),取決於具體的問題和數據。通常的做法是嘗試若干種變換函數,然后對變換后的新樣本重新檢驗正態性(如頻率直方圖、q-q 圖或夏皮羅-威爾克檢驗等方法),選擇正態性最好的樣本用於后續分析。
下面我們就分別用對數函數和平方根函數
對圖1中右偏的樣本來做個變換,看看效果如何(對數變換的結果見圖 3,平方根變換見圖 4)。

圖3 使用對數函數對圖1中的右偏樣本作變換

圖 4 使用平方根函數對圖1中的右偏樣本作變換
如果把圖 3、圖 4 和前面的圖 1 做比較,容易看到,這兩個變換都對總體和樣本的正態性起到了改善作用。不論從總體分布和頻率直方圖的對稱性,還是從 q-q 圖中數據點與直線的偏離程度來說,變換后的分布都變得更正態了。如果我們看得更仔細一點,在這個例子中對數函數的效果稍微更好一些,因為變換后總體和樣本分布幾乎完全是對稱的,而平方根變換后分布還是有一點右偏。
要記住的是,這只是一個個別例子,我們並不能就此認為對數變換和平方根變換總能起到良好的效果。有時候,數據變換非但不能改善正態性,甚至還會引進原本沒有的偏態(圖 5)。因此,當我們對數據作變換時,千萬不能想當然,覺得做了變換就一定能把分布給變正態了。做變換后,重新檢查正態性是必不可少的步驟。

圖5 一個對數變換的不成功例子
第一列:原數據的總體分布、樣本頻率直方圖和 q-q 圖(這個分布來自上一集《只有15 個標本,也能指望 t 檢驗嗎?》中的倒數第二例)。
第二列:將樣本進行對數變換后,新樣本的頻率直方圖和 q-q 圖(總體分布略)。可見樣本從原來的右偏變成了左偏。
另外,你也許注意到,前面討論的幾個變換函數都要求原數據大於 0。如果數據里有負數或 0 怎么辦?我們只需將所有數據加上一個正的常數,使得數據全部為正即可。
如何對左偏數據進行變換
前面我們討論了對右偏數據的變換方法,那么左偏的數據又該如何?在現實生活中,左偏的分布比右偏稍微少見一些。最經典的例子當屬人或動物的壽命(圖 6)。在環境條件良好的情況下,動物在較低年齡就死亡的概率很低,但是當年齡達到該物種本身生物學特性所容許的某個最高水平前后,死亡率就會大幅升高,然后再迅速降低(因為已經沒有什么個體能活那么長了),因而造成分布的左偏。

圖6 人或動物的壽命的分布通常是左偏的
本圖為 2010-12 年英國女性在各年齡每 100,000 人中的死亡人數的期望的分布。
不難想到,左偏和右偏的數據互為鏡像關系,因此一種轉換的辦法是,先把數據取個負號(為了使數據重新變回正數,往往還要再加個常數),然后就按右偏數據的辦法處理。另一種解決方案則是使用增長率越來越快的一類單調增函數,如、
等。與之前相似,沒有一種變換是萬能的,因此我們在數據變換后必須重新檢查樣本的正態性。
至此為止,我們提到了許多可用於數據變換的函數,它們各有所長,我們得根據實際問題的特點按需取用。選擇最合理的變換形式,不是一件容易的事。大約 50 多年前,兩位統計學家兼好基友 Box 和 Cox(不要問我為什么他倆的名字是押韻的)專門為深度懶人癌患者提出了一套變換方法,稱為 Box-Cox 變換,可以根據一定的標准自動找出最佳的變換函數。
數據變換的局限性
在今天這一集里,我們討論了利用數據變換來改善正態性的方法。雖然我們是針對 t 檢驗對於正態性的要求而引出的這個話題,但是這一方法可以用在許多需要總體或樣本分布滿足正態性的場合,比如我們以后將會講到的方差分析、線性回歸等。正如所有科學方法一樣,它並不是全能的。要用好這個工具,我們還需要對其局限性有所了解。
第一,數據變換並不能解決所有非正態性的問題。從上面的一些例子里,我們已經能看到,對於特定的某組數據,一個變換方法並不一定能把數據變為服從正態分布。有些時候,即便我們窮盡所有不同形式的函數,一個分布也不可能被轉化為正態分布——比如說離散型的分布。還有一些其他的分布(比如有不止一個峰的分布),可以通過一些奇形怪狀的變換函數弄成正態的,但這會不可避免地對數據帶來太多的扭曲,進一步的分析也就很成問題了。
第二,對數據進行變換后,重新進行原來計划的統計檢驗,其意義會發生變化。比如說,我們想要比較兩組數據的均值是否有差別,但是發現樣本分布並不正態,於是對數據做了一個平方根變換。當我們對變換后的數據使用 t 檢驗時,我們檢驗的不再是兩組數據均值的差別,而是在檢驗樣本中數據平方根的均值之間的差別。雖然對所有數據開平方根后取均值仍然是對數據大體趨勢的一個概括,但是仍然與變換前數據的算術平均值有着不同的意義,也失去了我們曾經在《算術平均數:簡單背后有乾坤》中討論過的算術平均數的優點。對於其他更復雜的變換,我們到底是在檢驗什么就更加模糊了。
值得一提的是,這里有一個例外就是對數變換!我們來看看為什么。對數變換以后,新的數據的算術平均數是:

上面的推演運用了對數運算的基本性質。在最后一步對數符號里的,被稱為幾何平均數(geometric mean)。和我們熟悉的算術平均數一樣,它也是表示樣本數據集中趨勢的一個統計量。換言之,如果進行對數變換后的數據平均值使用 t 檢驗,實際上是在對樣本的幾何平均數做統計推斷。正是因為對數變換有相對明確的意義,它也成為了數據變換函數里比較流行的一種。