量化交易平臺Quantopian講座(8)——多元線性回歸

上文介紹了簡單的一元線性回歸,再進一步將自變量擴展到多維,就是今天這邊介紹的重點——多元線性回歸。例如假設因變量Y與自變量X1,...,Xk之間存在線性關系:

多元線性關系

注:其中?表示誤差項
在金融中,也經常會寫成以下形式,這就是我們常說的alpha(超額收益)beta(風險收益)的由來
金融常見寫法

回歸的原理與一元線性回歸類似,需要找到最優的擬合平面(超平面),同樣還是需要使用最小二乘法,使得平方誤差值最小。一旦得到了回歸系數(既各β系數),我們就可以通過該模型對于X的新觀測值進行Y值預測了,每個βj告訴我們如果其他系數保持不變的情況下,Y會隨著其變化的程度。
首先,我們先構造一個已知的線性模型Y=X1+X2,其中X2我們通過在平方拋物線加上X1得到,所以可以線性模型也可寫為Y=2X1+X1^2:
示例代碼

繪制圖形

有了原始數據后,我們就可以使用statsmodels對其進行線性回歸了
示例代碼

最終得到的線性模型為:
線性回歸結果

可以看到這里模型中X1前的系數是1,而沒有考慮X2=X^2+X1,這是因為在回歸過程中是元素是被分割開來處理的。

多元線性回歸示例

在真實的股票分析過程中,也有類似的情況,例如對兩只股票數據進行線性回歸,可能會得到很高的β值,但是如果我們再引入一只第三方股票(例如標普500ETF),可能才能發現前兩只股票的關聯都是源于與這只基準股票,通過這種方法,可以更為準確地衡量兩只股票的顯著性。
第一步,我們先獲取兩只股票(AT&T與Fiserv)與標普500ETF(SPY)的價格數據,并對AT&T與Fiserv進行一輪線性回歸


第二步,再引入標普500ETF的數據,將其作為另一個自變量引入回歸過程
引入500ETF數據

得到回歸線后,緊接著的一個問題就是如何對其進行驗證,我們先采用一個最直觀的辦法——將自變量、因變量預測值繪制為圖表,可以過濾一些明顯存在的問題。
示例代碼

繪制圖表

注:黃色為預測值,藍色為AT&T的真實價格
當然,也可以使用更為專業的統計學分析進行深入的驗證與分析,summary()函數提供了多元線性回歸的一些統計學數據。
指標1

注:OLS表示使用的為最小二乘法
R-squared/Adj. R-squared 指標表示回歸線對數據的擬合程度
F-statistic/Prob (F-statistic) 表示模型是否能顯著預測因變量的變化

指標2

const代表常量(α),x1標識自變量前系數(β1),x2標識自變量前系數(β2)
得到的回歸線為Y=10.8489 - 0.1936X1 + 0.1836X2

模型假設

如上這些統計學指標是否有效,取決于如下的一些假設(與上篇文章中一元線性回歸的假設一致):

  • 自變量不是隨機的
  • 誤差項的方差在觀測集內為常量(這條對于評估擬合的好壞程度至關重要)
  • 誤差項不是自相關的,杜賓-沃森統計用于檢測自相關性,如果結果接近于2,那么則不存在自相關。
  • 誤差項服從正態分布。如果這個條件不滿足,則有些統計則無法使用,如F檢驗。
    除此之外,多元線性回歸模型還需要一個額外的假設:
  • 自變量間不存在嚴格線性關系,否則就會出現相同的線性方程有為多種表現方式的情況,從而無法計算出唯一的β系數。

模型選擇

如何為因變量找到最合適的模型,是我們關注的究極目的。引入太多的自變量,可能會導致過度擬合,但如果自變量過少,擬合效果又會太差。目前業內最為主流的做法是逐步回歸法。前向逐步回歸從一個“空模型”起步,對每個獨立的自變量進行檢驗,從中選擇使得模型最優的一個,通常使用AIC或BIC進行衡量(越小越好)。然后之后每步從剩下的自變量中選出一個增加到模型中,使用線性檢驗該自變量組合,并通過AIC與BIC找到最優的一個選擇,這樣最終就能得到一個最優的模型。這種方法也有其局限性,如果特定的自變量在算法執行的前段就被剔除出算法,該方法可能會找不到理論上的最優模型,所以在現實使用中,逐步回歸法還是需要結合人為的判斷。

模型選擇示例(自變量間存在嚴格線性關系)

首先我們手工構建一個包含4個自變量的線性模型:

手工構建的線性方程

為自變量生成對應的序列數據,各自變量間都有一定的關系,但需要注意的是對于X4變量,這里直接將其賦值為X1的數據的5倍(嚴格線性關系)
示例代碼

自變量圖示

我們使用statsmodels直接對其進行多元線性回歸,
示例代碼

注:可以看到結果中Beta2與Beta3擬合還是非常準確的,但是Beta1和Beta4則存在較大差異
由此可見,自變量間的嚴格線性關系會導致回歸系數的不確定(逐步回歸法也無法規避該問題)在這種情況下,就應該人為將X4剔除。
原理也很容易理解,因為如果X1與X4間存在嚴格線性關系(如X1=X2),那么線性方程就可以轉化出無數的可能性(Y=X1+X2=0.5X1+1.5X2=1.5X1+0.5X2)。
還有很多方式去檢查模型與自變量的優劣,這部分會在之后的文章中再深入介紹。
本篇就到這里,感謝閱讀,歡迎訂閱:)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容