標籤:

計量經濟學 嶺回歸

老師課上讓把自己的模型來做練習,並且看有沒有多重共線性問題,並且做嶺回歸。我專門把這些都整合出來了,希望能夠幫到大家。



  • 首先你的模型有數據,我就把我的模型當做範例吧,比較簡單,也比較實用。我的研究的是國內生產總值(GDP)與財政支出和就業人數的關係,從國家統計局(中華人民共和國國家統計局)找的數據,之後把數據輸進去,你們懂的(ps:網站上的數據是可以直接Ctrl+C Ctrl+V的)!我的數據從1980-2015(為了方便自己能看懂,把財政支出定義為CZZC.........)

上面是我的直接數據,我對GDP、財政支出、就業人數同時取對數(這個取不取對數自己來定吧,如果不對的話,我也不修改了),分別定義Y、X1、X2,這個可以用Genr來實現。

這樣我的初始數據也算完成了!(大家可以根據自己的情況來看)

  • 其次就是對數據進行處理,因為這裡最重要的是嶺回歸,所以其他的我就不詳細說了,做回歸報告(ls)

進行最初的分析(根據以後的課程學習,這個回歸報告可能沒有價值),多重共線性問題的發生是因為變數之間存在線性關係,所以我們可以根據一定的方法來確定這個模型是否存在共線性問題,簡單來說就是利用方差擴大化因子檢測

一般來講檢測的臨界指標為:

所以對我的模型進行檢測,先建立X1對X2的模型,求解 R^{2} ,再利用scalar來求。在命令窗口輸入ls x1 c x2 回車出現回歸報告,然後複製 R^{2} 的值,保存並關閉窗口,再在命令窗口輸入scalar vif」 「vif=1/(1- R^{2} ( 其中 R^{2} 為剛才複製的值),回車之後打開vif就可以看到這個值了

這個模型vif=4.222474<10,所以不存在明顯的多元線性問題,但是為了練習,我還是做一下嶺回歸

  • 看一下嶺回歸的關係式

看著比較複雜,變一下型

得到

其中 	ilde{x}』	ilde{x} 等於相關矩陣xg

這個就比較直觀,簡潔了。所以我根據這個關係式將嶺回歸分為四部分,分別為建立M的逆矩陣,建立單位矩陣、相關矩陣、 lambda ,建立矩陣 	ilde{x}

  1. 建立矩陣M的逆矩陣:先建立離差的關係,點擊小界面的【Genr】輸入離差的一系列命令「lc1=x1-@mean(x1)」、「lc2=x2-@mean(x2)」,(如果有多個變數的話要再建lc3……) 在命令窗口輸入「matrix(2,2) m」我的只有兩個變數,所以建立的是一個 2	imes2 的矩陣,大家根據自己的模型來變通回車便建立了一個矩陣,然後再給矩陣M填充數據「m(1,1)=(@sumsq(lc1))^0.5」和「m(2,2)=(@sumsq(lc2))^0.5」 根據公式是M的逆矩陣,所以建立一個矩陣mni,輸入命令「matrix(2,2)mni」 「mni=@inverse(m)」這樣M的逆矩陣就建好了。
  2. 建立單位陣:這個比較簡單,有幾個變數就建幾乘幾的矩陣,輸入命令"matrix(2,2)dw"

然後對角元變為1就可以,具體為單擊打開文件在裡面點擊輸入工具【Edit+/-】,交叉輸入「1」

建立相關矩陣:輸入命令「matrix(2,2)xg」,這時候是建立相關矩陣的文件,需要接下來的操作為其賦值。

有點繁瑣,先分別點擊大界面的菜單欄裡面的功能【Quick】—【Group Statistics】—【Correlations】打開「List」界面;然後輸入「x1 x2」(有幾個變數輸入幾個)點擊【OK】。這個時候會出現x1 x2兩個變數的相關係數

然後把數據複製到矩陣xg中就可以了(記得每次輸入不了數據就點擊【Edit+/-】在輸入狀態裡面粘貼內容

3.建立 lambda :命令區里輸入「data lmd」,按「Enter」鍵進入數據輸入界面,輸入「0.00~0.09」一共10個數據,即賦予「λ」十個數字。

4.建立矩陣 	ilde{x} :點擊小界面的【Genr】輸入標準的一系列命令「bz1=1/m(1,1)*lc1(複製這一命令為了接下來的方便)」,點擊【OK】之後再點擊【Genr】,粘貼剛剛複製的內容修改成「bz2=1/m(2,2)*lc2」,點擊【OK】就可以建立了「bz1 bz2」的文件,然後將數據再粘到矩陣bz中。

在輸入命令去裡面輸入「matrix(36,2)bz」,就是建立36個數據和兩個解釋變數的標準矩陣;按「Enter」鍵進入下一行輸入「data bz1 bz2」叫出兩個序列合在一起的文件;在可輸入狀態下,全選數據右擊進行複製,將數據粘貼在矩陣之中(記得每次輸入不了數據就點擊【Edit+/-】在輸入狀態裡面粘貼內容)。

然後將矩陣轉置,輸入「matrix(2,36)bzt」;然後輸入「bzt=@transpose(bz)」,這是對「bz」的轉置。

這樣,我們前期的數據就整理完了,接下來就需要大家仔細一點了

  • 做到這一步,說明你上邊的步驟都已經做完了,那麼開始進行下一步,但是在此之前你必須保證上邊步驟的正確性。
  • 我們上面將關係式的數據都輸入進了電腦,而在嶺回歸中,我們需要將不同的 lambda 值帶入到公式,那麼我們需要寫兩個程序來讓計算機替我們來做。

依次在大界面的菜單欄裡面點擊【File】—【New】—【Program】,建立運行程序。

在運行界面輸入「for !i = 1 to 10」,就是循環10個兩維向量,一定要注意空格;

下一行輸入「vector(2)b!i」,「2」代表著二維向量;

接一行輸入「b!i=mni*@inverse(xg+lmd(!i)*dw)*bzt*y

接下來輸入「next」 注意:輸入的時候沒有空格,但是需要注意括弧的使用,不能多也不能少,都會影響數據的結果。

然後按上面的【Save】把這些保存到電腦裡面,然後按【Run】運行下命令,檢查程序命令是不是正確的。如果命令有錯誤,就會出現提示框,告訴你哪行命令有誤,檢查修改後再次保存和運行。一般命令錯誤就出現在空格和標點、括弧的問題上,細心點就可以了。

  • 然後建立「xs」的文件,輸入命令「matrix(10,2)xs」,也可以按照自己的來命名;然後再次打開【Program】,依次輸入「for !i = 1 to 10」「for !i = 1 to 2」「xs(!i,!j)=b!i(!j)」「next」「next」然後再按【Save】把這些保存到電腦裡面,然後按【Run】運行下命令檢查程序命令是不是正確的,和上面的一致的。

  • 當你的 lambda 取值為0的時候求出來的值和回歸報告中的值相同時,說明你做的是正確的,如果不正確,停下來查找錯誤,不要一錯再錯,直接上圖!

  • 當運行完上面的兩個程序之後,我們就得到了嶺回歸的數據,但是我們要把他們都找出來。在命令區輸入命令「data bt1 bt2」,叫出綜合文件,然後把「xs」文件裡面的數據都複製到打開的文件裡面。然後輸入命令「scat lmd bt1 bt2」,這個就是輸出以兩個變數為依據和「λ」的嶺跡圖,可以清楚看到「bt1 bt2」和「lmd」( lambda )的運動軌跡

之後根據個人情況再分析嶺回歸圖像,在這個圖中,我取 lambda 值為0.06,然後找到對應的兩個 eta 值,分別再xs矩陣中的第7行第一列和第二列

然後根據公式求出 eta_{0} 值,繼續輸入命令,

scalar bt0」 回車之後繼續輸入

bt0=@mean(y)-xs(7,1)*@mean(x1)-xs(7,2)*@mean(x2)

這樣,我們的嶺回歸模型就基本上建立出來了

  • 但是一個模型的好壞卻不知道,因此我們需要對這個新的模型進行檢驗
  • 【Genr】中輸入e=(y)-(bt0)-xs(7,1)*(x1)-xs(7,2)*(x2) 其中bt0為 eta_{0} 的值,xs(7,1)為 eta_{1} 的值,xs(7,2)為 eta_{2} 的值(大家選取的 lambda 值可能不盡相同,所以根據自己的情況來確定)

  • 然後在命令窗口輸入"scalar ccpfh"
  • "ccpfh=@sumsq(e)"這樣就求出了殘差平方和

與最小二乘法下的殘差平方和做比較

一般看來前後殘差平方和的變化程度如果不超過一定範圍就認為嶺回歸是好的,畢竟即使你多重共線性問題處理的再好,如果擬合不好的化你也不能說你的模型可以!

如果有啥問題歡迎指正!!!


大家要注意那個 lambda 的取值,第一個數為0.00,從第二個數開始為0.01、0.02……我一開始忽略了這個小細節,記得根據圖確定取值後,查表格的時候一定要對應正確!


補充一下,最後那個可以直接求誤差率,求誤差率公式為

推薦閱讀:

使用eviews做單位根檢驗時,有單位根,需要差分,怎樣進行差分,又怎樣通過差分後的數據進行下一步分析呢?
二值因變數可以用 ols 回歸,然後消除異方差進行 t,F 檢驗么?
計量結果和我想要講的故事不一樣怎麼辦?

TAG:EViews |