close

線性模型生病了,你懂得怎樣診斷嗎?| 協和八

原創 田菊 

說人話統計學

我們前面講了如何擬合線性模型,以及用 R 平方和其他標準來比較不同線性模型的優劣。我們所說的模型的「優劣」,講的是模型與資料吻合程度如何,以及更進一步看模型是否能夠對新的資料具備良好的預測能力。要對若干模型作這樣的比較,其實有個前提:候選的模型們本身都是合格的、「健康」的模型。

 

就好像你為了準備一場求職面試,來到專賣店置辦一套西服,在進試衣間之前,你總得看看衣服有沒有破損或者污漬,甚至說衣服到底是不是西服(而不是滑雪服、游泳衣)、性別對不對,是吧?只有手上的衣服滿足了這些基本要求,才有進一步評判合不合身、好不好看的需要。

 

今天,我們就退一步來回顧一下線性模型要滿足哪些基本要求,以及如何診斷線性模型可能存在的毛病——只有通過了這些檢查,模型得到的結論才有進一步考慮的價值。

數據用對了嗎?

與其它統計方法一樣,線性回歸的最重要的前提條件,是要保證模型使用的資料要與試圖解決的問題相一致。這有兩個方面:1)保證重要的引數(預測變數)沒有被遺漏。這個我們之前在《41.沒考慮到混雜因素,後果會這麼嚴重?》有詳細講過原因。2)因變數(預測值)真正反映了你想研究的問題。這聽上去好像很簡單,下面我們就看個例子:

你想研究是不是皮膚越藍的藍精靈們就跑步越快,你發現下課鈴響後,藍精靈們都會往食堂跑,為了省事,你打算直接用藍精靈跑到食堂的速度作為跑步快慢的測量值 y。但是, 可能往食堂跑得快的只是吃貨藍精靈,並不是真正跑步速度快的藍精靈。由於測量值並不能完全與研究的問題一致,無論用什麼分析方法,都無法準確地研究皮膚顏色和跑步快慢直接的關係。

看到這裡,你也許會覺得,這種低級錯誤我怎麼會犯呢? 但是在實際的科研中,由於客觀條件的限制,往往不是想測量什麼就能測量什麼,經常需要用一些近似的變數來研究我們真正關心的問題 。這時,我們就要警惕這些近似是否合理,而且要在設計實驗時就仔細考慮,因為一旦資料已經採集完畢後才意識到問題,後面再多的分析都很難補救這樣的硬傷。從發表論文的實際需要來說,自己能提早發現問題總比被文章的審稿人抓出錯誤要好。

等拿到了資料、擬合好模型以後,我們往往會迫不及待地先看哪些變數有顯著性。《說人話的統計學》讀者們,且慢且慢,咱還得先看看資料是否滿足線性模型的理論假設。

線性模型的理論假設適用嗎?

 

要使用線性模型,有一個大前提是因變數和引數之間的關係確實是線性的,即因變數 y 能夠表達為下面的形式:

WeChat 圖片_20200527162347.jpg

怎麼知道 y x 之間的關係是不是線性的呢?最直接的辦法就是用 x-y 散點圖來觀察了,如果散點圖中,x y 基本在一條直線上,就說明兩者的關係是線性的(如下圖左),否則就不是線性的(下圖右)

 

WeChat 圖片_20200527162444.jpg

那如果不是線性的情況該怎麼辦呢?在講 t 檢驗學到的資料變換這裡就可以被借鑒一下,詳細的解讀見 《15.樣本分佈不正態?數據變換來救場!》。

 

在線性回歸模型裡面,我們可以通過加入 x2log(x) 等作為新的引數,來擬合那些線性關係以外的關係。

 

除了線性假設之外,在《36.如果只能學習一種統計方法,我選擇線性回歸》裡面講過,線性模型將凡是模型不能擬合的部分都是算在一個誤差項裡面,並且假設誤差項以零為中心呈正態分佈,且誤差是完全隨機的,與引數 x 無關。正是基於這些假設,我們才能找到線性模型的最大似然解。

 

模型擬合好之後,我們可以計算 y 的實際值與 y 的模型預測值之差,也叫做殘差residual,殘差可以看作誤差的測量值。檢查殘差的分佈能夠有效的檢驗線性模型中關於誤差的前提是否滿足。

 

首先我們可以看看殘差是否符合正態分佈這個條件,但是與 t 檢驗類似,在樣本量比較大的時候(比如幾十以上), 其實正態性對線性模型而言並不是很重要。對線性模型品質影響更大的反而是殘差是否滿足與引數不相關這一條件,而殘差圖正是為了達到這一目的而產生的。

 

殘差圖也是散點圖的一種,只不過 y 軸對應的變數是殘差,而 x 軸可以是某一個引數,也可以是模型對應的預測值。 

 

下面我們從兩個例子來殘差圖是如何説明診斷模型的。下圖左是殘差的分佈並不隨引數 x 的變化而變化,這說明模型的誤差完全是隨機的,而下圖右殘差的平均值是抛物線狀的,這說明因變數 y 與引數的關係不完全是線性的,如果在模型裡面加入 x2 作為新的引數,這部分殘差很有可能被 x2 所擬合。

WeChat 圖片_20200527162644.jpg

殘差圖還有一種情況是殘差的平均值並不隨著 x 的變化而變化,但是殘差的方差隨著 x 的變化而變化,這種情況也叫做異方差性heteroscedasticity

 

在下圖的例子裡面,殘差的平均值一直都在 0 附近,但是當引數 x 越大,殘差在 y 軸上的分佈越分散,說明殘差的方差隨著引數的增加而增加。

 

這對於線性模型也不是一個好兆頭,因為線性模型是假設誤差項的方差是一個常數,並不隨 x 的變化而變化。

WeChat 圖片_20200527162926.jpg

殘差呈異方差性的一個例子,參數的方差隨著 x 的增加而增加

實際上,異方差性對於線性模型並不是一個致命的打擊,用普通的線性模型估計出來的回歸係數與實際情況也不會差太多,只是回歸係數的方差會被放大。

這時如果使用加權最小二乘法weighted least squares,給誤差大的資料點相對小一點的權重,則會得到比用普通最小二乘法更準確的對於回歸係數的估計。

做了上面這些檢驗,線性模型的一些基本前提就可以保證了。但是這並不代表得到的結論就一定靠譜。如果構建線性模型的主要目的是統計推斷,直白點說就是研究引數的回歸係數是否有統計顯著性,那麼我們的模型還得滿足一個比較隱性的條件,那就是引數之間要儘量相互獨立。

 

引數之間相互獨立嗎?

 

為了弄明白為什麼要避免引數不獨立,我們從一個極端的例子看起。假設我們在一群五年級的藍精靈小朋友裡面研究性別對身高的影響,測量了 10 個男孩和 10 個女孩的身高。通過建立一個簡單的線性模型,我們得到

 

WeChat 圖片_20200527163047.png

當資料來自男孩時,「男孩」引數對應的數值等於 1,否則為 0。如果你對線性模型比較熟悉,會發現上面這個模型其實很簡單,翻譯成人話就是說女孩平均身高是 50cm,男孩平均身高是 60cm

假如分析資料的同學還是新手,沒有想明白性別只要用一個變數就行了,在模型裡面同時加入了男孩和女孩兩個變數:

 

WeChat 圖片_20200527163138.jpg

 

上面模型中男孩和女孩這兩個引數總有一個是 1,另一個是 0,那麼這兩個變數就是完全互相依賴的,因為其中一個變數的值完全決定了另一個變數,或者說知道其中一個變數的值,另一個變數也就知道了。

這時候如果我們直接擬合上面的模型會發生什麼呢? 統計軟體很有可能無法計算出回歸係數,因為滿足最大似然的參數有無窮多個。下面我們來具體看看為什麼:

當資料來自男孩時,y 的最大似然估計就是男孩的平均身高,資料來自女孩時,y 的最大似然估計就是女孩身高,所以滿足最大似然條件的回歸係數應該滿足下面的方程組:

WeChat 圖片_20200527163220.jpg

我們知道兩個方程是無法確定三個變數的值的,只要滿足

 

WeChat 圖片_20200527163258.jpg

 

的回歸係數都可以是上面方程的解,於是無法確定回歸係數的具體數值。從這裡我們可以看出,包括完全互相依賴的兩個引數會導致無法確定這兩個變數回歸係數的具體值。

實際應用中遇到的情形一般沒有上面的例子那麼極端,比如上海八月第一周的平均氣溫和八月整月的平均氣溫就有很強的相關性,但又不是百分之百相關,因為僅僅知道第一周的氣溫還不能完全確定整月的平均氣溫。

由於相關性不是百分之百,如果我們將本周的平均氣溫和本月的平均氣溫同時作為引數放到模型裡面,統計軟體還是可以計算出每個變數的回歸係數,但是在做統計推斷的時候,對回歸係數估計的不確定性會很大,具體表現為計算出的回歸係數的方差會比只包含一個變數的時候大很多。 

為什麼有兩個相關性很高的引數的時候,每個引數的回歸係數會變得不確定呢?線性模型的本質就是用引數 x 的變化來解釋預測值 y 的變化,而如果 y 的變化既能夠被引數 x1,也能夠被引數 x2 的變化所解釋,那麼模型就不知道這帳算在誰的頭上,於是這兩個高度相關的引數的回歸係數的不確定性就都增加了。

說了這麼多,為什麼我們不希望包含高度相關的兩個引數在模型裡面呢?因為這有可能導致我們對模型擬合結果的誤解,也許引數 x 的回歸係數本來是顯著不等於 0 的,因為加入了另外一個與其高度相關的引數,引數 x 的回歸係數可能就變得不顯著了,導致我們錯誤的認為引數 x 與預測值 y 沒有顯著的線性關係。 

如何在構建模型的過程中確保引數之間保持相對獨立性呢?這個早就有現成的統計方法來解決了: VIFvariance inflation factor,方差膨脹因數)是專門來幫助檢測引數之間是否相對獨立的。一般在構建有多個引數的線性模型時,統計學軟體會計算每個引數的 VIF  VIF 越大,說明這個引數與其它的引數相關性越高。

VIF 之所以叫做方差膨脹因數,是因為它反映了:引數 x 的回歸係數的方差,因為該引數與其它引數的相關性,而放大了多少倍。

聽起來好像很高深的 VIF 其背後的原理並不複雜:如果知道其它引數的值就能夠很好地解釋引數 x1 的變化,那說明 x1 與其它引數獨立性很低,對應的 VIF 應該很高。前兩節講到的 R2 恰好可以用來衡量引數 x1 能不能很好地被其它引數解釋。我們只需要將 x1 作為因變數,將其餘的引數當作預測變數,重新構建一個線性模型:

 

WeChat 圖片_20200527163341.png

*注意這個模型裡面的與 y 作為因變數的模型中的 β 沒有任何關係

我們計算出上面模型對應的 R2,把它記為 R2x1X1 對應的 VIF 運算式為:

 

WeChat 圖片_20200527163421.png

x1 與其他引數越不獨立,上面的 R2x1 就越接近 1,則分母越小,VIF 越大。一般如果有引數的 VIF 大於 10 就說明這個引數與其它引數的相關性太高,此時,這個變數對預測 y 值也不會有多少額外的説明,可以考慮在模型中捨棄一些變數,當然具體選擇哪些變數留下來還要根據具體情況,結合模型選擇的一些標準來定。

這一集我們講的模型診斷方法主要是來看線性模型本身的一些假設是否得到滿足。有的時候,即使我們的模型已經很合理,但是由於資料本身存在一些異常,也會給擬合的結果帶來負面影響,要想知道如何對付異常資料點,敬請關注下期內容 🙂

系列文章

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平方是砒霜,本文教你三種解藥!

45. 線性模型生病了,你懂得怎樣診斷嗎?

(未完,更新中)

 

自檢

媽媽說答對的童鞋才能中獎

統計學的十個誤區,你答對了嗎?

番外篇

说人话的统计学:一份遲來的邀請

 

作者:田菊

編輯:獼猴桃皮 黑草烏葉

質控:小二仙草

 

閱讀 2868

 在看1

寫下你的留言

精選留言

  • RCE

 1

喜歡小編的聲音!

 

arrow
arrow
    創作者介紹
    創作者 HCHUNGW 的頭像
    HCHUNGW

    HCHUNGW的部落格

    HCHUNGW 發表在 痞客邦 留言(0) 人氣()