時間序列分析(二)--指數平滑

bjehp發表於2022-02-20

本系列文章翻譯自NIST(美國國家標準與技術研究院)的《Engineering Statistic Handbook》(工程統計手冊) 的第6章第4節關於時間序列分析的內容。本文的翻譯會先使用翻譯軟體進行初步翻譯,筆者在對不恰當之處進行修正。由於筆者水平有限,翻譯過程難免有疏漏之處,歡迎大家評論區指出。本站所有文章均為原創,轉載請註明出處。

3. 什麼是指數平滑

這是一種非常流行的產生平滑時間序列的方案。在單一移動平均(Single Moving Averages)中,過去的觀測值的權重是相等的,而指數平滑則隨著觀測值的變久賦予指數遞減的權重。

換句話說,最近的觀測結果在預測方面比過去的觀測結果具有相對更大的權重。

在移動平均的情況下,分配給觀察值的權重是相同的,等於1/N。然而,在指數平滑中,有一個或多個平滑引數需要確定(或估計),這些選擇決定了分配給觀察的權重。

本節將介紹單指數平滑、雙指數平滑和三指數平滑。

3.1 單指數平滑(Single Exponential Smoothing)

該平滑方案首先設定\(S_2\)\(y_1\),其中\(S_i\)為平滑觀測值或EWMA, \(y\)為原始觀測值,下標表示時間段,1,2,...n。第3期\(S_3 = αy_2 + (1-α)S_2\),等等。沒有\(S_1\),平滑序列從第2個觀察值的平滑版本開始。

對於任意時刻\(t\),通過計算得到平滑後的值\(S_t\)

\[S_t = αy_{t-1} + (1-α)S_{t-1} \qquad 0< α \leq 1 \quad t \geq 3 \]

這是指數平滑的基本方程,常數或引數\(α\)稱為平滑常數。

注意:有一種指數平滑的替代方法,用當前觀察值\(y_t\)替換基本方程中的\(y_{t-1}\)。這個公式,由Roberts(1959)提出,在EWMA控制圖一節中有描述。這裡的公式遵循了Hunter(1986)。

設定第一個EWMA

初始EWMA在後續所有EWMA的計算中起著重要的作用。將\(S_2\)設定為\(y_1\)是一種初始化方法。另一種方法是將其設定為處理的目標。

還有一種可能性是對前四五個觀測值進行平均。

\(α\)值越小,初始EWMA的選擇越重要。在完成設定之前,使用者最好嘗試一些方法(假設軟體有這些方法)。

為什麼叫“指數”?

讓我們把基本方程展開,先把\(S_{t-1}\)代入基本方程,得到:

再代入\(S_{t-2}\),再代入\(S_{t-3}\),以此類推,直到\(S_2\)(即\(y_1\)),可以表明展開方程可以寫成:

例如,平滑值\(S_5\)的展開方程為:

這說明了指數行為。權值\(α(1−α)^t\)呈幾何遞減,它們的和是統一的,如下圖所示,利用幾何級數的一個性質:

從上一個公式中我們可以看到,求和項表明,在每個連續的時間段內,對平滑值\(S_t\)的貢獻變小了。

α= 0.3。觀察值權重\(α(1−α)^t\)隨時間呈指數(幾何)遞減。

Value weight
last y1 0.2100
y2 0.1470
y3 0.1029
y4 0.0720

α的最佳值是多少?

較久的響應被抑制(平滑)的速度是α值的函式。當α接近1時,衰減迅速,當α接近0時,衰減緩慢。下表說明了這一點。

--------------->過去

觀測值

α \((1−α)\) \((1−α)^2\) \((1−α)^3\) \((1−α)^4\)
0.9 0.1 0.01 0.001 0.0001
0.5 0.5 0.25 0.125 0.0625
0.1 0.9 0.81 0.729 0.6561

我們選擇α的最佳值,從而得到最小的均方誤差。

讓我們用一個例子來說明這個原則。考慮以下由12個觀察結果組成的資料集:

Time yt S(α=0.1) Error Error squared
1 71
2 70 71 -1.00 1.00
3 69 70.9 -1.90 3.61
4 68 70.71 -2.71 7.34
5 64 70.44 -6.44 41.47
6 65 69.80 -4.80 23.04
7 72 69.32 2.68 7.18
8 78 69.58 8.42 70.90
9 75 70.43 4.57 20.88
10 75 70.88 4.12 16.97
11 75 71.29 3.71 13.76
12 70 71.67 -1.67 2.79

誤差平方和(SSE) = 208.94。平方誤差的均值(MSE)是SSE /11 = 19.0。

MSE再次計算α=0.5,結果是16.29,所以在這種情況下,我們更偏向α=0.5。我們能做得更好嗎?我們可以採用經過驗證的試錯法。這是一個迭代過程,從0.1到0.9之間的α範圍開始。我們確定α的最佳初始選擇,然後在α-Δ和α+Δ之間進行搜尋。我們可以再重複一次找出最好的α到小數點後3位。

但是有更好的搜尋方法,比如Marquardt方法。這是一個非線性優化器,使殘差平方和最小化。一般來說,大多數設計良好的統計軟體程式應該能夠找到使平均誤差最小的α值。

3.2 單指數平滑預測

預測公式

預測公式是基本方程:

可以寫成這樣:

其中\(ϵ_t\)\(t\)時期的預測誤差(實際預測)。

換句話說,新的預測是舊的預測加上對上次預測中出現的誤差的調整。

預測引導(Bootstrapping of Forecasts)

如果您希望從某個來源(通常是最後的資料點)進行預測,而又沒有實際的觀測結果,會發生什麼?在這種情況下,我們必須修改公式使之成為:

\(y_{orgin}\)保持不變。這種技術被稱為引導(bootstrapping)。

Bootstrapping例子

在前面的例子中,最後一個資料點是70,它的預測(平滑值S)是71.7。由於我們確實有資料點和可用的預測,我們可以使用α=0.1的普通公式計算下一個預測值:

但對於下一個預測,我們沒有資料點(觀測)。現在我們計算:

引導預測與常規預測的比較

兩種方法的比較如下表所示:

Period Bootstrap forecast Data Single Smoothing Forecast
13 71.50 75 71.5
14 71.35 75 71.9
15 71.21 74 72.2
16 71.09 78 72.4
17 70.98 86 73.0

單指數平滑和趨勢

單平滑(簡稱單指數平滑)在有趨勢時不是很好。單系數α是不夠的。

讓我們用α = 0.3平滑的資料集來證明這一點:

Data Fit
6.4
5.6 6.4
7.8 6.2
8.8 6.7
11.0 7.3
11.6 8.4
16.7 9.4
15.3 11.6
21.6 12.7
22.4 15.4

當存在趨勢時,單指數平滑是不充分的,結果圖如下:

3.3 雙指數平滑(Double Exponential Smoothing)

正如前面所觀察到的,單平滑在有趨勢時不能很好地跟蹤資料。這種情況可以通過引入第二個方程和第二個常數γ得到改善,它必須與α相結合選擇。 這是與雙指數平滑相關的兩個方程。

注意,在雙指數平滑中,使用該序列的當前值來計算其平滑值。

初始值

與單次平滑的情況一樣,雙次平滑中\(S_t\)\(b_t\)的初始值設定也有多種方案。 \(S_1\)通常被設為\(y_1\)。下面是對\(b_1\)的三個建議值。

註解

第一個平滑方程直接調整\(S_t\)為,前一時期的趨勢值\(b_{t−1}\) 加上最後一個平滑值\(S_{t−1}\)。這有助於消除延遲,並將\(S_t\)帶到當前值的合適基數。

然後第二個平滑方程更新趨勢,其表示為後兩個值的差值。該方程的基本形式與單次平滑相似,但在這裡應用於趨勢的更新。

α和γ的值可以通過非線性優化技術獲得,如馬夸特(Marquardt)演算法。

3.4 雙指數平滑預測(LASP)

下一階段預測值的公式:

\(F_{t+1}=S_t + b_t\)

未來m個階段的預測值公式:

\(F_{t+m}=S_t + mb_t\)

例子

再次考慮下資料集:

6.4, 5.6, 7.8, 8.8, 11, 11.6, 16.7, 15.3, 21.6, 22.4.

現在我們擬合α=0.3623和γ=1.0的雙平滑模型。這些是最低的均方誤差的引數估計結果,通過比較原始序列和提前一步預測的預測序列(因為這個版本的雙指數平滑法使用當前的系列值來計算一個平滑值,平滑系列不能用於確定一個對應最小均方誤差的α)。所選的起始值為\(S_1=y_1=6.4\)

時間序列分析(二)--指數平滑

為了比較起見,我們還擬合了一個α=0.977的單指數平滑模型(單指數平滑的對應了最低的MSE)。

雙平滑的MSE為3.7024。 單次平滑的MSE為8.8867。

這個例子的平滑結果是:

Data Double Single
6.4 6.4
5.6 6.6 (Forecast = 7.2) 6.4
7.8 7.2 (Forecast = 6.8) 5.6
8.8 8.1 (Forecast = 7.8) 7.8
11.0 9.8 (Forecast = 9.1) 8.8
11.6 11.5 (Forecast = 11.4) 10.9
16.7 14.5 (Forecast = 13.2) 11.6
15.3 16.7 (Forecast = 17.4) 16.6
21.6 19.9 (Forecast = 18.9) 15.3
22.4 22.8 (Forecast = 23.1) 21.5

預測比較

為了瞭解每種方法是如何預測未來的,我們從最近一次觀測中計算了前五個預測,如下所示:

Period Single Double
11 22.4 25.8
12 22.4 28.7
13 22.4 31.7
14 22.4 34.6
15 22.4 37.6

這些結果的繪圖(使用預測的雙重平滑值)是非常有啟發性的。

從圖中可以看出,二次平滑比一次平滑更貼近資料。此外,對於預測來說,單次平滑並不比預測直線水平線更好,這在現實中是不太可能發生的。所以在這種情況下,最好採用雙重平滑。

最後,讓我們比較雙平滑和線性迴歸:

這是一張有趣的圖片。這兩種技術以相似的方式遵循資料,但迴歸線更為保守。也就是說,採用迴歸線比採用雙平滑時的增長速度要慢。

技術的選擇取決於預測者。如果希望以一種更積極的方式描繪增長過程,那麼可以選擇雙重平滑。否則,迴歸可能更可取。需要注意的是,線上性迴歸中,“時間”函式是自變數。第4章討論了線性迴歸的基礎知識,以及迴歸估計的細節。

3.5 三指數平滑( Triple Exponential Smoothing)

如果資料顯示趨勢和季節性會發生什麼?

在這種情況下,雙重平滑將不起作用。現在我們引入第三個方程來考慮季節性(有時稱為週期性)。由此產生的方程組被稱為“Holt-Winters”(HW)方法,以發明者的名字命名。

其方法的基本方程為:

時間序列分析(二)--指數平滑

這裡:

y是觀測值

S是平滑的觀測值

b是趨勢因子

I是季節指數

F是m個階段後的預測值

t是一個表示時間段的指標

α, β和γ是常數,這3個引數必須根據均方誤差是最小的方式來估計出來。這最好留給一個好的軟體包處理。

為了初始化HW方法,我們至少需要一個完整的季節資料來確定季節指數\(I_{t−L}\)的初始估計。

一個完整的季節資料由L個週期組成。我們需要估計從一個時期到下一個時期的趨勢因子。要做到這一點,建議使用兩個完整的季節;也就是2L週期。

趨勢因子的初始值

估算初始趨勢的一般公式:

時間序列分析(二)--指數平滑

季節指數的初始值

正如我們將在示例中看到的,我們使用的資料包含6年,每年4個階段(即4個季度)。

Step 1: 計算6年每年每個季度的平均值。

時間序列分析(二)--指數平滑

Step 2: 將觀測結果除以適當的年平均值。

時間序列分析(二)--指數平滑

Step 3:現在,通過計算每一行的平均值來形成季節指數。因此,初始季節指數為:

image-20220213181103902

我們現在知道了計算初始估計值背後的代數方法。

下一頁包含了一個三重指數平滑的例子。

零係數的情況

有時會發生,一個計算機程式的三重指數平滑輸出的趨勢(γ)或季節性(β)的最終係數為零。或者更糟的是,兩者都輸出為零!

這是否表明沒有趨勢和/或沒有季節性?

當然不是!這僅僅意味著趨勢和/或季節性的初始值恰巧是正確的。為了達到最低的可能MSE,不需要更新。我們應該檢查更新的公式來驗證這一點。

3.6 三指數平滑例子

這個例子展示了一個資料集的單指數平滑、雙指數平滑和三指數平滑的比較。

下面的資料集代表了24個觀察結果。這是六年的季度資料(每年有四個季度)。

Quarter Period Sales Quarter Period Sales
90 1 1 362 93 1 13 544
2 2 385 2 14 582
3 3 432 3 15 681
4 4 341 4 16 557
91 1 5 382 94 1 17 628
2 6 409 2 18 707
3 7 498 3 19 773
4 8 387 4 20 592
92 1 9 473 95 1 21 627
2 10 513 2 22 725
3 11 582 3 23 854
4 12 474 4 24 661

讀者可以以文字格式下載資料。

時間序列分析(二)--指數平滑

實際時間序列與預測

Plot of raw data with triple exponential forecasts

對比MSEs

MSE α demand γ trend β seasonality
6906 0.4694
5054 0.1086 1.0000
936 1.0000 1.0000
520 0.7556 0.0000 0.9837

通過計算機程式選擇更新系數,使每一種方法的均方誤差最小。

計算初始趨勢的例子

資料集包括季度銷售資料。季節是1年,因為一年有4個季度,所以L=4。利用公式我們得到:

時間序列分析(二)--指數平滑

計算初始季節指數的例子

1 2 3 4 5 6
1 362 382 473 544 628 627
2 385 409 513 582 707 725
3 432 498 582 681 773 854
4 341 387 474 557 592 661
\(\bar{X}\) 380 419 510.5 591 675 716.75

在這個例子中,我們使用了整整6年的資料。其他方案可能只使用3年或其他年份。也有許多方法可以計算初始估計。

3.7 指數平滑法的總結

總結

多年來,指數平滑已被證明在許多預測情況下是非常有用的。它最初是由C.C. Holt在1957年提出的,用來表示沒有趨勢的非季節性時間序列。後來,他在1958年提出了一種處理趨勢的方法。Winters(1965)將該方法推廣到包括季節因素,因此被稱為“Holt-Winters方法”。

Holt-Winters方法有3個更新方程,每個方程都有一個常數,範圍從0到1。這些方程旨在給予最近的觀測值更多的權重,而過去的觀測值會減少權重。

這些權重以常數比例呈幾何級數遞減。

HM處理過程可以通過對使用者友好的軟體實現全自動化。

相關文章