Time series with ARIMA(ENG)
Time series with ARIMA(CH)
Time series with LSTM(ENG)
Time series with LSTM(CH)
GitHub
當建立股票模型時,cross-sectional model是一個好選擇,因為它在處理特定時間點的多因子數據方面非常有效,但在了解cross-sectional model之前,我認為要先了解time-series model。所以寫了篇文章稍微講講時間序列模型在預測未來GDP中的應用。
在深入技術之前,先來建立時間序列模型的基本認識,這模型會從歷史數據中識別出模式、趨勢和周期行為,以對未來的值作出有根據的預測。
ARIMA — 自回歸整合移動平均模型是這次會用到的模型,結合了自回歸組件(基於先前的值)和移動平均組件(基於過去的錯誤),為各種時間序列數據集提供了強大的技術。那我們來稍微看看簡單的ARIMA公式吧:
(因為我有點懶得解釋了,這篇會著重在應用,同時可以去我的github查看code們)
這篇文章主要目的是使用time-series分析技術預測未來的GDP。雖然直接跳入建模相當方便,畢竟有package可以用,但理解數據還有前置數據處理也很重要,預測的準確性取決於數據集的質量和精確性。另外,所有數據均來自美國經濟分析局(第7節-補充表格)。
通常我會先將資料視覺化,以提供初步了解,利用圖像分析識別明顯的模式、趨勢或周期行為:
從初步圖表來看,GDP隨著時間的推移並不stationary。對於ARIMA等許多時間序列方法,stationarity是其基本假設,因此,可以來看看增長和log增長的表現:
研究增長和對數增長揭示了由於COVID-19而造成的顯著波動,但無論是否有無疫情,數據目前已經是stationary。
自相關分析會進一步增加模型的預測能力。利用ACF(自回歸整合移動平均)和PACF(部分自相關函數)圖可以幫助我們對ARIMA模型的AR和MA項的選擇
考慮到COVID-19對GDP的重大影響,我跑了包含疫情和排除疫情的期間,但因為兩者ACF和PACF都顯示數據中有自回歸過程,往後模型就不排除疫情
這裡我們簡單利用ARIMA模型,並用AIC和BIC確定ARIMA的參數
(雖然ARIMA以其適應性著稱,但像SARIMA、指數平滑、先知和LSTM這樣的其他模型根據數據集的特性有其獨特的優勢)
起初考慮的order有[(1,0,0), (2,0,0), (3,0,0), (1,0,1), (1,0,2), (1,0,3), (2,0,1), (2,0,2), (2,0,3)]。其中AR(2,0)模型給出了最低的AIC和BIC,所以我選擇了2,0,0作為後續的ARIMA模型。
預測未來的GDP值可以利用的training — validation分割,確保模型在熟悉的數據上進行磨練,同時測試在未見過的數據上測試其精度,確認其可靠性。(這裡將數據劃分為train = gdp[gdp[‘year’] <= 2022] 和 validation = gdp[gdp[‘year’] > 2022])
隨後可以透過檢測,如Ljung-Box和Jarque-Bera,指出了潛在的改進和調整區域。
根據Ljung-Box的p值建議,在殘差中沒有顯著的自相關,且AR項在統計上是顯著的,因此該模型似乎對於預測是相當適當的。(殘差的非正態性和可能的異方差性可能會成為擔憂,這取決於應用。)
下列為殘差分析:
在2020年左右的顯著預測偏差可能表示外部經濟轉變或模型本身的潛在限制。此外,2022年後對數GDP增長率的下降趨勢可能指向未知的經濟因素或突顯了該期間模型調整的需要。
總之,以上是一套time-series的簡單介紹,cross-sectional model在股票建模中是一個有影響力的工具,所以先理解time-series model對往後的模型建立會有非常大的幫助。
相關code可至我的github: https://github.com/SinaChang/Time-series-GDP-forecasting-