怎麼在不減少變數下消除多重共線性?

初學計量經濟學。我想在模型中引入進口貿易量,可是進口貿易量和可支配收入有很強的多重共線性。單獨這兩個變數都能擬合得很好,t值也很大。


恰好前段時間跟一個統計背景的同事爭論過這個問題,基本上,只有一個辦法:增大樣本量。

多重共線性是一個小樣本條件下比較棘手的問題,我們知道在線性回歸的情況下,係數估計的方差為:

多重共線性反映在最後一項上,也就是說是的係數的方差變大了。

注意多重共線性並不意味著假設檢驗的完全失效,實際上,如果原假設為真,我們的假設檢驗不會錯,size永遠是對的,或者說犯第一類錯誤的概率總是能控制的;但是如果我們的原假設為假,多重共線性導致power大大降低,所以很容易犯第二類錯誤。

翻譯成人話就是,多重共線性會使得你更容易得到不顯著的結果。另外還有一個推論就是,如果你得到了顯著的結果,也就不用去管什麼多重共線性的問題了。這也就是為什麼我個人感覺審稿人拿多重共線性說事都是耍流氓:拿去審的稿件基本上不會不顯著,如果人家的結果顯著了還懷疑多重共線性的話,只能說審稿人自己統計沒學好。

為了說明這一點,我們做個小模擬看看:

program drop _all
program define test_multi
drop _all
set obs 30
gen x1=rlogistic()
gen x2=10*x1+rnormal()
gen x3=3*x1+3*x2+rnormal()
gen y=x1+x2+(rchi2(1)-1)
* run the desired command
reg y x1 x2 x3
end

clear
simulate _b _se, reps(10000): test_multi
gen test1=abs(_b_x1)&>1.96*_se_x1
gen test2=abs(_b_x2)&>1.96*_se_x2
gen test3=abs(_b_x3)&>1.96*_se_x3
sum test1 test2 test3

下面是一萬次模擬的結果:

注意x1 和x2真實係數都為1,x3的真實係數為0,三個變數都是高度共線性的。前兩個係數反映了power,最後一個反映了size,可以看到size基本上是對的(0.058約等於0.05,由於我的殘差不是正態的且樣本量只有30,偏差主要來自於非正態的小樣本偏誤),但是大大影響了power(x1的拒絕率只有0.08,意味著如果存在多重共線性,跑100次回歸只有8次得到了顯著的結果)。

如何解決呢?如果我們把樣本量擴大到,比如說,500,我們得到了如下結果:

首先,由於樣本量增大了,所以x3的假設檢驗結果也更「對」了,更接近於0.05;其次,增大樣本量大大提高了x1 x2的假設檢驗的power。如果樣本量增大到1000呢?

所以答案也就呼之欲出了,為了解決多重共線性,辦法只有一個:增大樣本

儘管題主排除了剔除變數這個選項,但是我還是不得不說一下為什麼不能剔除變數。道理很簡單,因為經濟學關注的是係數,如果把x2剔除了,那麼就會導致x1的估計大大的向上偏誤,即大大高估了x1的影響力,這是比多重共線性更加難以讓人接受的情況。所以任何以剔除變數為手段的解決多重共線性的方法,在經濟學裡都是不被接受的。

當然,如果你不能增大樣本,結果又不顯著的話,那隻能祝你good luck了。


我們看一下經典教科書對多重共線性這個問題是怎麼說的,讓我們翻開伍德里奇的《計量經濟學導論》,翻到第3章《多元回歸分析:估計》。

假設我們現在要研究自變數X對因變數Y的影響,問題是要不要控制另一個變數A。書中告訴我們,如果A對Y有影響,且A和X相關,那麼就要控制A,否則結果有偏。書中又告訴我們,回歸係數的方差和X與A的相關性有關,相關性越大,方差越大。所以說,正是因為相關才需要控制,但如果相關太強,結果的顯著性就不好,這叫多重共線性multicollinearity。可見,這裡其實有一點問題,本來多元回歸的自變數之間相關是正常事情,但有時候又說相關不正常。所以書中說:「多重共線性的問題實際上就沒有被很好地定義。」(如果完全相關就違背了多元回歸的基本假設,這裡說的都是不完全相關。)

不正常的相關只有兩種情況。一,設錯了模型,X和A兩個變數實際上包含了幾乎一樣的信息,這種情況應該重新正確設定變數。二,不好的控制bad control,X通過A起作用,如果希望把這部分也包括在X的回歸係數中,那就不應該控制A。

一般情況下,所謂多重共線性並不是什麼大問題。書中說:「小樣本容量也能導致很大的抽樣方差。對樣本中自變數間出現高度相關的擔心,實際上無異於對小樣本容量的擔心。威斯康星大學著名的計量經濟學家阿瑟·戈德伯格Arthur Goldberger,針對計量經濟學家對多重共線性的困擾,(略帶諷刺意味地)創造了微數缺測性micronumerosity這個術語,並定義為小樣本容量問題。」所以書中又說,要減小方差,只有搜集更多的樣本。

以下進入故事環節。我開始讀碩士沒多久,我們院搞的論文競賽中,一個學生做的多元回歸中有一長條自變數,於是教我們高級計量課的老師質疑會有多重共線性。這位老師是早稻田的博士,所以可以認為他是懂計量的,這裡確實可能會有上面說的第一種不正常情形。但是我們級的一個同學就記住了,以後每次有人做報告,他都會提問,你這個會不會相關啊,會不會有多重共線性啊。他認為,只要相關就是多重共線性。他一本正經的提問還真唬住了不少人,包括老師在內。我當然也沒有想到這裡面有什麼問題。到二年級下學期,專業碩士要畢業了,這個同學指導我的一個室友寫畢業論文,說:「你要注意你回歸的自變數之間不能相關。」後來我說相關正常,我這個室友於是很苦惱:「你怎麼和某某說的完全相反?」我們於是也就糊弄過去了,說我們都認為不能太相關。但後來我到上財讀博士之後回想起來才知道我這位同學根本不懂計量。


  • 多重共線性的教科書定義是回歸係數的標準誤放大

@慧航 的回答解決了這個技術層面的問題。但是,幾乎所有教科書都有一個共同盲點——

  • 加入另外的自變數,原回歸係數的內涵已經改變,總體參數相應改變

題主的例子,「控制可支配收入不變,進口貿易量提升一個單位,因變數提升多少個單位」,其內涵與「進口貿易量提升一個單位、因變數提升多少」完全不同。我的課件提供了更具戲劇性的示例:「控制家庭總收入不不變,丈夫收入提升一個單位」=「控制家庭總收入不變,妻子收入減少一個單位」=「妻子收入減少一個單位,丈夫收入增加一個單位」,課件特別給出一個 quiz 自測是否真的看懂,這裡就不劇透。完整多圖詳細內容首發答在知乎問題:加入某個控制變數後原解釋變數不顯著了是什麼原因?

  • 如果不關心回歸係數,只關心預測或者R^2

曾經作個一個偏最小二乘回歸(Partial least squares regression)的培訓。PLS 適用於自變數很多甚至比樣本量還多的回歸,這種時候只關心預測不關心任何回歸係數,化學中比較常用。PLS 與 PCA(主成份分析)有概念上的對稱性。我主張,用 PCA 然後把主成份 {{P_j} } 按 cov(P_j, Y) 從大到小排隊捨棄其中極小的成份,在實際應用中即有 PLS 的效果。通常文獻中的 PCA 回歸,是按 var(P_j) 從大到小排隊,沒有體現 Y 的信息。


「多重共線性 (Multicollinearity)」 描述的是 統計總體(population)的特徵,不是樣本(sample) 的特徵, 是由隱含的數據生成過程(underlying data generating process)所決定的,因此不存在「消除」這一說法,因為對於frequentist 來說,DGP是固定不可改變的。

或者說題主的問法有問題,正確的問法應該是「如何在有限樣本中減弱多重共線性對參數估計的影響」。


做嶺回歸吧。

嶺回歸是一種專用於共線性數據分析的有偏估計回歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分信息、降低精度為代價,獲得回歸係數更為符合實際、更可靠的回歸方法。

嶺回歸的原理較為複雜。根據高斯馬爾科夫定理,多重相關性並不影響最小二乘法估計量的無偏性和最小方差性,但是,雖然最小二乘估計量在所有線性估計量中是方差最小的,但是這個方差都不一定小,而實際上可以找到一個有偏估計量,這個估計量雖然有較小的偏差,但它的精度卻能夠大大高於無偏的估計量。嶺回歸分析就是根據這個原理,通過在正規方程中引入有偏常數求的回歸估計量的。

缺點:通常嶺回歸方程的R平方值會稍低於普通回歸分析,但回歸係數的顯著性往往明顯高於普通回歸,在存在共線性問題的研究中有較大的實用價值。

Mark1:不能理解整個問題怎麼會被歪成廣義多重共線性問題的討論上了,一般理解上的多重共線性問題不該是兩個變數相關性到0.8左右,常規方法已經估計不準了需要採用什麼非常規辦法嘛

Mark2:憑經驗來說,題主的問題不應該是問題。很大可能是所有變數上的波動性都被龐大基數吸收掉了,所以建議換成環比or同比增速,或者取對數來算。

Mark3:此處是一句真正意義上題外話:宏觀我就沒有見到直接把幾個變數直接做回歸的,所以問題下面的回答應視作題主是在做計量方面的練習而不是在寫正式的學術文章。


多重共線性本身不是問題。通常來說多重共線性的解決辦法主要有以下幾種:1.什麼都不做,這是最好的辦法~如果多重共線性不影響你核心變數的顯著度。2.做嶺回歸,嶺回歸會有懲罰,估計量有偏,實際應用中貌似用的比較少。3.改寫模型,做個差分啊,ln啊啥的,把絕對值變成了增長率。4.增加樣本量。多重共線性最大的問題不就是方差會大啊,因為多重共線性會使方差公式中那個分母Rij方變大,那增加樣本量使分母中xi-x拔變大,抵消了方差變大的影響。


多重共線性是什麼?能吃嗎?

seriously,這倆都是控制變數的話不用看他們的t值,關注你的variable of interest就好。以及,與其關注multicollinearity不如關注一下你的因變數是不是平穩吧


現在的回答都不是做宏觀的人,大概看不出問題:我猜你直接用了原數據沒有detrend。可支配收入和貿易顯然都是和經濟foundamental相關的,而且肯定有persistency。

不detrend的結果一般就是單獨回歸R方大,自變數相關高,然後跑出來不顯著,你誤以為有多重共線性。。。然後我也可以保證,這樣做出來的結果沒法和文獻對照。

Ridge以及LASSO能不能解決多重共線?能緩解。一個是二次cost一個是線性cost。然而這不是問題關鍵。

你要是聽了主成分分析的那些人,直接對原數據降維,保證出來的是同一個trend。


用R語言的逐步回歸,step函數,它會幫你的模型找到AIC最小的自變數組合情況,可以減輕多重共線性導致的過擬合問題。


提取變數的主成分


除了高票大神的答案,我想補充一個Prof. PAUL ALLISON 寫的關於什麼時候多重共線性不是問題的文章:

When Can You Safely Ignore Multicollinearity?

你什麼時候可以安全的無視多重共線性?

Multicollinearity is a common problem when estimating linear or generalized linear models, including logistic regression and Cox regression. It occurs when there are high correlations among predictor variables, leading to unreliable and unstable estimates of regression coefficients. Most data analysts know that multicollinearity is not a good thing. But many do not realize that there are several situations in which multicollinearity can be safely ignored.

Before examining those situations, let"s first consider the most widely-used diagnostic for multicollinearity, the variance inflation factor (VIF). The VIF may be calculated for each predictor by doing a linear regression of that predictor on all the other predictors, and then obtaining the R^2 from that regression. The VIF is just 1/(1-R^2).

It"s called the variance inflation factor because it estimates how much the variance of a coefficient is 「inflated」 because of linear dependence with other predictors. Thus, a VIF of 1.8 tells us that the variance (the square of the standard error) of a particular coefficient is 80% larger than it would be if that predictor was completely uncorrelated with all the other predictors.

The VIF has a lower bound of 1 but no upper bound. Authorities differ on how high the VIF has to be to constitute a problem. Personally, I tend to get concerned when a VIF is greater than 2.50, which corresponds to an R^2 of .60 with the other variables.

Regardless of your criterion for what constitutes a high VIF, there are at least three situations in which a high VIF is not a problem and can be safely ignored:

1. The variables with high VIFs are control variables, and the variables of interest do not have high VIFs.

有高VIF的變數只是控制變數,而所關注的變數並沒有高VIF。

Here"s the thing about multicollinearity: it"s only a problem for the variables that are collinear. It increases the standard errors of their coefficients, and it may make those coefficients unstable in several ways. But so long as the collinear variables are only used as control variables, and they are not collinear with your variables of interest, there』s no problem. The coefficients of the variables of interest are not affected, and the performance of the control variables as controls is not impaired.

Here』s an example from some of my own work: the sample consists of U.S. colleges, the dependent variable is graduation rate, and the variable of interest is an indicator (dummy) for public vs. private. Two control variables are average SAT scores and average ACT scores for entering freshmen. These two variables have a correlation above .9, which corresponds to VIFs of at least 5.26 for each of them. But the VIF for the public/private indicator is only 1.04. So there』s no problem to be concerned about, and no need to delete one or the other of the two controls.

2. The high VIFs are caused by the inclusion of powers or products of other variables.

高VIF是由冪次項或者相互作用項引起的(比如二次項x^2和相互作用項xz)

If you specify a regression model with both x and x^2, there』s a good chance that those two variables will be highly correlated. Similarly, if your model has x, z, and xz, both x and z are likely to be highly correlated with their product. This is not something to be concerned about, however, because the p-value for xz is not affected by the multicollinearity. This is easily demonstrated: you can greatly reduce the correlations by 「centering」 the variables (i.e., subtracting their means) before creating the powers or the products. But the p-value for x^2 or for xz will be exactly the same, regardless of whether or not you center. And all the results for the other variables (including the R^2 but not including the lower-order terms) will be the same in either case. So the multicollinearity has no adverse consequences.

3. The variables with high VIFs are indicator (dummy) variables that represent a categorical variable with three or more categories.

高VIF的變數是有著三個或以上分類的啞變數

If the proportion of cases in the reference category is small, the indicator variables will necessarily have high VIFs, even if the categorical variable is not associated with other variables in the regression model.

Suppose, for example, that a marital status variable has three categories: currently married, never married, and formerly married. You choose formerly married as the reference category, with indicator variables for the other two. What happens is that the correlation between those two indicators gets more negative as the fraction of people in the reference category gets smaller. For example, if 45 percent of people are never married, 45 percent are married, and 10 percent are formerly married, the VIFs for the married and never-married indicators will be at least 3.0.

Is this a problem? Well, it does mean that p-values for the indicator variables may be high. But the overall test that all indicators have coefficients of zero is unaffected by the high VIFs. And nothing else in the regression is affected. If you really want to avoid the high VIFs, just choose a reference category with a larger fraction of the cases. That may be desirable in order to avoid situations where none of the individual indicators is statistically significant even though the overall set of indicators is significant.

有關減弱多重共線性還可以參考以下網站,非常詳細:

Lesson 12: Multicollinearity Other Regression Pitfalls


收入 貿易量 都是非平穩序列,你的問題主要是時間序列的問題吧


第一反應就是主成分分析PCA


消除這個說法可能不太對,共線性不是有無的問題,而是強弱的問題。可能的解決方案:增加樣本or嶺回歸。


不減少變數那只有正交化變數了。

鑒於你只有兩個變數,比較雞賊的做法是保留其中一個變數a,然後用另一個變數b對a作投影后取其殘差作為b的變換值,想辦法賦予該殘差一個「經濟意義」以自圓其說。


計量方面不太了解,我覺得你可以考慮先考察一下參數的平穩性,然後考慮一下協整關係,因為你這兩個自變數我感覺應該不是平穩的。,不過解決多重共線性帶來的參數不穩定性的一種可行方法是用ridge regression(lasso應該也可以) ,原理類似於logistic在退化時(樣本linear seperable)加入regularization 項可以得到穩定解。理論上來說不存在完全的多重共線性,一般都是變數之間有很強的多重共線性導致自變數矩陣有很強的singularity,在求inverae的情況下會不穩定,導致參數的方差很大。


學計算機的來強答一下。

既然你提出這個問題,那麼你首先假設沒有多重共線性的模型是存在的。

那麼這就是個模型選擇的問題了。

模型選擇的經典思路是結構風險最小化,也就是:

min f=frac{1}{n} sum_{I=1}^{n} L(V, f(x_i))+lambda |f|

其中等號右側的加號左側是偏差bias,右邊是方差variance。

以簡單的線性回歸模型看,模型選擇問題進一步簡化成變數選擇問題。

y=a_1 x_1 ... a_n x_n

無論採用嶺回歸還是svm,其特點在方差那一部分的範數選擇2或著更高階範數時就是你所說的不減少變臉個數了。

但是,某些變數係數極小,另一些極大,這和減少變數有啥區別呢?

於是改成1範數,就有了lasso(請按西班牙/法語讀音,重音在後一音節),

直接把有些係數變成0。

還不行,那就是窮舉唄,因為變數選擇是npc問題,也就是除了窮舉沒別的法子能得到結果。以上那些扯蛋的方法都不過是將離散問題連續化便於計算機求解而已。


可以用嶺回歸,加個L2正則只會壓縮係數不會刪除變數,R的MASS包有。印象中直接用梯度下降這類不用矩陣轉置的數值方法來求似乎也可以。

上面某答案說的逐步回歸是不行,會減少變數。


很多體現規模的指標之間都有很高的相關係數,可以試試把這些變數都換成人均值再看一下相關係數矩陣。


增大樣本容量;

換數據;

檢驗模型其它假設;

Ols不行的話,比較看看James-Stein , pre-test estimator等等;

更好的模型設定;

如果出現了共線性說明沒有必要把所有變數納入其中


推薦閱讀:

Deaton 獲得諾獎是否意味著 Banerjee 和 Duflo 等人關於貧困的研究不受認可?
學習計量經濟學的學生需要學習編程嗎?如果需要,要學習到什麼程度,有什麼好的建議嗎?

TAG:經濟學 | 計量經濟學 |