如果R平方是砒霜,本文教你三種解藥! | 協和八
張之昊
說人話的統計學
讀過上一集《43.評價線性模型,R平方是個好裁判嗎?》的童鞋們,想必已經認識了人們談到線性回歸模型時常常掛在嘴邊的R平方。
簡單地總結一下,R平方是個0到1之間的數,它衡量了一個線性回歸模型與擬合這個模型所用的資料之間的吻合程度——如果R平方為1,則表明這個模型根據引數取值給出的預測值與資料集中相應的因變數實際值完全相符。
換句話說,這個模型能夠完美地用它包含的引數來解釋因變數的差異性。
反過來,如果R平方為0,則說明這個模型中的引數對預測因變數的值完全沒有説明。而更常見的,是R平方在0和1之間,這時我們則處在前面的兩種極端情況之間,R平方越大,模型對因變數給出的預測值總體上說就和實際值越接近。
這樣說來,R平方似乎是個很好的衡量線性回歸模型好壞的標準。
但是,上一集的末尾,我們還提到了R平方的一個性質:往現有的模型中加入新的變數,R平方只會增加,不可能減少(這是一個不那麼容易理解的結論,如果你感到有些困惑,不妨先重溫一下上集文章)。
這樣問題就來了:如果加入更多的變數R平方就越高,而R平方越高線性模型就越好,那麼豈不是說,我們往一個模型裡隨便扔進去一些和因變數y風馬牛不相及的引數,都會讓線性模型變得更好?
為了讓我們的討論更具體一些,我們不妨回到熟悉的例子——藍精靈身高的相關因素裡去。
在前面的文章《39.引數不止一個,線性回歸該怎麼做?》裡,我們已經知道,藍精靈寶寶們的身高與父母平均身高、寶寶性別都有顯著的相關關係。
在這裡,我們仍然按照原來的思路,分別考慮兩個模型:(1)引數只包含父母平均身高;(2)引數包含父母平均身高和寶寶性別。使用統計學軟體可以很方便地得到兩個模型的回歸係數:
和以前一樣,在模型(2)中,藍精靈的性別分別用1和0表示男、女孩,在模型中為了敘述清晰,我們把性別這個變數稱為「(是否)男孩」。在之前討論這個例子時,我們關注的是單個引數的效應大小和是否顯著,因此我們還會詳細討論兩個模型中各個引數的回歸係數的p值、置信區間等等。今天我們的重點不是這些,而是如何衡量和比較模型整體的優劣,所以這些資訊我們都按下不表,只需要知道父母平均身高和性別這兩個變數在模型(1)(2)中都有顯著性就夠了。那麼,這兩個模型的R平方各自是多少?
大家不妨先猜一猜,模型(1)(2)的R平方誰大誰小。
首先,既然父母平均身高和孩子性別對於身高來說都是顯著的因素,那麼考慮了孩子性別的模型(2)應當比不包括孩子性別的模型(1)能對藍精靈身高作出更準確的預測,也就是說,模型(2)的R平方會更大。
從另一個角度來看,由於模型(2)可以認為是模型(1)加入孩子性別這個變數得到的,因此根據前面的結論,線性回歸模型中加入新的變數,R平方只會增加,不會降低,我們同樣有理由認為,模型(2)比模型(1)的R平方更大。
事實也的確如此,模型(1)的R平方為0.5252,而模型(2)的R平方為0.5911,印證了我們的推斷——這一切都很順理成章,從常理出發,模型(2)也的確更符合常識、更完備,比模型(1)更好也毫不奇怪。
現在讓我們來進入異想天開模式:假設我們在收集資料時,順便把每家藍精靈的鄰居大叔的身高也記錄了下來——自然,每家每戶的鄰居都是不一樣的藍精靈大叔,不過我們姑且把這個變數稱為「老王的身高」吧。於是我們一時心血來潮,想把老王身高也放到線性回歸模型裡,看看會怎麼樣?當然了,在一般情況下,隔壁老王的身高不應該和每家藍精靈寶寶的身高有啥關係,不過我們儘管先試試。這時,我們能得到下面的新模型(3):
的確正如我們猜想的那樣,隔壁老王身高的回歸係數很小,也沒有達到顯著的程度(p = 0.58),而父母平均身高和孩子性別依舊有顯著的效應。根據我們已經學過的知識,我們可以說,在父母平均身高和孩子性別保持一定的情況下,隔壁老王身高與孩子身高的關係可以忽略。換句話說,如果已經知道了父母平均身高、孩子性別這兩個變數,再知道隔壁老王身高並不會對我們預測藍精靈寶寶的身高有什麼實質幫助。
既然如此,模型(3)不應該比模型(2)要更好吧?可是,如果我們考察模型(3)的R平方,就會發現,儘管差別比較微弱,它比模型(2)的R平方(0.5911)要來得更大(0.5939) 。這是否意味著模型(3)比模型(2)更好呢?
「好」模型的自我修養
說到這裡,我們就得問自己一句:一個模型「好」與「不好」的標準究竟是什麼?要找出一個合理的標準,我們還得再退一步,想想我們的出發點是什麼,這樣才好定出能説明我們實現目標的標準。在科研實踐中,我們使用統計學工具進行資料分析,目的無非是兩個:一是推斷(inference),二是預測(prediction。
所謂推斷,指的就是從資料中找出某些穩定的、在一定程度上反映事物本質規律的關係。這些關係,可以是某種差別,比如大家已經熟悉的t檢驗或者ANOVA,其目標就是不同分組間均值的差別;也可以是某種相關關係,比如線性回歸模型所描繪的每當引數增長一個單位時因變數的變化,還有更複雜的、我們暫時還沒涉及到的其他形式的關係。
而預測呢,則是指根據已經建立的某些數量之間的模型,可以在知道一些數量的情形下,推算出另外一些數量。這一點在線性回歸中體現最為明顯。比如說, 如果我們知道一個藍精靈寶寶的性別和父母平均身高,根據前面的模型,就可以對它的身高作出預測。
確定了我們需要統計模型為我們做到什麼,我們再來思考一下,怎樣才算是把推斷和預測這兩件事情給做好了。
讓我們先把目光看得遠一些。在中學的時候,我們都學習過牛頓力學的幾大定律。這些定律在本質上來說,其實就是關於力和運動的一套數學模型。你有沒有想過,牛頓定律為什麼有著如此崇高的地位,被認為是經典物理學的基石?試想一下,在牛頓的時代,連汽車、火車都沒有,然而在幾百年後的今天,我們把太空梭送上太空,靠的還是牛頓定律的數學模型,這是一件多麼神奇的事情?
現在,再讓我們回到身邊的世界。如果我們從一群病人上收集資料,進行統計學分析後發表了論文,之後會發生什麼?不妨想像一下,假如有讀者看到我們的論文之後,在他們接觸到的病人身上,也觀察到了同樣的現象和規律,這樣一來,我們的研究發現就會漸漸得到認可。反過來,如果我們論文的結論在其他具有相同病症的人群中並不適用,我們的論文恐怕就要很快被掃進故紙堆了。
你是否從上面的兩個事例中得到一點啟發?一個統計學模型,它最大的價值就在於,它所提供的推斷和預測是具有普遍性的。如果牛頓定律只能用來解釋牛頓當年的實驗室裡個別物體的運動,它絕不會有如今的地位;如果我們在科研論文裡廣而告之的發現只在自己的樣本中成立,這樣的論文也沒有任何科學價值。因此,一個「好」的模型,應該要有對(模型沒見過的)新樣本、新資料的解釋能力!
既然如此,我們又該如何評價一個統計模型對新樣本、新資料的解釋能力呢?對於線性回歸模型來說,它們的老本行就是給定引數(們)的取值,預測因變數的大小的。所以,最直截了當的辦法,就是在根據已有樣本確定線性回歸模型的係數以後,再收集一些新的資料點,然後把新資料點的引數放到模型裡,算出模型對因變數的預測值,再與實際測量的因變數值進行比較就好了。模型越好,對於新資料的因變數的預測值和實際測量值應該越接近。
老模型,新樣本
如果用符號和式子來表達的話,為簡單起見,假設我們考慮的是一個單變數的線性回歸模型
我們首先收集一個樣本,這個樣本包含n個資料點(即樣本量為n):
根據這個樣本,我們就用極大似然估計的方法找出兩個回歸係數的估計值,記為,,因而,得到的模型就是:
現在我們再收集一個樣本量為m的新樣本,包含以下的資料點:
把上面這m個點中的引數x都代入到模型(4)裡,我們就可以得到該模型給出的各個數據點因變數的預測值:
因此,要檢查模型(4)對於這個新樣本的預測能力如何,我們只需比較因變數的實際測量值和模型預測值和和。
如果只需要比較單個資料點上的預測值和測量值,那樣很好辦,我們取個差值,再來個絕對值或者平方就行了。如果要把許多個資料點都綜合起來考慮怎麼辦?如果你還記得上一集我們費了半天勁對R平方的推導,應該會想到,這其實和R平方的目的非常相像!R平方其實就是我們為了比較模型預測值和實際測量值差異而構造出來的一把「尺子」。唯一的區別,就在於計算R平方時,我們使用的是原來的、用於擬合回歸模型的那些資料點(即上面例子中的(X1 , Y1)到(Xn, Yn)),而在這裡,我們要考慮的是一組新的、並沒有用來擬合回歸模型的資料點(即上面的到)。
既然現在我們要考慮的是最開始的樣本以外的新資料點,那麼我們就把用原來的模型在新的資料點上算出來的R平方稱為樣本外R平方(out-of-sample R square)。就像經典的R平方一樣,算出來越接近1,則說明預測值和實際測量值越相似,模型對新資料的預測能力也就越好。
說了這麼多,我們終於可以對文章開頭部分關於藍精靈寶寶身高的三個模型來個終極對決啦!假設我們收集了新的一批藍精靈寶寶身高、性別、父母平均身高和隔壁老王身高的資料,但是仍然使用在之前老樣本上得到的回歸模型來計算預測值,我們可以得到這三個模型的樣本外R平方:
這時候,三個模型孰優孰劣,就和之前的結論不太一樣了:包含父母平均身高和性別的模型(2)的樣本外R平方最高,也就是說,它對於新樣本的預測最準確。而有些無厘頭的模型(3)、不夠全面的模型(1)都成了它的手下敗將。
過度擬合
你一定會問,為什麼R平方和樣本外R平方會給出不一樣的結論呢?我們不妨把這三個模型想像成三個正要迎接考試的學生。拋開偶然因素不談,誰的成績會最好呢?當然是真本事最強的那一個了——我們前面已經討論過,一個模型的真本事,就在於它能夠解釋新的樣本和資料,因此,樣本外R平方能夠客觀地反映模型的優劣。
那麼,模型對樣本的解釋能力是從哪兒來的呢?毫無疑問,這是「學」來的。從哪兒學的?從一開始擬合模型的資料中。這個老的樣本就好比是課本上的例題,而普通的R平方,就像是直接拿課本上的例題來當考試題。為什麼這麼說呢?在擬合模型時,各個模型本來就是要使自己的預測值和真實值儘量吻合(我們說過,極大似然估計的一個效果,是使得誤差平方和最小)。在得到模型以後,再來算一次普通R平方,其實就相當於同樣的題目讓人做兩遍嘛!
如果是同樣的題目做兩遍,為什麼三個模型表現還是有差異(模型(1)的R平方最小,模型(3)的R平方最大)呢?這就體現出三位學生學習能力和方法的差異來了。我們的模型(1)呢,學例題的時候學得有點兒不夠,把性別這個重要因素漏掉了,所以即便是再做一遍題目,還是不如學得更好的模型(2)。模型(1)同學的這個毛病,統計學上稱為「擬合不足」(under-fitting)。
而模型(3)呢,有點兒死讀書,它有時愛用一招——背題。所以呢,碰上以前見過的題目,它總能做得更好,但是一旦遇到了沒做過的新題型新背景,即使考的還是原來的知識點,都容易丟分。它的這個毛病呢,統計學上也有個名字,叫做「過度擬合」(overfitting)。
我們接著來刨根問底:為什麼會發生過度擬合?簡單來講,我們收集的任何資料,都是兩個成分的疊加:一、現實世界中某些有普遍性的規律的效果,稱為「信號」(signal);二、收集資料過程中某些沒有被測量的隨機因素的影響,稱為「噪音」(noise)。在擬合模型時,如果模型擬合的是信號(就好比課本例題中體現的某個知識點),這個模型就會有更好的推斷和預測能力,但如果擬合的是噪音(就像某道例題中的特殊情景或者條件),那就沒什麼大用處了。
而麻煩的是,我們無法確切地知道,資料的差異性中哪些是信號,哪些是噪音(要是能知道還要統計學幹嗎?)。但是,如果我們往模型中加入越來越多的引數,即便這些引數對因變數本身沒有效應,但由於隨機因素,總會與因變數有些微小的相關性。這時,這些噪音就會被當成信號,擬合到模型中去,甚至獲得有顯著性的效應。在本文的例子裡,根據常識我們就能知道性別和父母平均身高應該是有意義的因素,而隔壁老王顯然就是鬧著玩兒的。但在真實的科研課題裡,變數間的關係錯綜複雜,就不可能這樣簡單地做主觀判斷的。
R平方不給力,有更好的標準嗎?
讀到這裡,相信大家都已經明白,雖然R平方能在一定程度上指示模型的好壞(要是有個學生連同樣的題目做第二遍都做不好,那你說這學生靠不靠譜呢?),但是絕不是一個完善的指標。模型優劣的金標準,應該是模型在面對新的樣本時預測的準確性。因此,最理想的評判方式,便是像我們前面一樣,在新的樣本中比較不同模型的預測能力,稱為「模型驗證」(model validation)。事實上,近年來科學界廣受重視的資料的「可重複性」(replicability,即在新的樣本中得到與已有文獻一致的現象和結論),也是一種廣義上的驗證。
可是,說起來簡單,要真這麼做,卻不是那麼容易。在絕大多數情況下,收集資料是件費時費力的事情,不是所有人都能夠重新收集一批新的資料,來驗證已有的模型。一種流行的辦法是,把樣本先留下一部分(如20%),用剩下的80%的資料擬合不同的模型,再用事先留下的20%來做驗證和模型比較。
但這樣做還有一個現實問題:我們很早以前就講過,同樣的一個研究,樣本量越大,統計功效也就越大,得到可靠結論的可能性就越高。如果我收集了100個樣本,卻只能把80個用來建立模型,豈不是浪費了相當一部分統計功效?有沒有可能既把手上的樣本用完,又能用樣本外的驗證方法,選出真正最好的模型?
值得慶倖的是,勤勞勇敢的統計學家們完成了這個仿佛是無中生有的任務,發明了幾個衡量統計模型在「樣本外」的預測能力的標準。它們的名稱和用法分別是:
1. 修正R平方(adjusted R square):數值越大,模型越好;
2. 赤池資訊標準(Akaike Information Criterion,簡稱AIC, 因日本統計學家赤池弘次而得名):數值越小,模型越好;
3. 貝葉斯資訊標準(Bayesian Information Criterion,簡稱BIC):數值越小,模型越好。
這幾個標準的具體原理比較高深,我們就不具體介紹了。簡單來說,它們都包含了類似于普通R平方那樣衡量模型和資料契合程度的部分,然後再根據模型包含的引數數量進行修正(使得引數多的模型更吃虧),從而盡可能消除過度擬合的負面影響。在很多情況下,這三條標準都會給出一致的結論,而且也會與真正的樣本外驗證方法相吻合。為了驗證這一點,下面我們列出前面討論的三個模型的修正R平方、AIC和BIC值,大家不難發現,所有三條標準都顯示,模型(2)是三者中最好的模型,這與樣本外R平方的結論也是一樣的。
模型 |
包含的引數 |
樣本外R平方 |
修正R平方 |
AIC |
BIC |
(1) |
父母平均身高 |
0.4072 |
0.5153 |
242.5 |
248.3 |
(2) |
父母平均身高、性別 |
0.4760 |
0.5737 |
237.0 |
244.7 |
(3) |
父母平均身高、性別、隔壁老王身高 |
0.4545 |
0.5674 |
238.7 |
248.3 |
系列文章
第 1 章 高屋建築看統計
1.你真的懂p值嗎?
2.做統計,多少資料才算夠?(上)
3.做統計,多少資料才算夠?(下)
4.提升統計功效,讓評審心服口服!
5.你的科研成果都是真的嗎?
6.見識資料分析的「獨孤九劍」
7.貝葉斯vs頻率派:武功到底哪家強?
第 2 章 算術平均數與正態分佈
8.數據到手了,第一件事先幹啥?
9.算術平均數:簡單背後有乾坤
10.正態分佈到底是怎麼來的?
第 3 章 t 檢驗:兩組平均數的比較
11.想玩轉t檢驗?你得從這一篇看起
12.就是要實用!t 檢驗的七十二變
13.不是正態分佈,t 檢驗還能用嗎?
14.只有15個標本,也能指望 t 檢驗嗎?
15.樣本分佈不正態?數據變換來救場!
16.數據變換的萬能鑰匙:Box-Cox變換
17. t 檢驗用不了?別慌,還有神奇的非參數檢驗
18.只講 p 值,不講效應大小,都是耍流氓!
19.找出 t 檢驗的效應大小,對耍流氓 say no!
20.用置信區間,就是這麼(不)自信!
21.如何確定 t 檢驗的置信區間
22.優雅秀出你的 t 檢驗,提升Paper!
23.要做 t 檢驗,這兩口毒奶可喝不得!
第 4 章 方差分析(ANOVA):多組平均數的比較
24.要比較三組資料,t 檢驗還能用嗎?
25.ANOVA在手,多組比較不犯愁
26.ANOVA的基本招式你掌握了嗎?
27.ANOVA做出了顯著性?事兒還沒完呢!
28.聽說,成對t檢驗還有ANOVA進階版?
29.重複測量ANOVA:你要知道的事兒都在這裡啦
30.沒聽說過多因素 ANOVA ?那你就可就 OUT 了!
31.多因素ANOVA=好幾個單因素ANOVA?可沒這麼簡單!
32.兩個因素相互影響,ANOVA結果該如何判讀?
33.ANOVA還能搞三四五因素?等等,我頭有點兒暈
34.要做ANOVA,樣本量多大才夠用
第 5 章 線性回歸:統計建模初步
35.統計學模型你會玩嗎?
36.如果只能學習一種統計方法,我選擇線性回歸
37.回歸線三千,我只取這一條
38.三千回歸線裡選中了你,你靠譜嗎?
39.引數不止一個,線性回歸該怎麼做?
40.找出「交互效應」,讓線性模型更萬能
41.沒考慮到混雜因素,後果會這麼嚴重?
42.回歸係數不顯著?也許是打開方式不對!
43.評價線性模型,R平方是個好裁判嗎?
44.如果R平方是砒霜,本文教你三種解藥!
留言列表