回歸

返回歸因:多重共線性的可能補救措施

  • February 26, 2016

假設我有以下回歸設置,用於投資組合回報歸因:

$ R = 1*\beta(1) + A*\beta(2) + B*\beta(3) + C*\beta(4) + \epsilon $

其中A是國家的虛擬矩陣,B是行業的虛擬矩陣,C是因子暴露矩陣,1是1的向量

正如您在此設置中看到的那樣,A 和 B 之間存在多重共線性。 (AB) 的秩 < (A) 的秩 + (B) 的秩。在 Matlab 程式碼中:

rank([dummyvar(ceil(abs(rand(20,1))*5)'),dummyvar(ceil(abs(rand(20,1))*4)')])

我如何才能在不從 A 或 B 矩陣中刪除其中一列的情況下計算所有這些 beta,通常是為了解決這個問題。我知道有一個技巧可以解決這個問題,但我不記得它是如何完成的。

要解決多重共線性問題,您基本上可以執行以下操作(來源,作者撰寫了關於多重共線性診斷的博士論文):

  1. 獲取更多數據
  2. 刪除一個變數
  3. 組合變數(例如,使用偏最小二乘回歸或主成分回歸)和
  4. 執行嶺回歸,這會產生有偏差的結果,但會減少估計的變異數。

我不知道 1. 是否可行,但這始終是一個好主意(數據科學的學習之一是獲得更多更好的數據比更複雜的算法更可取)。

關於 2. 你說你不想要那個。

  1. 似乎也不實用,因為新變數將不再可解釋。

所以 4. 似乎是最好的候選人。在數學上,這也稱為Tikhonov 正則化。在 matlab 中,一個好的起點似乎是這個: http:
//www.mathworks.com/help/stats/ridge-regression.html

命令是ridge(),另見這裡: http:

//www.mathworks.com/help/stats/ridge.html

您可以使用約束回歸。這將完全解決您的問題。這是解決這個問題的行業標準方法。

您將需要為您擁有的每個虛擬變數組設置一個約束,以使該組的係數總和為 0。在這種情況下,對於 A 和 B。您可以不受約束地離開 C(實際上您應該! )

如果共線性來自 C(因子)。然後這是另一個問題,其他答案中的建議非常有用。

只要您有 2 個以上的組,或者一個組和相交,您就需要這樣做。作為一種風險建模技術,它是相當標準的。例如,請參閱 MSCI 如何在其美國模型 msci.com/documents/10199/ed6e42a3-c1fa-4430-89ba-efd5a5b52558 中處理它(第 1 頁中間)

附帶說明一下,您還應該考慮使用穩健的回歸技術。

如果您使用的是 Matlab(從您的程式碼片段中可以看出),您可以在這個出色的教程中了解約束和穩健回歸:http: //www.mathworks.com/matlabcentral/fileexchange/8553-optimization-tips-and-tricks

並使用以下函式: http: //www.mathworks.com/matlabcentral/fileexchange/13835-lse 雖然Matlab也有一些回歸函式但是IMO比較有限。

引用自:https://quant.stackexchange.com/questions/24431