引數不止一個,線性回歸該怎麼做?| 協和八
說人話的統計學
在本系列前面幾集裡,我們為大家講解了最簡單的、只有一個引數的線性回歸模型,下面我們先來簡單複習一下。
如果我們有一個因變數 y,考慮它與某個引數(或者叫預測變數)x 的關係,如果我們選用了線性回歸模型,就意味著我們認為
在《36.如果只能學習一種統計方法,我選擇線性回歸》裡,我們講過,β0 叫截距,意義就是在引數 x 取 0 時,因變數 y 平均來說會取什麼值;而 β1 是 x 這個引數的回歸係數(regression coefficient),描述了當 x 增加一個單位時,y 的平均值會變化多少。我們還強調了,線性回歸模型本身並不涉及因果關係,我們所說的 y 隨 x 的變化只描述了一種相關關係。
既然我們是要依靠這個模型來研究 x 和 y 之間的關係,回歸係數自然是我們關注的重點。有了具體資料(也就是若干資料點( xi, yi ), i=1,2,..., n,n 為樣本量),定下了這個模型,怎樣找到(以及模型中的其它參數)?
《37.回歸線三千,我只取這一條》為大家介紹了極大似然估計的方法,可以為我們定下最符合資料的參數估計值(即「最小二乘解」),也就是它們各自符號上加頂帽子,記為
以及。
有了它們,我們就能說,根據這個模型,每當 x 增加一個單位,y 的平均值將會增加(注意可以是負的)。
但是,光這麼說,總歸有些底氣不足——我們對有多大的信心?
比方說,我們發現是正的,也就是說 y 會隨著 x 的增加而增加,但是這個正相關關係是否證據確鑿?在頻率主義統計學裡,我們就得用到像 p 值、置信空間這樣的統計推斷工具。《37.回歸線三千,我只取這一條》正是為大家介紹了,怎樣對回歸係數做假設檢驗。
當然啦,咱們不能光說不練假把式對不對?就讓我們回到此前的孩子身高與父母平均身高間關係的例子,來看一看上面這些招式都是怎麼打的。
▣▣▣▣
在這個例子裡,孩子身高是因變數 y,而他們父母兩人身高的平均值是引數 x。假設我們有了一組資料,在統計學軟體裡設定好本文開頭的模型,得到了以下結果:
估計值 |
t值 |
p值 |
95%置信區間 |
|
(截距) |
57.204 |
3.542 |
0.000896 |
[24.73, 89.68] |
父母平均身高 |
0.415 |
4.160 |
0.000131 |
[0.214, 0.615] |
我們該如何解讀這個結果?
首先我們來看截距和回歸係數。根據實際資料,我們得到的模型(下圖的藍色直線)是:
子女身高 = 57.204 + 0.415 × 父母平均身高 + ε
我們說過,截距的含義是引數 x 取 0 時,因變數 y 的平均值——只需把「父母平均身高=0」代入上式,就會得到
子女身高 = 57.204 + ε
由於誤差 ε 服從均值為 0 的正態分佈,所以此時子女身高的平均值就是 57.204。然而,身高這個量怎麼可能是 0 呢?因此,在這個例子裡,對截距的解讀是沒有太大意義的。
接下來,讓我們把注意力放到父母平均身高的回歸係數 0.415 上。它告訴我們,如果父母兩人的平均身高增長 1 釐米,平均來講,子女的身高就會增長 0.415 釐米。
這個結果驗證了我們的常識:父母身高越高,子女的身高也就越高。
那麼,從統計結果來看,這個正相關關係有多靠譜呢?或者說,統計學意義有多大?
這時,我們就要對「父母身高與子女身高之間沒有線性相關關係」這個原假設(即 β1=0)做個檢驗。
從前面表格裡我們看到,對這個原假設,p 值遠小於 0.05。與此同時,的 95% 置信區間[0.214,0.615]也不包括 0 這個點。因此,我們可以十分有把握地說,父母平均身高和子女身高之間存在線性的正相關關係。而且,我們還可以從回歸係數的大小以及置信區間的寬度中,認識這個關係的強弱程度及其不確定性。
到這裡,對於這個可以說是最簡單的模型,我們才算是有了相對完整的思考鏈條。
但是,我們對線性回歸模型的學習和應用才剛剛開始。
就拿這個例子來說,與子女身高有關係的因素太多了,除了父母的身高,還有性別、地域、民族、飲食、體育鍛煉情況等等。之前我們在介紹 ANOVA 的時候,談到過多因素 ANOVA,之所以有這樣的方法,也是為了滿足在資料分析中同時考慮多種因素與因變數之間關係的要求。
線性回歸分析同樣可以包含多個引數,稱為多重線性回歸(multiple linear regression),而且我們以後還會看到,它比起多因素 ANOVA 在模型的靈活性、結果的解讀上有明顯的優勢。
當然了,引數一旦多起來,事情就沒這麼輕巧了。我們今天就從最簡單的情況談起。
▣▣▣▣
讓我們來考慮一下,如果我們要同時考察父母平均身高和(子女的)性別這兩個引數與子女身高之間的關係,應該怎麼做。
為什麼說這是最簡單的情況呢?因為性別不僅是個分類變數,而且還只有男、女兩種情況,是個二分類變數(binary variable)。為了把分類也變成可以運算的數量,我們不妨把男、女分別記為 1 和 0(別的記法行不行?別著急,本文最後的部分會討論這個問題)。
現在我們的第一個目標,就是建立模型,也就是說,把子女身高與性別、父母平均身高之間的數量關係以算式的形式確定下來,就好像本文開頭子女身高與父母平均身高之間的模型一樣。
這時候,我們就得問自己,性別和子女身高之間有什麼關係?一個很簡單的回答是,平均來說,兩種性別的孩子身高會有些差別。更具體地講,就是年齡相仿的男孩會比女孩高一些。這個回答很有用,但是還不夠——既然我們要同時考慮性別和父母平均身高,我們就得想得再細一點兒:
①在性別一樣的情況下,父母平均身高與子女身高的關係如何?
②在父母平均身高一樣的情況下,性別與子女身高的關係如何?
既然說是從簡單的情況開始,那麼我們先這樣假設:
①不論性別如何,子女身高隨父母平均身高都是線性增長關係,而且增長率相同;
②不論父母平均身高如何,平均來說男孩和女孩身高的差別都不變。
你也許會問,你怎麼知道你上面說的是對的呢?的確,上面的兩個假設並不一定正確。幸運的是,資料分析不是一錘子買賣,我們只需大膽假設,小心求證——在下一集文章裡,我們將會討論如何驗證這樣的假設是否符合資料,如果不符合的話應該如何改進模型。
如果我們暫時接受上面①②兩個假設,我們就能寫出如下模型:
這裡 x1 是父母兩人的平均身高,x2 是性別,仍然用 1 和 0 分別表示男和女。和以前一樣,β0 是截距,β1, β2 分別是父母平均身高和性別的回歸係數,而 ε 是模型中的隨機誤差,服從均值為 0、方差為 σ2 的正態分佈。
一看上面這個式子,或許你心裡要嘀咕了:剛才何必那麼囉嗦來這麼一大段自問自答呢?直接說在之前的模型里加上一個表示性別的變數 x2 不就行了嗎?
不錯,從模型的形式上看,現在的模型無非只是比以前加了一項而已,但是它所包含的意義,要比「我們同時考慮了父母身高和孩子性別」來得更具體而精確。現在讓我們來看看,我們建立的這個模型是如何對應了前面①②兩條假設的。為了書寫的簡潔,下面我們省去誤差項,因此也把=號改為~號。
①不論性別如何,子女身高與父母平均身高都是相同的線性增長關係:
當孩子是男性時,x2=1,模型變為
這是一條截距為 (β1+ β2)、斜率為 β1 的直線。
當孩子是女性時,x2=0,模型變為
這是一條截距為 β0、斜率為 β1 的直線。
也就是說,不論性別如何,子女身高 y 隨著父母平均身高 x1 增長的速度都是 β1,因此男孩、女孩平均身高與父母身高的回歸線是兩條平行的直線。
②不論父母平均身高如何,平均來說男孩和女孩身高的差別都不變:
把上面兩條式子相減,我們可以得到在父母平均身高相同時,男女孩平均身高的差異是
β2 是個固定的常數,換言之,不論父母平均身高 x1 是多少,根據這個模型,在給定某個具體的父母平均身高時,男女孩平均身高的差異都是 β2(這也是男女孩身高兩條回歸線互相平行所帶來的必然結果)。
寫到這裡,相信大家已能瞭解到,y ~ β0 +β1* x1 + β2 * x2 這個模型所包含的對於因變數、引數之間的數學關係。我們作為模型的使用者,一定要確保這個模型確實對應了我們想要回答的具體問題或者假說。現在有了各種統計學軟體,要在模型裡引進或者去掉一個引數,只是幾下按鍵或者修改一兩行的程式事情,我們腦子裡就更要把模型的數學意義掌握清楚,否則就是很容易南轅北轍。
如果研究假說或者相關理論要求我們考慮與這個模型不同的數學關係怎麼辦?別著急,以後的文章裡,我們還會再為大家介紹其他形式的模型。
▣▣▣▣
明確了模型的意義,我們就可以把具體資料擬合到模型上,找出回歸係數,並且對其做統計推斷了。
雖然多了一個新的參數 β2,我們之前介紹過的極大似然估計和假設檢驗的方法仍然適用。下表是統計軟體對這個新模型給出的結果(由於在性別這個變數中,我們把男性標記為 1,為了表達清晰,我們把這個變數稱為“男性”):
估計值 |
t值 |
p值 |
95%置信區間 |
|
(截距) |
57.349 |
4.521 |
4.16e-5 |
[31.83, 82.87] |
父母平均身高 |
0.395 |
5.039 |
7.37e-6 |
[0.237, 0.553] |
男性 |
6.357 |
5.550 |
1.28e-6 |
[4.053, 8.661] |
把估計值填入模型裡,我們會得到
子女身高 ~ 57.349 + 0.395 × 父母平均身高 + 6.357 × 男性
我們也可以向前面那樣,在「男性」變數分別取 1 和 0 時,得到兩條平行的回歸線(如下圖所示,男孩、女孩的資料點和相應回歸線分別用藍色和黑色繪出):
男孩身高 ~ 63.706 + 0.395 × 父母平均身高
女孩身高 ~ 57.349 + 0.395 × 父母平均身高
還和以前一樣,我們來解讀一下各個參數的含義。
首先我們來看截距,只有當父母平均身高和男性這兩個變數都取 0 的時候,子女身高的平均值才會恒等於 57.349。也就是說,在這個模型裡,截距的意義是,父母身高為 0 的女孩的平均身高。當然了,就和前面一樣,由於身高不可能為 0,所以在這個例子裡,截距沒有太大的意義,但是值得記住的是普遍的結論——在多重線性回歸中,截距的意義是所有引數都取 0 時,因變數的平均值。
那麼回歸係數 β1 和 β2 呢?在之前只有一個引數的模型 y ~ β0 +β1* x1 + β2 * x2 裡,β1 的意義很簡單,就是引數 x 每增加一個單位時,因變數 y 的變化。現在,我們的模型裡有了不止一個引數,是否還能夠這麼說呢?這時我們要小心了,在多重線性回歸裡,回歸係數仍然是因變數y隨相應引數的變化率,但是有一個額外的條件:在所有其它引數保持不變的情況下。
要理解為什麼,我們只需回到模型 y ~ β0 +β1* x1 + β2 * x2 本身,很容易看到只有當 x1 保持不變時,x2 增長一個單位才會使 y 發生 β2 的變化;反之亦然,只有當 x2 保持不變時,x1 增長一個單位才會使 y 發生 β1 的變化。可是,別看道理如此簡單,解讀多重線性回歸的回歸係數時,忘掉這個條件是很多人都會犯的錯誤——到時候可別說咱「說人話的統計學」沒提醒過你喲!
進一步說,這其實也是多重線性回歸的重要作用之一,就是把不同引數對因變數的貢獻「分解」開來。在我們這個例子裡,子女性別和父母身高這兩個變數本身就相對獨立,這個作用可能還不是特別明顯,但在很多科研課題中,多個引數之間有很強的相關性,它們對因變數的貢獻只靠單因素的分析方法很難研究清楚。這時,如果能把良好的實驗設計與多重回歸分析配合好,再加上足夠的統計效能(通常靠較大的樣本量來保證),就有可能把各自的效應做個拆分了。
回到我們的例子,父母平均身高的回歸係數 0.395 意味著在性別不變的前提下,父母平均身高每提高 1 釐米,平均來說子女身高會提高 0.395 釐米。而「男性」變數回歸係數 6.357 意味著在父母平均身高保持不變的前提下,男孩會比女孩平均高 6.357 釐米。這兩個回歸係數的 p 值都遠小於 0.05,意味著這兩個正相關關係都高度顯著。
▣▣▣▣
在本文最後,我們來簡單地說說,對於性別這個變數的數值表示方法。我們採取的辦法是男性為 1,女性為 0。其實,我們如果要反過來女性為 1,男性為 0 也是沒有任何問題的,得到的模型本質上還是同一個,只是形式不太一樣:
子女身高 ~ 63.706 + 0.395 × 父母平均身高 - 6.357 × 女性
比較上一個模型,不難發現,由於現在的性別變數翻了個個兒,變成了「女性」,因此截距的意義就變成了父母身高為 0 時男孩的平均身高了(因為「女性」變數為0就是男性)。而「女性」變數的回歸係數正好變成了原來「男性」回歸係數的相反數——因為現在的模型裡,「女性」的回歸係數的意義是給定父母身高時女孩減男孩的平均身高了。
那如果男性為 1、女性為 2,甚或男性為-1,女性為 3.7 這樣的奇葩表示方法行不行?從數學上說,也沒什麼不行,只不過此時截距和回歸係數就變得不好解讀了。因為截距是當所有引數為 0 時因變數的平均值,如果性別變數裡的 0 不屬於任何一個類別,截距也就失去了具體的實際意義。
而回歸係數是其他變數不變時,該引數增加 1 個單位時因變數的變化。如果性別變數的兩個分類之間相差不為 1,這個係數就不會正好是兩性的因變數均值之差(給定其他變數不變),而會變成這個差值的某個倍數。所以,為了避免自找麻煩,我們通常對二分類變數作 0/1 處理,定為 0 的那個分類就變成「參考類別」(reference category)——因為回歸係數是另一個類別減去這個參考分類的因變數平均值之差。
在統計學軟體裡,這也是一個需要小心的問題。我們一般有兩種處理方法:
☑如果我們用字元來表示類別,比如「男」「女」「M」「F」之類,多數軟體會自動在後臺轉換成 0/1 變數,並且選定其中一個做參考類別(也可以自己選定)。這時,我們只需要在閱讀結果輸出時,注意弄清楚誰是參考類別,然後作相應的解讀就行。
☑如果我們的資料集裡是用數值來表示類別的,這時候要尤其注意——正如上面討論的那樣,最好用 0/1 編碼,這樣能為結果的解讀帶來最大的便利。如果現成的資料用了其它數值(比如說 1 和 2),我們可以自己重新編輯成 0/1,也可以在統計學軟體中設定該變數按分類變數處理,這時就回到和用字元表示的處理方法一樣了。
1
本系列文章
第 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.引數不止一個,線性回歸該怎麼做?
作者:張之昊
編輯:黑草烏葉
留言列表