數學建模【多元線性回歸模型】

一、多元線性回歸模型簡介

回歸分析是數據分析中最基礎也是最重要的分析工具,絕大多數的數據分析問題,都可以使用回歸的思想來解決。回歸分析的任務就是,通過研究自變量X和因變量Y的相關關系,嘗試去解釋Y的形成機制,進而達到通過X去預測Y的目的。

常見的回歸分析有五類:線性回歸、0-1回歸、定序回歸、計數回歸和生存回歸,其劃分的依據是因變量Y的類型。本篇主要講解多元線性回歸以及lasso回歸。

回歸分析的目的

  • 識別重要變量
  • 判斷相關性的方向
  • 要估計權重(回歸系數)

回歸分析分類

類型模型Y的特點例子
線性回歸OLS、GLS(最小二乘)連續數值型變量GDP、產量、收入
0-1回歸logistic回歸二值變量(0-1)是否違約、是否得病
定序回歸probit定序回歸定序變量等級評定(優良差)
計數回歸泊松回歸(泊松分布)計數變量每分鐘車流量
生存回歸Cox等比例風險回歸生存變量(截斷數據)企業、產品的壽命

二、適用賽題

解釋類問題

  • 問一個因變量y由多個自變量x決定,探究這多個x和y的關系
  • 解釋哪個x和y關系更緊密

預測類問題

  • 由于回歸模型會得到一個擬合曲線,進而可以由這個曲線去預測一些值
  • 不過注意,當要用擬合曲線預測的時候,擬合優度一定要大

三、模型流程

四、流程分析

注:回歸模型其中涉及到矩陣論、概率論與數理統計的知識,本篇不展開證明和講解。且推薦使用Stata軟件來進行多元線性回歸分析。

1.處理變量

我們得到了一組數據,要對數據進行分類

橫截面數據

  • 在某一時點收集的不同對象的數據
  • 例如:我們自己發放問卷得到的數據,全國各省份2018年GDP的數據,大一新生今年體測的得到的數據

時間序列數據

  • 對同一對象在不同時間連續觀察所取得的數據
  • 例如:從出生到現在,你的體重的數據(每年生日稱一次),中國歷年來GDP的數據,在某地方每隔一小時測得的溫度數據

面板數據

  • 橫截面數據與時間序列數據綜合起來的一種數據資源
  • 例如:2008-2018年,我國各省份GDP的數據
數據類型常見建模方法
橫截面數據多元線性回歸
時間序列數據移動平均、指數平滑、ARIMA、GARCH、VAR、 協積
面板數據固定效應和隨機效應、靜態面板和動態面板

現在給出多元線性回歸方程

無內生性(no endogeneity)要求所有解釋變量均與擾動項不相關,這個假定通常太強,因為解釋變量一般很多(比如,5-15個解釋變量),且需要保證它們全部外生。是否可能弱化此條件?答案是肯定的,如果你的解釋變量可以區分為核心解釋變量與控制變量兩類。

  • 核心解釋變量:我們最感興趣的變量,因此我們特別希望得到對其系數的一致估計(當樣本容量無限增大時,收斂于待估計參數的真值)
  • 控制變量:我們可能對于這些變量本身并無太大興趣,而之所以把它們也放入回歸方程,主要是為了“控制住”那些對被解釋變量有影響的遺漏因素
  • 在實際應用中,我們只要保證核心解釋變量與μ不相關即可

如果自變量中有定性變量,例如性別、地域等,在回歸中要怎么處理呢?例如:我們要研究性別對于工資的影響(性別歧視)。這時候可以用到虛擬變量

Female就是一個虛擬變量。

為了避免完全多重共線性的影響,引入虛擬變量的個數一般是分類數減1。例如男女是兩類,就引入了一個Female;如果是區別全國34個省的人,就可以設置33個虛擬變量。

2.初次回歸

利用Stata得到初次回歸的結果后,需要檢驗結果的可靠性,如果可靠就可以解釋系數完成工作如果不可靠,還需要調整方法繼續回歸。

問題出在擾動項

橫截面數據容易出現異方差的問題;時間序列數據容易出現自相關的問題。

①異方差
如果擾動項存在異方差
  • OLS估計出來的回歸系數是無偏、一致的
  • 假設檢驗無法使用(構造的統計量失效了)
  • OLS估計量不再是最優線性無偏估計量(BLUE)
如何檢驗是否存在異方差

BP檢驗

原假設:擾動項不存在異方差。P值小于0.05,說明在95%的置信水平下拒絕原假設,即我們認為擾動項存在異方差。

懷特檢驗

原假設:擾動項不存在異方差。P值小于0.05,說明在95%的置信水平下拒絕原假設,即我們認為擾動項存在異方差。

②多重共線性

自相關的問題就是多重共線性的問題

如何檢驗是否存在多重共線性

3.處理問題
①如何解決異方差
  • 使用OLS + 穩健的標準誤。如果發現存在異方差,一種處理方法是,仍然進行OLS回歸,但使用穩健標準誤。這是最簡單,也是目前通用的方法。只要樣本容量較大,即使在異方差的情況下,若使用穩健標準誤,則所有參數估計、假設檢驗均可照常進行。換言之,只要使用了穩健標準誤,就可以與異方差“和平共處”了
  • 廣義最小二乘估計法GLS。原理:方差較大的數據包含的信息較少,我們可以給予信息量大的數據(即方差較小的數據更大的權重)缺點:我們不知道擾動項真實的協方差矩陣,因此我們只能用樣本數據來估計,這樣得到的結果不穩健,存在偶然性
  • Stock and Watson (2011)推薦,在大多數情況下應該使用“OLS +穩健標準誤”
②如何處理多重共線性
  • 如果不關心具體的回歸系數,而只關心整個方程預測被解釋變量的能力,則通常可以不必理會多重共線性(假設你的整個方程是顯著的)。這是因為,多重共線性的主要后果是使得對單個變量的貢獻估計不準,但所有變量的整體效應仍可以較準確地估計
  • 如果關心具體的回歸系數,但多重共線性并不影響所關心變量的顯著性,那么也可以不必理會。即使在有方差膨脹的情況下,這些系數依然顯著;如果沒有多重共線性,則只會更加顯著
  • 如果多重共線性影響到所關心變量的顯著性,則需要增大樣本容量,剔除導致嚴重共線性的變量(不要輕易刪除哦,因為可能會有內生性的影響),或對模型設定進行修改
③逐步回歸分析

沒有太好的方法處理多重共線性問題,可以調整回歸的方式

向前逐步回歸(Forward selection)

  • 將自變量逐個引入模型,每引入一個自變量后都要進行檢驗,顯著時才加入回歸模型
  • 缺點:隨著以后其他自變量的引入,原來顯著的自變量也可能又變為不顯著了,但是,并沒有將其及時從回歸方程中剔除掉

向后逐步回歸(Backward elimination)

  • 與向前逐步回歸相反,先將所有變量均放入模型,之后嘗試將其中一個自變量從模型中剔除,看整個模型解釋因變量的變異是否有顯著變化,之后將最沒有解釋力的那個自變量剔除。此過程不斷迭代,直到沒有自變量符合剔除的條件
  • 缺點:一開始把全部變量都引入回歸方程,這樣計算量比較大。若對一些不重要的變量,一開始就不引入,這樣就可以減少一些計算。當然這個缺點隨著現在計算機的能力的提升,已經變得不算問題了

注意事項

  • 向前逐步回歸和向后逐步回歸的結果可能不同
  • 不要輕易使用逐步回歸分析,因為剔除了自變量后很有可能會產生新的問題,例如內生性問題(后面會介紹lasso回歸)
  • 有沒有更加優秀的篩選方法?有的,那就是每種情況都嘗試一次,最終一共有2的k次方 - 1種可能。如果自變量很多,那么計算相當費時
4.解釋系數

這里也可以看到,引入了新的自變量價格后,對回歸系數的影響非常大。這就是遺漏變量導致的內生性的造成的。

伍德里奇的《計量經濟學導論,現代觀點》里,第六章176 -177頁有詳細的論述。取對數意味著原被解釋變量對解釋變量的彈性,即百分比的變化而不是數值的變化。目前,對于什么時候取對數還沒有固定的規則,但是有一些經驗法則

  • 與市場價值相關的,例如,價格、銷售額、工資等都可以取對數
  • 以年度量的變量,如受教育年限、工作經歷等通常不取對數
  • 比例變量,如失業率、參與率等,兩者均可
  • 變量取值必須是非負數,如果包含0,則可以對y取對數ln(1+y)

取對數的好處

  • 減弱數據的異方差性
  • 如果變量本身不符合正態分布,取了對數后可能漸近服從正態分布
  • 模型形式的需要,讓模型具有經濟學意義

下面有四類模型回歸系數的解釋

  • 一元線性回歸:y = a + bx + μ,x每增加1個單位,y平均變化b個單位
  • 雙對數模型:?lny = a + blnx + μ,x每增加1%,y平均變化b%
  • 半對數模型:?y = a + blnx + μ,x每增加1%,y平均變化b/100個單位
  • 半對數模型:?lny = a + bx + μ,x每增加1個單位,y平均變化(100b)%
5.再次回歸

在前面已經介紹了如何解決存在異方差的情況。但是對于多重共線性并未有一個較好的解決方法,解決方法中的增大樣本量顯然不太現實,找點數據已經不容易了,還要增大樣本量。所以在不用后面的方法的情況下,一般都是將導致嚴重共線性的變量刪除。下面我們介紹lasso回歸。

和lasso回歸一起出來的,還有嶺回歸。事實上,回歸中關于自變量的選擇大有門道, 變量過多時可能會導致多重共線性問題造成回歸系數的不顯著,甚至造成OLS估計的失效。本篇介紹到的嶺回歸和lasso回歸在OLS回歸模型的損失函數上加上了不同的懲罰項,該懲罰項由回歸系數的函數構成。一方面,加入的懲罰項能夠識別出模型中不重要的變量,對模型起到簡化作用,可以看作逐步回歸法的升級版;另一方面,加入的懲罰項能夠讓模型變得可估計,即使之前的數據不滿足列滿秩。

和前面一樣,還是推薦使用Stata軟件分析。但大多數博客或講義上都是使用Python來做嶺回歸和lasso回歸的,因此有Python機器學習基礎的同學可以自己查閱相關的調用代碼。

另外,Stata中對于嶺回歸的估計有點bug,因此推薦用lasso回歸。

那么,什么時候用lasso回歸呢?

我們首先使用最一般的OLS對數據進行回歸,然后計算方差膨脹因子VIF,如果VIF > 10則說明存在多重共線性的問題,此時我們需要對變量進行篩選。

在前面我們提到可以使用逐步回歸法來篩選自變量,讓回歸中僅留下顯著的自變量來抵消多重共線性的影響,知道lasso回歸后,我們完全可以把lasso回歸視為逐步回歸法的進階版,我們可以使用lasso回歸來幫我們篩選出不重要的變量,步驟如下

  1. 判斷自變量的量綱是否一樣,如果不一樣則首先進行標準化的預處理;
  2. 對變量使用lasso回歸,記錄下lasso回歸結果表中回歸系數不為0的變量,這些變量就是最終我們要留下來的重要變量,其余未出現在表中的變量可視為引起多重共線性的不重要變量

在得到了重要變量后,我們實際上就完成了變量篩選,此時我們只將這些重要變量視為自變量,然后進行回歸,并分析回歸結果即可。(注意:此時的變量可以是標準化前的,也可以是標準化后的,因為lasso只起到變量篩選的目的)

五、補充

1.擬合優度較低怎么辦
  • 回歸分為解釋型回歸和預測型回歸。預測型回歸一般才會更看重R2。解釋型回歸更多的關注模型整體顯著性以及自變量的統計顯著性和經濟意義顯著性即可
  • 可以對模型進行調整,例如對數據取對數或者平方后再進行回歸
  • 數據中可能有存在異常值或者數據的分布極度不均勻
2.標準化回歸系數

為了更為精準的研究影響評價量的重要因素(去除量綱的影響),我們可考慮使用標準化回歸系數。

對數據進行標準化,就是將原始數據減去它的均數后,再除以該變量的標準差,計算得到新的變量值,新變量構成的回歸方程稱為標準化回歸方程,回歸后相應可得到標準化回歸系數。

標準化系數的絕對值越大,說明對因變量的影響就越大(只關注顯著的回歸系數哦)。

3.對于線性的理解

線性假定并不要求初始模型都呈上述的嚴格線性關系,自變量與因變量可通過變量替換而轉化成線性模型。比如下面的都是線性模型

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719286.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719286.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719286.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux配置網卡功能

提示:工具下載鏈接在文章最后 目錄 一.network功能介紹二.配置network功能2.1 network_ip配置檢查 2.2 network_br配置2.2.1 配置的網橋原先不存在檢查2.2.2 配置的網橋已存在-修改網橋IP檢查2.2.3 配置的網橋已存在-只添加網卡到網橋里檢查 2.3 network_bond配置檢查 2.4 netw…

Access AR Foundation 5.1 in Unity 2022

如果已經下載安裝了ARF但版本是5.0.7 可以通過下面的方式修改 修改后面的數字會自動更新 更新完成后查看版本 官方文檔 Access AR Foundation 5.1 in Unity 2021 | AR Foundation | 5.1.2

【知識整理】Git 使用實踐問題整理

問題1、fatal: refusing to merge unrelated histories 一、Git 的報錯 fatal: refusing to merge unrelated histories 新建了一個倉庫之后,把本地倉庫進行關聯提交、拉取的時候,出現了如下錯誤: fatal: master does not appear to be a g…

js原型原型鏈

js原型原型鏈 在 JavaScript 中,每個對象都有一個原型(prototype)。對象的原型是另一個對象的引用,它包含對象的共享屬性和方法。JavaScript 中的原型鏈則是對象之間通過原型鏈接起來的一種機制,用于實現繼承和屬性查找…

電腦無法開啟虛擬化

vm開啟虛擬化失敗 如果出現以下錯誤,需要進入bios界面,不同電腦進入界面的方式不一樣。這里以hp為例: 1、關機后,按住開機鍵和f10,進入如下界面(語言在主菜單里面) 2、選擇先進和下面的系統選…

c語言游戲實戰(10):坤坤的籃球回避秀

前言: 這款簡易版的球球大作戰是博主耗時兩天半完成的,玩家需要控制坤坤在游戲界面上移動,來躲避游戲界面上方不斷掉下來的籃球。本游戲使用C語言和easyx圖形庫編寫,旨在幫助初學者了解游戲開發的基本概念和技巧。 在開始編寫代…

Vue使用高德地圖定位到當前位置,并顯示天氣信息

首先得去高德控制臺申請兩個 key,一個天氣key和一個定位key 獲取天氣信息的函數: const getWeather function (city) {// 使用 fetch 發送請求獲取天氣信息fetch(https://restapi.amap.com/v3/weather/weatherInfo?city${city}&keyeefd36557b0250…

哪個有名的工具可以安全記事 私密記事本筆記推薦

在這個數字化的時代,我們的生活已經離不開各種記事工具。它們幫助我們記錄生活中的點點滴滴,無論是工作上的重要事項,還是個人的私密心情。然而,當我在尋找一個能夠安心記錄私密事情的工具時,安全性成為了我最關心的因…

C++從零開始的打怪升級之路(day42)

這是關于一個普通雙非本科大一學生的C的學習記錄貼 在此前,我學了一點點C語言還有簡單的數據結構,如果有小伙伴想和我一起學習的,可以私信我交流分享學習資料 那么開啟正題 今天分享的是關于繼承的知識點 1.菱形繼承 我們有許多關于繼承…

【軟件測試】Postman中變量的使用

Postman中可設置的變量類型有全局變量,環境變量,集合變量,數據變量及局部變量。區別則是各變量作用域不同,全局變量適用于所有集合,環境變量適用于當前所選環境(所有集合中均可使用不同環境變量&#xff09…

【CSP試題回顧】202309-2-坐標變換(其二)

CSP-202309-2-坐標變換(其二) 關鍵點總結 1.輸入輸出的同步關閉,以加快I/O操作的速度 這一點還是很重要的,本題代碼如果不進行輸入輸出的同步關閉會時間超限。 ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);2.…

職場中的祖傳代碼處理建議

程序員是如何看待“祖傳代碼”的? 祖傳代碼的由來 在實際的程序員工作中,祖傳代碼是常見的。因為真正的互聯網職場生活中,業務變動調整頻繁,每到一個新的業務線,第一件事就是熟悉現有工程代碼,看舊文檔等…

K8S中POD的控制器

一、Pod控制器及其功用 Pod控制器,又稱之為工作負載(workload),是用于實現管理pod的中間層,確保pod資源符合預期的狀態,pod的資源出現故障時,會嘗試進行重啟,當根據重啟策略無效&am…

Linux基礎命令[9]-wc

文章目錄 1. wc 命令說明2. wc 命令語法3. wc 命令示例3.1 不加參數3.2 -c(統計字節數)3.3 -m(統計字符數)3.4 -l(統計行數)3.5 -L(最長一行的長度)3.6 -w(統計單詞數&am…

Arcgis實現點位空間位置從上到下從左到右排序

效果 背景 工作項目中經常會遇到需要對網格進行編號,而編號是有一定原則的,比如空間位置從上到下從左到右,或者其它原則,那么都可以通過下面的方式來實現 1、準備數據 點shp文件,查看初始FID字段標注,目…

transformer--transformer模型構建和測試

前面幾節進行了各種組件的學習和編碼,本節將組件組成transformer,并對其進行測試 EncoderDecoder 編碼器解碼器構建 使用EnconderDecoder實現編碼器-解碼器結構 # 使用EncoderDeconder類實現編碼器和解碼器class EncoderDecoder(nn.Module):def __ini…

飛書文檔批量導出

背景需求 最近所參與的項目即將結項,需要將飛書中的產品需求文檔(PRD)交付給甲方,由于文檔較多,大概有兩百多個,一個一個的下載導出,太麻煩了(PS:本人比較懶)…

ROS create_wall_timer/create_timer函數區別

在ROS(Robot Operating System)中,create_wall_timer 和 create_timer 是用于創建定時器的兩個不同的函數,它們在使用上有一些區別: Clock Type: create_wall_timer: 創建的定時器是基于Wall clock的,這意…

軟考筆記--結構化分析方法

結構化分析(SA)方法的基本思想是自定向下,逐層分解,把一個大問題分解成若干個小問題,每一個小問題再分解成若干個更小的問題。經過逐層分解,每個最低層的問題都是足夠簡單、容易解決的。 SA方法分析模型的…

78. 子集(力扣LeetCode)

文章目錄 78. 子集題目描述回溯算法 78. 子集 題目描述 給你一個整數數組 nums ,數組中的元素 互不相同 。返回該數組所有可能的子集(冪集)。 解集 不能 包含重復的子集。你可以按 任意順序 返回解集。 示例 1: 輸入&#xff…