小結:
(1)時間序列和回歸分析的核心區別在於對數據的假設:回歸分析假設每個樣本數據點都是獨立的;而時間序列則是利用數據之間的相關性進行預測。如:時間序列分析中一個基礎模型就是AR(Auto-Regressive)模型,它利用過去的數據點y(t)、y(t-1)等來預測未來y(t+1)。還有如:移動平均、指數平滑法等。
(2)雖然AR模型(自回歸模型)和線性回歸看上去有很大的相似性。但由於缺失了獨立性,利用線性回歸求解的AR模型參數會是有偏的。但又由於這個解是一致的,所以在實際運用中還是利用線性回歸來近似AR模型。
(3)忽視或假設數據的獨立性很可能會造成模型的失效。金融市場的預測的建模尤其需要注意這一點。
本文會先說明兩者對數據的具體假設差異,再說明AR模型(Autoregressive model 自回模型)為什么雖然看上去像回歸分析,但還是有差別,最后也提到一個常見的混淆兩者后在金融方向可能出現的問題。
一、回歸分析對數據的假設:獨立性
在回歸分析中,我們假設數據是相互獨立的。這種獨立性體現在兩個方面:一方面,自變量(X)是固定的,已被觀測到的值,另一方面,每個因變量(y)的誤差項是獨立同分布,對於線性回歸模型來說,誤差項是獨立同分布的正態分布,並且滿足均值為0,方差恆定。
這種數據的獨立性的具體表現就是:在回歸分析中,數據順序可以任意交換。在建模的時候,你可以隨機選取數據循序進行模型訓練,也可以隨機選取一部分數據進行訓練集和驗證集的拆分。也正因為如此,在驗證集中,每個預測值的誤差都是相對恆定的:不會存在誤差的積累,導致預測准確度越來越低。
二、時間序列對數據的假設:相關性
但對於時間序列分析而言,我們必須假設而且利用數據的相關性。核心的原因是我們沒有其他任何的外部數據,只能利用現有的數據走向來預測未來。因此,我們需要假設每個數據點之間有相關性,並且通過建模找到對應的相關性,利用它去預測未來的數據走向。這也是為什么經典的時間序列分析(ARIMA)會用ACF(自相關系數)和PACF(偏自相關系數)來觀察數據之間的相關性。
時間序列對相關性的假設直接違背了回歸分析的獨立性假設。在多段時間序列預測中,一方面,對於未來預測的自變量可能無法真實的觀察到,另一方面,隨着預測越來越遠,誤差會逐漸積累:你對於長遠未來的預測應該會比近期預測更不確定。因此,時間序列分析需要采用一種完全不同的視角,用不同的模型去進行分析研究。
三、AR模型(自回歸模型)和線性回歸模型的“相似”&區別
時間序列分析中一個基礎模型就是AR(Auto-Regressive)模型。它利用過去的數據點來預測未來。舉例而言,AR(1)模型利用當前時刻的數據點預測未來的值,它們的數學關系可以被表示為:
它的表達形式的確和線性回歸模型非常類似,甚至連一般的AR(n)模型都和線性回歸有很高的相似性。唯一的差別就是等式右邊的自變量(X)變成了過去的因變量(y)。而正是因為這一點微小的差異,導致兩者的解完全不同。在AR模型中,由於模型自變量成為了過去的因變量,使得自變量與過去的誤差之間有相關性。而這種相關性使得利用線性模型得到的AR模型(自回歸模型)的解會是有偏估計(biased)。
對於上述結論的實際證明需要引入過多的概念。在此我們只對AR(1)模型作為一個特例來分析。不失一般性,我們可以通過平移數據將AR(1)模型表示成如下的形式:
對於這類模型,線性回歸會給出以下的估計值:
對於一般的線性回歸模型而言,由於所有的自變量都會被視為已經觀測到的真實值。所以當我們取均值的時候,我們可以把分母當作已知,通過過去觀測值和未來誤差無關的性質得到無偏的結論。
但是在時間序列下就無法得到無偏的興致了,因為分子分母會互相干擾。因為自變量無法被視為已知,而且未來的觀察值會與過去的誤差項相互聯系。因此,相關性使得利用線性模型得到的AR模型的解會是有偏估計(biased)。
更直觀的數據模擬也可以說明這個問題[1]。如下圖所示,左邊是當參數真是值為0.9時通過數據模擬作出的平均值,可以看到真實值(黑線)和模擬值(紅線)有一定的差距,但隨着數據量的增大,差距在逐漸的縮小。右邊是真正參數不同的時候,偏差的大小。可以看到,它們的誤差一直存在,但是隨着數據量的增加,誤差逐漸變小。
事實上,我們會用線性回歸模型去近似求解AR模型。因為雖然結果會是有偏的,但是卻是一致估計。也就是說,當數據量足夠大的時候,求解的值會收斂於真實值。這里就不再做展開了。
四、忽視獨立性的后果:金融方向的常見錯誤
希望看到這里你已經弄懂了為什么不能混淆模型的假設:尤其是獨立性或相關性的假設。接下來我會說一個我見過的因為混淆假設導致的金融方向的錯誤。
隨着機器學習的發展,很多人希望能夠將機器學習和金融市場結合起來。利用數據建模來對股票價格進行預測。他們會用傳統的機器學習方法將得到的數據隨機的分配成訓練集和測試集。利用訓練集訓練模型去預測股票漲跌的概率(漲或跌的二維分類問題)。然后當他們去將模型應用到測試集時,他們發現模型的表現非常優秀——能夠達到80~90%的准確度。但是在實際應用中卻沒有這么好的表現。
造成這個錯誤的原因就是他們沒有認識到數據是高度相關的。對於時間序列,我們不能通過隨機分配去安排訓練集和測試集,否則就會出現“利用未來數據”來預測“過去走向”的問題。這個時候,即使你的模型在你的測試集表現出色,也不代表他真的能預測未來股價的走向。
【參考】
【1】知乎 時間序列和回歸分析有什么本質區別?