為什么要進行因子正交化處理?
發(fā)布時間:2018-08-14 | 來源: 川總寫量化
作者:石川
摘要:選股多因子模型中常進行因子正交化處理。如果因子之間不滿足正交性,則它們會相互影響各自的回歸系數(shù),這可能造成回歸系數(shù)過大的估計誤差,對因子的評價產(chǎn)生負面影響。
1 多因子模型求解
在選股多因子模型中,人們常提到的一個概念是因子正交化處理。本文就從多因子截面回歸求解的角度來簡單說說為什么我們喜歡相互正交的因子,以及如果因子之間不正交對回歸系數(shù)會有什么影響。一個多因子模型可以寫成如下的形式:
其中 y 是 N × 1 階股票下一期的收益率向量,X 為 N × K 階當期的因子暴露矩陣,b 為 K × 1 階待通過回歸求解得到的因子收益率向量,ε 為 N × 1 階殘差向量。假設?X?滿足列滿秩,則上述模型的 OLS(ordinary least squares)解為:
需要注意的是,在上面這個模型以及 b 的表達式中,因子向量 X 已經(jīng)包括了所有的 regressors,因此回歸模型右側沒有額外的截距項。這意味著,如果我們假設截距項也是一個因子,則它對應的 N × 1 階向量 [1,1,…,1]^T 已經(jīng)作為 X 的某一列(通常是第一列)存在于 X 之中了;如果我們假設截距項不是一個因子,則 X 中沒有 [1,1,…,1]^T 這一列。
在 Barra 的多因子模型 CNE5 中考慮了國家因子,所有個股在該因子上的暴露都是 1,因此它的作用就相當于一個截距因子;[1,1,…,1]^T 這個向量在 Barra 模型中正是 X 的第一列。另外,對于我們最熟悉的 simple regression model,它的右側只有一個截距和一個解釋變量:
按照上述說明,該模型對應的矩陣 X 包括兩列:一列對應截距,一列對應真正的解釋變量 x:
從 b 的表達式來看,它和 (X^T)X 有關。當 X 的各列(即回歸模型中的不同解釋變量,或我們研究問題中的不同因子暴露向量)之間不正交時,則在計算 (X^T)X 乃至最終的 b 時,X 不同列之間是相互影響的,而這種影響不是什么好事兒。
2 簡單一元回歸
讓我們從最簡單的一元回歸(simple univariate regression)說起。假設有一元回歸模型 y = bx + ε(模型右側只有一個解釋變量,沒有截距項)。對于兩個同階向量 m 和 n,令 <m, n> 表示它們的內(nèi)積,即 <m, n> = Σ(m_i)(n_i),則該一元回歸模型的 OLS 解為(求解對象就是標量 b):
這個結論非常簡單,但是它十分重要。在上一節(jié)中,我們給出了多元回歸 OLS 求解的表達式:
比較一元回歸模型的標量 b 和多元回歸模型的向量 b 不難發(fā)現(xiàn)如下現(xiàn)象:在多元回歸模型中,如果所有的解釋變量兩兩正交,即 <x_i, x_j> = 0, i ≠ j,則向量 b 中的每一個系數(shù) b_i 恰恰等于:
這是因為 <x_i, x_j> = 0 保證了 (X^T)X 的所有非對角元素都是 0,因此它是一個對角陣。對角陣的逆矩陣就是把該對角陣對角線上的元素都取倒數(shù),所以逆矩陣仍然是對角陣。因此,(X^T)X 的第 i 個對角元素為 1/<x_i, x_i>。另一方面,(X^T)y 是一個 K × 1 向量,它的第 i 個元素是 x_i 和 y 的內(nèi)積,即 <x_i, y>。最終,多元回歸的 b_i 正是 <x_i, y>/<x_i, x_i>。怎么樣?b_i 和一元回歸中的 b 的表達式一模一樣,說明當所有解釋變量相互正交時,不同的因子(即?x_i)對彼此的參數(shù)估計(即 b_i,因子收益率)沒有任何影響。這便是正交的好處。那么,當因子(解釋變量)之間不正交時又會怎樣呢?為了回答這個問題,我們首先來看看回歸的幾何意義。
3 回歸的幾何意義
將 b 的表達式代入回歸模型得到 ε 的表達式,并計算 X 和 ε 的內(nèi)積有
上式說明,OLS 的殘差 ε 和解釋變量 X 正交。來看看這在幾何上意味著什么。首先考慮最簡單的情況,即一元回歸 y = bx + ε(再次提醒,沒有截距項)。它的幾何意義如下圖所示:
這個圖說明,OLS 回歸實際上將 y 垂直投影到(orthogonally projected onto)x 之上,使得 y 和其在 x 上的投影之間的距離(ε 的長度)最短(殘差平方和最?。?。這就是 OLS 的幾何意義。再來看看二元回歸 y = b_1x_1 + b_2x_2 + ε,并首先假設 x_1 和 x_2 之間是正交的。該回歸的幾何意義如下:
對于二元回歸,它的幾何意義是將 y 垂直投影到由 x_1 和 x_2 生成的超平面內(nèi),其投影正如上圖中綠色向量所示。此外,我們可以分別、獨立的將 y 投影到 x_1 和 x_2 上(圖中兩個橘黃色向量)。在本例中,由于 x_1 和 x_2 相互正交(垂直),因此綠色向量恰好等于兩個橘黃色向量之和。這說明當 x_1 和 x_2 正交時,回歸系數(shù) b_i 僅由 x_i 和 y 決定、其他任何解釋變量 x_j (j ≠ i) 對 b_i 均沒有影響。下面來看看 x_1 和 x_2 非正交的情況。該二元回歸的幾何意義如下:
它和前一種情況最大的區(qū)別是,當 x_1 和 x_2 非正交時,y 在由 x_1 和 x_2 生成的超平面內(nèi)的投影不等于 y 分別在 x_1 和 x_2 上的投影之和。在這種情況下,解釋變量之間對各自的回歸系數(shù)有不同的作用,因此 OLS 的回歸系數(shù) b_i 不再等于 <x_i, y>/<x_i, x_i>。非正交 x_i 之間的相互作用如何影響回歸系數(shù) b_i 呢?通過連續(xù)正交化來求解多元線性回歸可以回答這個問題。
4 用正交化過程求解多元回歸
還是拿我們最熟悉的 simple regression model 為例;該模型有兩個解釋變量 —— 截距項和 x。
令 x_0 表示截距項對應的解釋變量,即 x_0 = [1,1,…,1]^T;x_1 表示上式中的解釋變量 x。假設 x_0 和 x_1 非正交(正交的話我們就不用費勁了)。對于簡單回歸模型,回歸系數(shù) a(對應 x_0)和 b(對應 x_1)的解為:
下面就來看看如何通過正交化求解 a 和 b。由于 x_0 和 x_1 非正交,首先需要構造出一組正交向量。令?z_0 = x_0 為其中的一個向量,將 x_1 用 z_0 進行一元回歸(不帶截距)得到的殘差就是和 z_0 互相垂直(正交)的向量,記為 z_1。由一元回歸的性質(zhì)可知:
其中 \bar x 表示 x 的均值,1 表示列向量 [1,1,…,1]^T,即 z_0。So far so good?接下來,注意了:將 y 用上面得到的 z_1 進行一元回歸(不帶截距),得到的回歸系數(shù)就是上述 simple regression model 中解釋變量 x 的回歸系數(shù) b!
怎么樣?我們并沒有直接對該模型求解,而是通過正交化的方式就求出了解釋變量 x_1 的回歸系數(shù) b。反應快的小伙伴也許馬上會問 a 呢?a 是否等于 <z_0, y>/<z_0, z_0> 呢?別急,我們一會兒就聊 a,但是在那之前先來看一個通過連續(xù)正交化求解多元回歸的算法(Hastie et al. 2016):
該算法的核心是通過連續(xù)的正交化計算把一組非兩兩正交的向量 x_i 轉換成一組兩兩正交的向量 z_i,并以此方便的求出最后一個被正交化的解釋變量的多元回歸系數(shù)。雖然它只有三步,但是每一步都值得解讀一下:
1. 第一步是初始化,在所有解釋變量中(如果回歸中有截距項,就把 [1,1,…,1]^T 看做一個解釋變量)任意挑選一個當作 x_0 進行初始化 z_0 = x_0。
2. 第二步是根據(jù)我們自己選定的遞歸順序(任意順序都可以),對 x_1, x_2, …, x_p 依次進行正交化。例如,對 x_j 的正交化處理就是用它和之前已經(jīng)被處理過后的正交向量 z_0, z_1, …, z_{j-1} 逐一獨立一元回歸得到系數(shù) <z_k, x_j>/<z_k, z_k>, k = 0, 1, ..., j - 1,進而用 x_j 減去 (<z_k,?x_j>/<z_k,?z_k>)z_k, k = 0, 1, ..., j - 1 之和,得到的殘差就是最新的正交化向量 z_j。
3. 使用 y 和 z_p 進行一元回歸,得到的系數(shù) <z_p, y>/<z_p, z_p> 正是這個多元回歸 OLS 求解中原始解釋變量 x_p 的回歸系數(shù) b_p。注意,這一結論僅對最后一個(第 p 個)被正交化后的解釋變量成立。換句話說,對于別的解釋變量 j < p,<z_j, y>/<z_j, z_j> 并不是多元回歸中原解釋變量 x_j 的回歸系數(shù)。
看到這里,有的小伙伴可能會問,這個算法確實不錯,但是費了半天勁算出了一大堆相互正交的向量 z_j,但是求解回歸系數(shù)的結論僅對最后一個被正交化的解釋變量成立,這不是坑爹嗎?答案是并不坑爹!這是因為上述算法中的關鍵一點是,正交化這些解釋變量的順序是任意的。我們可以選任何一個來初始化,也可以選任何一個作為最后一個被正交化的解釋變量。無論我們怎么選,上述過程都保證了最后一個被正交化的解釋變量的回歸系數(shù)滿足 b_p = <z_p, y>/<z_p, z_p>。因此,我們只需要依次挑選這些解釋變量作為最后一個被正交化的,就可以通過上述步驟方便的求出它們的回歸系數(shù)。而它所反映出來的本質(zhì)是:
在多元線性回歸中,解釋變量 x_j 的回歸系數(shù)?b_j 等于 x_j 在被其他 x_0, x_1, …, x_{j-1}, x_{j+1}, …, x_p?調(diào)整之后(即正交化,從而排除其他 x_i 對 x_j 的影響)仍能夠對 y 產(chǎn)生的增量貢獻。
這個算法叫作多元回歸的 Gram-Schmidt(格拉姆-施密特)正交化過程。本小節(jié)開始的 simple regression model 已經(jīng)驗證了上述結論。我們使用 x_0 將 x_1 正交化處理得到 z_1,然后用 y?和?z_1 回歸得到的正是 x_1 的回歸系數(shù) b;如果將 x_1 選為 z_0,然后用它正交化?x_0 = [1,1,…,1]^T,就可以方便的求出回歸系數(shù) a。讓我們來好好審視一下這個結論,即:
上式說明,解釋變量 x_p 的回歸系數(shù) b_p 和正交化后的 z_p 的大?。?/span>z_p 自己的內(nèi)積為分母)有關。如果 x_p 和其他解釋變量高度相關(即非常不正交),那么 z_p 就會很小,則會導致 b_p 非常不穩(wěn)定(一點點樣本數(shù)據(jù)的變化都會導致 b_p 的大幅變化)。當 y_i 滿足獨立同分布時,假設它的方差為 σ^2,可以證明回歸系數(shù) b_p 的方差和 z_p 的大小成反比,即 z_p 越小,b_p 的誤差越大:
在多因子模型中,b_p 代表的是因子 p 的收益率。為避免因子收益率的估計非常不穩(wěn)定,要求不同的因子之間盡量滿足正交化。舉例來說,在 Barra 的 CNE5 模型中,非線性規(guī)模因子和規(guī)模因子之間進行了正交化處理;殘差波動率因子和規(guī)模以及 BETA 因子也進行了正交化處理。
在結束本小節(jié)的討論之前,我還想介紹一個有意思也有用的特性。本節(jié)的論述說明我們可以任選一個解釋變量作為最后一個,然后根據(jù)連續(xù)正交化方便的求出它的回歸系數(shù)。這意味著如果我們有 20 個解釋變量,需要進行 20 次上述操作。那么,是否存在什么辦法僅通過進行一次連續(xù)正交化就求出所有的回歸系數(shù) b_j, j = 0, 1, …, p 呢?答案是肯定的。
假設我們按照某給定順序 x_0, x_1, …, x_p 進行了連續(xù)正交化過程,得到了 z_0, z_1, …, z_p,且我們現(xiàn)在知道 b_p = <z_p, y>/<z_p, z_p>。由于 b_p 是解釋變量 x_p 的回歸系數(shù),因此 b_p(x_p) 正是 x_p 所解釋的 y 的部分。如果從 y 中剔除 b_p(x_p),并把得到的 y - b_p(x_p) 用 x_0, x_1, …, x_{p-1} 回歸,則結果就和 x_p 無關了。在這個新的回歸中,x_{p-1} 就變成了最后一個被正交化的解釋變量,其對應的正交向量為 z_{p-1}。因此,x_{p-1} 的回歸系數(shù)就是用新的 y - b_p(x_p) 和 z_{p-1} 回歸的結果:
以此類推,我們可以按照 b_p, b_{p-1}, …, b_0 的倒序求解出多元回歸中所有解釋變量的回歸系數(shù) b_j(Drygas 2011):
最后用本小節(jié)開始的 simple regression model 檢驗一下。我們用上述方法求解截距項的回歸系數(shù) a 看看。根據(jù)定義有 z_0 = 1 并假設已知 b。則根據(jù)上面的表達式可得:
這正是直接求解 simple regression model 得到的回歸系數(shù) a(請往前滾屏比較看看)。
5 一個例子
本節(jié)用一個例子來驗證一下上一節(jié)的各種公式。假設有四個解釋變量 x_0 到 x_3,以及 y:
直接使用回歸系數(shù) b 的表達式求解,則它們的回歸系數(shù)分別為:b_0 = 0.38548073, b_1 = 0.96332683, b_2 = -0.36300685, b_3 = 0.37189391。按照 x_0, x_1, x_2, x_3 的順序進行連續(xù)正交化,得到的正交向量為:
使用 Drygas (2011) 提出的解法按照 b_3, b_2, b_1, b_0 的順序求解各個回歸系數(shù) b_j:
上述公式求出 b_0 = 0.38548073, b_1 = 0.96332683, b_2 = -0.36300685, b_3 = 0.37189391,和使用回歸系數(shù) b 的表達式求解的結果完全一致。另外,我們也可以分別選擇 x_0, x_1, x_2 替換 x_3 作為最后一個被正交化的解釋變量(前三個變量的順序也不重要),并利用 b_p = <z_p, y>/<z_p, z_p> 求解,得出的 b_j 也和上面的完全相同。
6 正交等于不相關?
在我們平常說因子之間正交的時候,另一個常用的詞匯是因子之間“不相關”(這里不相關指的是不同因子的 Pearson 相關系數(shù)為零)。那么“正交”和“不相關”是否等價呢?從定義出發(fā),兩個因子向量 x_1 和 x_2 正交意味著它們的內(nèi)積,即 <x_1, x_2> 為零。而 x_1 和 x_2 的相關系數(shù)為零則意味著 <x_1 – E[x_1]·1, x_2 - E[x_2]·1> 為零,因為在計算相關系數(shù)時,必須先分別減去其均值,這就是個 centering 的過程。由于 <x_1, x_2> 為零不一定意味著 <x_1 – E[x_1]·1,?x_2 - E[x_2]·1> 也為零,因此正交不一定等于不相關。
舉個例子,[4, 2]^T 和 [3, -6]^T 的內(nèi)積為零,這兩個向量正交。而各自減去均值后,[4, 2]^T 和 [3, -6]^T 分別變?yōu)?[1, -1]^T 和 [4.5, -4.5]^T。這兩個新向量在一條直線上、內(nèi)積不為零,因此 [4, 2]^T 和 [3, -6]^T 的相關系數(shù)不為零(事實上,它們的相關系數(shù)等于 1)。從多元回歸求解的角度來說,我們在乎的是他們是否正交,而非 centering 之后的內(nèi)積是否為零(即是否不相關)。
不過對于因子暴露向量來說,因為個股在每個因子上的暴露都經(jīng)過 demean 處理了,所以每個因子向量的均值已經(jīng)是零了(這里考慮的就是簡單等權均值的情況,而不是像 Barra 那種用市值作為權重進行去均值的情況)。從這個意義上說,因子向量之間正交和它們之間不相關等價。
7 結語
本文掰扯了一大堆公式其實就是想說明下面這句話:在多元線性回歸中,解釋變量 x_j 的回歸系數(shù) b_j 等于 x_j?在被其他 x_0, x_1, …, x_{j-1}, x_{j+1}, …, x_p 調(diào)整之后仍能夠對 y 產(chǎn)生的增量貢獻。如果 x_j 和其他解釋變量高度相關,則它的回歸系數(shù) b_j 會有很大的估計誤差。這對于多因子模型中評價因子收益非常不利。
在計算機算法進行多元回歸求解的時候,并不是試圖按照 b 的公式計算 (X^T)X 的逆矩陣,而采用的正是正交化的思路。在正交化的過程中可以非常容易的得到 X 的 QR 分解,其中 Q 是正交陣、R 是上三角陣。這也極大的化簡了回歸系數(shù) b 以及 y 預測值的求解。由于篇幅原因(我也好意思說篇幅……),本文就不給出 QR 分解的具體表達式了,感興趣的讀者請參考 Hastie et al. (2016)。
參考文獻
Drygas, H. (2011). On the relationship between the method of least squares and Gram-Schmidt orthogonalization. Acta et Commentationes Universitatis Tartuensis de Mathematica 15(1), 3 – 13.
Hastie, T., R. Tibshirani, and J. Friedman (2016). The Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2nd Ed. Springer.
免責聲明:入市有風險,投資需謹慎。在任何情況下,本文的內(nèi)容、信息及數(shù)據(jù)或所表述的意見并不構成對任何人的投資建議。在任何情況下,本文作者及所屬機構不對任何人因使用本文的任何內(nèi)容所引致的任何損失負任何責任。除特別說明外,文中圖表均直接或間接來自于相應論文,僅為介紹之用,版權歸原作者和期刊所有。