因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?
這里提供一個 Python 實現的方法和原理趣分析
方差膨脹因子是非常經典緩解多元共線性的方法,原理簡單,實現優雅,效果拔群。源代碼源數據可私聊俺獲取,每天固定時間查看和回復。
原理趣析
多重線性回歸模型的主要假設之一是我們的預測變量(自變量)彼此不相關。我們希望預測變量與反應變量(因變量)相關,而不是彼此之間具有相關性。如言情劇中的 A 喜歡B,B 卻喜歡 C,結果發現 C 其實喜歡 A;而 B 的一舉一動很有可能影響著 A,所以當我們把 B和C 作為自變量來預測因變量 A 的行為時,這兩個自變量之間的相互影響就會有點讓人難受。
公式解釋
方差膨脹因子(Variance Inflation Factor,以下簡稱VIF),是指解釋變量之間存在多重共線性時的方差與不存在多重共線性時的方差之比。
上圖公式可以看出在方差膨脹因子的檢測中:每個自變量都會有一個膨脹因子值VIF_i,最后根據值的大小來選擇是否刪減
Ri^2 表示相關性,是誰跟誰的相關性呢?是自變量中的某一變量與除它外剩余的自變量進行多元線性回歸,取回歸結果,即模型精度來作為這個變量與剩余自變量的相關性。 聽起來可能有點繞,這里舉一下實例(用 “ 面積、臥室數量和浴室數量 ” 作為自變量來預測房價,在進行自變量的方差膨脹因子的檢測時,面積、臥室數和浴室數輪流做單獨的因變量,剩下的兩個變量作為自變量,來看看這三個自變量中那個變量對其余兩個變量的解釋性高)
Ri^2 越大,如已經到了 0.9,那分母就很小,vif_i 的值就等于 10,即表示這個自變量已經同時解釋了另外的某個或多個自變量,存在多元共線性,可以考慮刪除一些自變量。
VIF越大,顯示共線性越嚴重。經驗判斷方法表明:當0
效果實現
本文將使用 Python 數據分析利器 Jupyter Notebook 實現。雖然前人大神們已經有了完整的實現步驟 https://etav.github.io/python/vif_factor_python.html
但他們的實現方法還是會輕微復雜,筆者這里提供一個自寫函數的方法
使用自寫函數來檢測各自變量的方差膨脹因子
發現變量 bedrooms 和 bathrooms 的方差膨脹因子都超過了 10。其實方差因子通常成對出現,通常較大的兩個方差膨脹因子表明這兩個變量自身本來就具有高度相關性,即這兩個變量一起才解釋一種東西,可以考慮去除一個自己并不怎么感興趣的變量即可,也回到了我們最開始的目的:多重線性回歸模型的主要假設之一是我們的預測變量彼此不相關,我們希望預測變量與反應變量相關,而不是彼此之間具有相關性。
bedrooms 和 bathrooms 的方差膨脹因子異常也能從上一張 ols 建模結果的圖中看到端倪。將變量之間的相關性以熱力圖的形式呈現后,發現 ols 建模的結果是 bedrooms 每增加一個單位,房價還減少 -2925.8063 ???而熱力圖則反映出bedrooms 與房價呈現比較強的正相關關系。
所以我們可考慮去掉方差膨脹因子最大的變量 bedrooms,后再進行一次 ols 建模
對比兩次建模結果,發現其實刪除某個方差膨脹因子異常的變量后建模結果也不變,但我們需要注意的是:具體問題還得結合具體業務來分析,有時候盡管出現了多元共線性,但也還是需要保留方差膨脹因子異常的變量。
總結
以上是生活随笔為你收集整理的因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机学习--数字时钟数字电压表
- 下一篇: iPhone6和iPhone6 plus