大資料分析筆記 (7) - 時間序列分析(Time Series Analysis)

王踹踹發表於2020-11-24

總覽

時間序列分析試圖模型化一段時間內觀測到的資料的底層結構。一個時間序列 (表示為 Y = a + bX) 是一個在時間上具有相同間隔值的有序序列。如圖,圖中提供了在12年內每個月的航空乘客的數量。
在這裡插入圖片描述
該方法可以應用在金融,經濟,生物,工程,零售,製造等領域。
目標在於:

  • 對時間序列的結構進行識別和建模 (identify and model)。
  • 預測時間序列中未來的值。

一個時間序列由在時間上具有相同間隔值的有序序列組成。一個時間序列可以由以下部分組成: 趨勢(Trend),季節效應(Seasonality),週期(Cyclic)和隨機性(Random)

趨勢: 指在時間序列中的長期移動 (long-term movement)。其表示觀測值是否隨著時間變化增加或者降低。

季節效應: 描述了觀測資料在時間上的固定的週期性波動 (fixed, periodic fluctuation)。

週期: 可以視為週期性,但是不是固定的波動(periodic but not fixed)。比如,零售時間序列可能常常遵循經濟繁榮與蕭條 (boom-bust cycles of the economy) 的週期。

隨機性: 除了上述三部分剩下的部分。噪聲 + 底層結構 可以被建模,以預測時間序列的未來值。

Box-Jenkins方法

  1. 治理資料 (condition data) 與選擇模型 (select a model)
    • 識別和考慮時間序列中的任何趨勢 (trend) 與季節效應 (seasonality)。
    • 評估其餘時間序列並確定一個合適的模型。
  2. 估計模型引數。
  3. 評估模型,如果有必要,返回到第一步。

ARIMA (自迴歸求和移動平均模型)

ARIMA: AutoRegressive Integrated Moving Average.

要應用ARIMA,我們需要把趨勢和季節效應從時間序列中移除。這種時間序列叫做平穩時間序列 (stationary time series)。

若一個時間序列yt = {t = 1, 2, 3, …}是一個平穩時間序列,則:

  • yt 的 期望值 (均值 mean) 對於所有的 t 都是常數 (constant)。
  • yt 的 方差 (variance) 是有限的。
  • 對於所有的t,yt 和 y t+h 的協方差值 (covariance) 只依賴於 h = 0,1,2,…。如 cov(3) = cov(y1, y4) = cov(y2, y5)

協方差可以用於衡量兩個變數是如何一起變化的。如果兩個變數相互獨立,則它們的協方差是0。如果兩個變數向著同一個方向變化,那麼它們的協方差是正的。反之,如果兩個變數向著相反方向變化,那麼它們的協方差就是負的。
值得注意的是,對於 h=0,所有 t 的 cov(0) = cov(yt, yt) = var(yt)。
平穩時間序列例子(下圖):外觀平整 flat looking(無趨勢),恆定方差 constant variance (類似散點 scattering)。但是,繪圖無法洞察時間序列中變數的協方差及其底層結構。
在這裡插入圖片描述

自相關函式 (ACF)

ACF: Autocorrelation function
對於平穩時間序列,ACF的定義如下:
在這裡插入圖片描述
由於cov(yt, yt)是方差,ACF與兩個變數的相關函式corr(yt, y t+h)類似,其值介於 -1 ~ 1 之間。因此,ACF(h) 的絕對值越接近1,那麼 yt 就越能作為 y+h 的有效預測 (predictor)。
在這裡插入圖片描述
ACF中的h量被稱為Lag,表示時間點 t 和 t + h 的差異。
當lag是0的時候,ACF提供每個點於其本身的相關性。所以ACF(0)總是等於1。
根據上面的ACF圖,
當 lag=1 時,yt 和 y t -1的相關性大約是0.9,非常接近於1。因此y t-1 對 yt 似乎是一個不錯的預測。
ACF(2) ≈ 0.8,所以 y t-2 對 yt 似乎也是個不錯的模型。
自此,我們可以考慮這樣一個模型,該模型將 yt 表述為 前8個項的線性和(因為 ACF(0 ≤ n ≤ 8) >0.6)。這類模型被稱為 8階自迴歸模型 (autoregressive model of order 8)。

自迴歸模型

對於一個平穩時間序列yt,t = 1, 2, 3,…,表示為AR( p )的p階自迴歸模型如下:
在這裡插入圖片描述
δ 是一個以非零為中心的時間序列的常量。
Ф 是 j = 1, 2, 3, …, p 時的一個常量。
y t-j 是在時間t-j時的時間序列的值。
Фp ≠ 0
對於所有 t 值, ε 服從正態分佈。
因此,時間序列中的一個特定的點可以被表述為時間序列中前p個值 y t-j (其中 j = 1, 2, …, p)的線性組合(linear combination),外加一個隨機的誤差項 ε。在這個定義中,時間序列中的 ε 通常稱為白噪聲過程(white noise process),用來表示時間序列中的隨機,獨立波動的部分。

如何在AR( p )中決定p的值?
對於AR(1)的模型,以 δ=0 為中心,我們有
在這裡插入圖片描述
基於上述公式,可知
在這裡插入圖片描述
替換 y t-1 之後可得
在這裡插入圖片描述
這個過程可以被不斷重複,y t-h, h = 1, 2, 3…。
因此,即使在簡單的 AR(1) 模型中,與較大的lag也存在著顯著的自相關(significant autocorrelation)。

我們需要測量 yt 和 y t+h (h = 1, 2, 3, …) 之間的自相關係數,並在測量中除去 y t-1 到 y t-h-1 的影響。

部分自相關函式 (Partial autocorrelation function - PACF)

當AR( p )過程的PACF變為0時,這可以指示AR模型的階數(order of the AR model)。因此,讓我們檢查資料的PACF,並找到PACF變為0之後的lag值。
也就是說,在使用線性迴歸移除 yt 與 y t+h 之間的變數對 yt 和 y t+1 的影響後,PACF就是剩餘的相關係數。
在這裡插入圖片描述
在這裡插入圖片描述
觀測:當 p ≥ 2 時,PACF變為 0 (急劇下降),因此表明AR模型的階為2 (非8)。這說明在移除了y t+1 和 y t+h+1 值的影響之後,y t+1 和 y t+h+1 的部分相關性也就相對小了。

因為 ACF 和 PACF 是基於相關性的,因此正值負值都有可能。對於各種lag值,應該考慮函式大小的絕對值。

移動平均模型 (Moving Average Models - MA)

對於以 0 居中的時間序列 t,表示為 MA(q) 的 q階移動平均模型公式如下:
在這裡插入圖片描述
在一個MA(q)模型中,時間序列的值是當前白噪聲項 (white noise) 和先前 q 個白噪聲項的線性組合。所以先前的隨機衝擊 (random shock) 直接影響到時間序列的當前值。
和AR( p ) 模型的兩個不同:

  • ε t-1 被直接傳播到 yt。
  • ε t 之影響當前和未來的 p 值。

有限的MA模型始終是平穩時間序列。如下圖的 MA(3) 時間序列
在這裡插入圖片描述
該模型的ACF
在這裡插入圖片描述
在一個自迴歸模型中,ACF緩慢衰減 (slowly decays)。但是對於MA(3)模型,ACF在 lag = 3 以後突然截斷。因此,ACF可以幫助識別 MA(q) 中的階q。
原因在於:
在這裡插入圖片描述
由圖可知,yt 表示式 和 y t-1 到 y t-3 表示式共享了特定的白噪聲變數,因此這三個變數都與 yt 相關聯。然而,yt 表示式 和 y t-4 沒有共享 (have no overlapping) 白噪聲變數。所以 yt 和 y t-4 之間的相關係數理論 (theoretical correlation) 上是0。

自迴歸移動平均模型 (ARMA - Autoregression Moving Average Model)

AR( p ) 和 MA(q) 經常被結合成自迴歸移動平均模型 ARMA(p, q)。
在這裡插入圖片描述
為了合理地應用ARMA模型,時間序列必須是一個平穩時間序列。然而,許多時間序列隨時間呈現一定的趨勢。對於非平穩時間序列,我們需要調整資料來移除這種趨勢。

  • 一種可能的轉換是對時間序列執行迴歸分析(linear or higher-order regression model),然後從每個觀察到的y值中減去擬合迴歸線的值(remove trends)。
  • 第二種選項是計算連續y值之間的差異 (difference between successive y-values),這就是所謂的差分法 (differencing)。
    在這裡插入圖片描述
  • 如果仍然不平穩,則對時間序列再次進行差分
    在這裡插入圖片描述
    在這裡插入圖片描述

ARIMA Model

自迴歸求和移動平均模型。這是將差分操作包含(整合)在了ARMA模型中。

ARIMA(p,d,q): 在應用了 d 次差分之後,ARMA(p, q) 模型才能應用到時間序列 yt 上。

通常還需要考慮時間序列中的季節效應模式 (seasonal pattern)。可選方案是季節自迴歸求和移動平均模型(Seasonal ARIMA model):
ARIMA(p, d, q) x (P, D, Q)s

其中,s表示季節時段,P是AR模型中項在s時段上的數量。D是在s時段上的差異;Q是MA模型中項在s時段上的數量。(s的典型取值:52是週資料,12是月資料,7是日資料)
在這裡插入圖片描述

相關文章