python实现逐步回归分析_Python实现逐步回归(stepwise regression)
逐步回歸的基本思想是將變量逐個引入模型,每引入一個解釋變量后都要進行F檢驗,并對已經選入的解釋變量逐個進行t檢驗,當原來引入的解釋變量由于后面解釋變量的引入變得不再顯著時,則將其刪除。以確保每次引入新的變量之前回歸方程中只包含顯著性變量。這是一個反復的過程,直到既沒有顯著的解釋變量選入回歸方程,也沒有不顯著的解釋變量從回歸方程中剔除為止。以保證最后所得到的解釋變量集是最優的。
依據上述思想,可利用逐步回歸篩選并剔除引起多重共線性的變量,其具體步驟如下:先用被解釋變量對每一個所考慮的解釋變量做簡單回歸,然后以對被解釋變量貢獻最大的解釋變量所對應的回歸方程為基礎,再逐步引入其余解釋變量。經過逐步回歸,使得最后保留在模型中的解釋變量既是重要的,又沒有嚴重多重共線性。
至今,我們已經有更好算法跳過共線性問題,沒有必要在商業腳本里加入逐步回歸代碼。實際中變量相互關聯,因此通過逐步回歸思路刪除變量解決共線性問題并非最佳思路。更好算法可參考課程《python風控建模實戰lendingClub》:http://dwz.date/b626
本文作為學術探討,介紹逐步回歸原理和python代碼。當基于最小二乘法訓練線性回歸模型而發生過擬合現象時,最小二乘法沒有辦法阻止學習過程。前向逐步回歸的引入則可以控制學習過程中出現的過擬合,它是最小二乘法的一種改進或者說調整,其基本思想是由少到多地向模型中引入變量,每次增加一個,直到沒有可以引入的變量為止。最后通過比較在預留樣本上計算出的錯誤進行模型的選擇。
實現代碼如下:
wine_data的表結構如下圖所示:
wine_data中部分屬性的統計信息如下:
上述代碼的輸出結果為:
上述代碼繪制的圖像如下:
RMSE與屬性數量的關系圖像:
錯誤直方圖:
實際值與預測值的散點圖:
逐步回歸練習和代碼
python信用評分卡建模(附代碼):
https://ke.qq.com/course/3063615?tuin=dcbf0ba
逐步回歸的基本思想是將變量逐個引入模型,每引入一個解釋變量后都要進行F檢驗,并對已經選入的解釋變量逐個進行t檢驗,當原來引入的解釋變量由于后面解釋變量的引入變得不再顯著時,則將其刪除。以確保每次引入新的變量之前回歸方程中只包含顯著性變量。這是一個反復的過程,直到既沒有顯著的解釋變量選入回歸方程,也沒有不顯著的解釋變量從回歸方程中剔除為止。以保證最后所得到的解釋變量集是最優的。
本例的逐步回歸則有所變化,沒有對已經引入的變量進行t檢驗,只判斷變量是否引入和變量是否剔除,“雙重檢驗”逐步回歸,簡稱逐步回歸。例子的鏈接:(原鏈接已經失效),4項自變量,1項因變量。下文不再進行數學推理,進對計算過程進行說明,對數學理論不明白的可以參考《現代中長期水文預報方法及其應用》湯成友,官學文,張世明著;論文《逐步回歸模型在大壩預測中的應用》王曉蕾等;
逐步回歸的計算步驟:計算第零步增廣矩陣。第零步增廣矩陣是由預測因子和預測對象兩兩之間的相關系數構成的。
引進因子。在增廣矩陣的基礎上,計算每個因子的方差貢獻,挑選出沒有進入方程的因子中方差貢獻最大者對應的因子,計算該因子的方差比,查F分布表確定該因子是否引入方程。
剔除因子。計算此時方程中已經引入的因子的方差貢獻,挑選出方差貢獻最小的因子,計算該因子的方差比,查F分布表確定該因子是否從方程中剔除。
矩陣變換。將第零步矩陣按照引入方程的因子序號進行矩陣變換,變換后的矩陣再次進行引進因子和剔除因子的步驟,直到無因子可以引進,也無因子可以剔除為止,終止逐步回歸分析計算。
a.以下代碼實現了數據的讀取,相關系數的計算子程序和生成第零步增廣矩陣的子程序。
注意:pandas庫讀取csv的數據結構為DataFrame結構,此處轉化為numpy中的(n-dimension array,ndarray)數組進行計算
b.第二部分主要是計算公差貢獻和方差比。
c.第三部分調用定義的函數計算方差貢獻值
計算結果:
此處沒有編寫判斷方差貢獻最大的子程序,因為在其他計算中我還需要變量的具體物理含義所以不能單純的由計算決定對變量的取舍,此處看出第四個變量的方查貢獻最大
計算第四個預測因子的方差比(粘貼在了代碼中),并查F分布表3.280進行比對,22.8>3.28,引入第四個預報因子。(前三次不進行剔除椅子的計算)
d.第四部分進行矩陣的變換。
e.進行完矩陣變換就循環上面步驟進行因子的引入和剔除
再次計算各因子的方差貢獻
前三個未引入方程的方差因子進行排序,得到第一個因子的方差貢獻最大,計算第一個預報因子的F檢驗值,大于臨界值引入第一個預報因子進入方程。
進行矩陣變換,計算方差貢獻
可以看出還沒有引入方程的因子2和3,方差貢獻較大的是因子2,計算因子2的f檢驗值5.026>3.28,故引入預報因子2
繼續進行矩陣轉換,計算方差貢獻
這一步需要考慮剔除因子了,有方差貢獻可以知道,已引入方程的因子中方差貢獻最小的是因子4,分別計算因子3的引進f檢驗值0.0183
和因子4的剔除f檢驗值1.863,均小于3.28(查F分布表)因子3不能引入,因子4需要剔除,此時方程中引入的因子數為2
在此對矩陣進行變換,計算方差貢獻
,已引入因子(因子1和2)方差貢獻最小的是因子1,為引入因子方差貢獻最大的是因子4,計算這兩者的引進f檢驗值和剔除f檢驗值
不能剔除也不能引進變量,此時停止逐步回歸的計算。引進方程的因子為預報因子1和預報因子2,借助上一篇博客寫的多元回歸。對進入方程的預報因子和預報對象進行多元回歸。輸出多元回歸的預測結果,一次為常數項,第一個因子的預測系數,第二個因子的預測系數。
參考:
《Python機器學習——預測分析核心算法》Michael Bowles著
https://baike.baidu.com/item/%E9%80%90%E6%AD%A5%E5%9B%9E%E5%BD%92/585832?fr=aladdin
https://blog.csdn.net/qq_41080850/article/details/86506408
https://blog.csdn.net/qq_41080850/article/details/86764534
https://blog.csdn.net/Will_Zhan/article/details/83311049
如果想了解更多相關知識,歡迎同學報名學習python金融風控評分卡模型和數據分析:http://dwz.date/b9vv
總結
以上是生活随笔為你收集整理的python实现逐步回归分析_Python实现逐步回归(stepwise regression)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在python语言中不能作为变量名的是什
- 下一篇: access百度翻译 get_Asp.N