8.1 単純指数平滑化

指数平滑化法の最も単純なものを、自然な命名ですが、単純指数平滑化と言います。13この手法は、明らかなトレンドや季節パターンがないデータを予測するのに適しています。例えば、図8.1のデータは明らかなトレンドや季節性を示していません。(ただ、最後の方にトレンドかもしれない減少があります。トレンドのある手法の方が良いのか、後ほど議論します。)そうしたデータの予測に使えそうな手法として、ナイーブ法と平均法を既に考えました。(5.2節).

algeria_economy <- global_economy %>%
  filter(Country == "Algeria")
algeria_economy %>%
  autoplot(Exports) +
  labs(y = "GDP比 (%)", title = "輸出: アルジェリア")
アルジェリアの財・サービス輸出、1960年から2017年まで

図 8.1: アルジェリアの財・サービス輸出、1960年から2017年まで

ナイーブ法を使うと、将来の全ての予測は以下のように系列の最後の観測値と等しくなります。 \[ \hat{y}_{T+h|T} = y_{T} \] ただし、\(h=1,2,\dots\)です。ですから、ナイーブ法は、最新の観測値が唯一重要で、それ以前の全ての情報は将来への情報を提供しない、と想定しています。これは、最新の観測値に全ての加重を与える加重平均と考えることができます。

平均法を使うと、将来の全ての予測は以下のように観測値の単純平均と等しくなります。 \[ \hat{y}_{T+h|T} = \frac1T \sum_{t=1}^T y_t \] ただし、\(h=1,2,\dots\)です。ですから、平均法は、全ての観測値に等しい重要性があると想定し、予測を生成する際に等しい加重を与えています。

これら2つは両極端として、その間が欲しいことがよくあります。例えば、遠い過去の観測値よりも最近の観測値により大きい加重を付けることが道理にかなっていそうな場合です。これがまさに、単純指数平滑化の背後にあるコンセプトです。予測は加重平均を使って計算し、その加重は観測値が遠い過去からのものであるほど指数関数的に減少させる、つまり、最小の加重は最も古い観測値に付けるわけです。 \[\begin{equation} \hat{y}_{T+1|T} = \alpha y_T + \alpha(1-\alpha) y_{T-1} + \alpha(1-\alpha)^2 y_{T-2}+ \cdots \tag{8.1} \end{equation}\] ただし、\(0 \le \alpha \le 1\)は平滑化パラメータです。1期先の\(T+1\)時点の予測は、系列の観測値\(y_1,\dots,y_T\)全ての加重平均となります。加重を減少させるペースはパラメータ\(\alpha\)で調整します。

下表は、単純指数平滑化で予測する際、4つの異なる\(\alpha\)値ごとに各観測値に付けた加重を示しています。理にかなった標本規模があれば、\(\alpha\)値が小さくても加重の合計はおおよそ1になっていることに留意してください。

\(\alpha=0.2\) \(\alpha=0.4\) \(\alpha=0.6\) \(\alpha=0.8\)
\(y_{T}\) 0.2000 0.4000 0.6000 0.8000
\(y_{T-1}\) 0.1600 0.2400 0.2400 0.1600
\(y_{T-2}\) 0.1280 0.1440 0.0960 0.0320
\(y_{T-3}\) 0.1024 0.0864 0.0384 0.0064
\(y_{T-4}\) 0.0819 0.0518 0.0154 0.0013
\(y_{T-5}\) 0.0655 0.0311 0.0061 0.0003

\(\alpha\)が0と1の間にあれば、観測値に付ける加重は、時を遡るにつれ指数関数的に減少していきます。だから、「指数平滑化」と言います。\(\alpha\)が小さい(つまり、0に近い)と、より遠い過去の観測値により大きい加重が与えられます。\(\alpha\)が大きい(つまり、1に近い)と、より最近の観測値により大きい加重が与えられます。\(\alpha=1\), \(\hat{y}_{T+1|T}=y_T\)という極端なケースでは、予測はナイーブ法と等しくなります。

単純指数平滑化の2つの同値な表記をこれから示します。どちらも予測方程式(8.1)と同じになります。

加重平均表記

\(T+1\)時点の予測は、以下のように、最新の観測値\(y_T\)と1つ前時点の予測\(\hat{y}_{T|T-1}\)の加重平均に等しい、と表せます。 \[ \hat{y}_{T+1|T} = \alpha y_T + (1-\alpha) \hat{y}_{T|T-1} \] ただし、\(0 \le \alpha \le 1\)は平滑化パラメータです。 同様に、当てはめ値は以下のように書けます。 \[ \hat{y}_{t+1|t} = \alpha y_t + (1-\alpha) \hat{y}_{t|t-1} \] ただし、\(t=1,\dots,T\)です。(当てはめ値は訓練データの1期先予測であることを思い起こしましょう。)

この手順はどこからか始める必要があるので、まずは時点1の当てはめ値を\(\ell_0\)(推計する必要がありますが)で表すことにします。すると、 \[\begin{align*} \hat{y}_{2|1} &= \alpha y_1 + (1-\alpha) \ell_0\\ \hat{y}_{3|2} &= \alpha y_2 + (1-\alpha) \hat{y}_{2|1}\\ \hat{y}_{4|3} &= \alpha y_3 + (1-\alpha) \hat{y}_{3|2}\\ \vdots\\ \hat{y}_{T|T-1} &= \alpha y_{T-1} + (1-\alpha) \hat{y}_{T-1|T-2}\\ \hat{y}_{T+1|T} &= \alpha y_T + (1-\alpha) \hat{y}_{T|T-1} \end{align*}\] となり、各方程式を次の方程式に代入すると、 \[\begin{align*} \hat{y}_{3|2} & = \alpha y_2 + (1-\alpha) \left[\alpha y_1 + (1-\alpha) \ell_0\right] \\ & = \alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0 \\ \hat{y}_{4|3} & = \alpha y_3 + (1-\alpha) [\alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0]\\ & = \alpha y_3 + \alpha(1-\alpha) y_2 + \alpha(1-\alpha)^2 y_1 + (1-\alpha)^3 \ell_0 \\ & ~~\vdots \\ \hat{y}_{T+1|T} & = \sum_{j=0}^{T-1} \alpha(1-\alpha)^j y_{T-j} + (1-\alpha)^T \ell_{0} \end{align*}\] となります。 \(T\)が大きいと、最後の項は小さくなります。ですから、加重平均表記は予測方程式(8.1)と同じになります。

成分表記

もう一つは成分表記です。単純指数平滑化では、含む成分は水準\(\ell_t\)だけです。(本章で後ほど検討する他の手法では、トレンド成分\(b_t\)や季節成分\(s_t\)も含み得ます。)指数平滑化法の成分表記は、予測方程式と含む成分ごとの平滑化方程式から成ります。単純指数平滑化の場合、成分表記は以下のようになります。 \[\begin{align*} \text{予測方程式} && \hat{y}_{t+h|t} & = \ell_{t}\\ \text{平滑化方程式} && \ell_{t} & = \alpha y_{t} + (1 - \alpha)\ell_{t-1} \end{align*}\] ただし、\(\ell_{t}\)は系列の\(t\)時点の水準(あるいは、平滑化された値)です。この表記で、\(h=1\)とすれば当てはめ値が得られ、\(t=T\)とすれば訓練データを越えた真正の予測が得られます。

\(t+1\)時点の予測値は推計された\(t\)時点の水準であることを、予測方程式は表しています。水準の平滑化方程式(通常、水準方程式と呼びます)は、系列の各時点\(t\)における水準を推計しています。

もし平滑化方程式で\(\ell_t\)\(\hat{y}_{t+1|t}\)に、\(\ell_{t-1}\)\(\hat{y}_{t|t-1}\)に入れ替えると、単純指数平滑化の加重平均表記に戻ります。

成分表記は、単純指数平滑化では特に役に立つことはありませんが、他の成分を加え始めると最も使いやすい表記になります。

フラットな予測

単純指数平滑化では、以下のような「フラットな」予測関数になります。 \[ \hat{y}_{T+h|T} = \hat{y}_{T+1|T}=\ell_T, \qquad h=2,3,\dots \] つまり、全ての予測は、最新の水準成分と等しい同じ値です。この予測が適切なのは、時系列にトレンド成分も季節成分もない場合に限ることは覚えておいてください。

最適化

指数平滑化法はどれも、平滑化パラメータと初期値を選ばないと適用できません。単純平滑化では、\(\alpha\)\(\ell_0\)の値を選ぶ必要があります。これらの値を知れば、あとはデータから全ての予測を計算できます。その他の平滑化法では、2つ以上の平滑化パラメータと2つ以上の初期値を選ぶ必要があるのが普通です。

予測者が以前の経験に基づいて平滑化パラメータ値を指定するなど、平滑化パラメータを主観的なやり方で選ぶケースもあります。しかし、未知のパラメータ値を得るのに、より信頼できる客観的なやり方は、観測値から推計することです。

7.2節では、2乗残差和(「2乗誤差和」、SSEとして通常知られています)の最小化によって、回帰モデルの係数を推計しました。同様に、どの指数平滑化法での未知のパラメータと初期値は、SSEの最小化によって推計できます。残差\(e_t=y_t - \hat{y}_{t|t-1}\)、ただし\(t=1,\dots,T\)です。ですから、以下を最小化する未知のパラメータ値と初期値を見つけ出すことになります。 \[\begin{equation} \text{SSE}=\sum_{t=1}^T(y_t - \hat{y}_{t|t-1})^2=\sum_{t=1}^Te_t^2 \tag{8.2} \end{equation}\]

(SSEを最小化する回帰係数の値を出力する公式があった)回帰の場合と違って、非線形最小化問題を含むため、これを解くには最適化ツールを使う必要があります。

事例: アルジェリアの輸出

この事例では、単純指数平滑化をアルジェリアの財・サービス輸出の予測に適用します。

# パラメータの推計
fit <- algeria_economy %>%
  model(ETS(Exports ~ error("A") + trend("N") + season("N")))
fc <- fit %>%
  forecast(h = 5)

これで、\(\hat\alpha=0.84\)\(\hat\ell_0=39.5\)と、パラメータの推計値が得られます。\(0\le\alpha\le1\)の制約下で、\(t=1,2,\dots,58\)でSSEを最小化して、得られた値です。

8.1に、これらのパラメータを使った計算を示しています。右から2番目の列は時点\(t=0\)から\(t=58\)までの推計された水準です。一番右の列の最後の数行は\(h=1\)から\(5\)期先までの予測です。

表 8.1: 単純指数平滑化を使ったアルジェリアの財・サービス輸出の予測
時点 観測値 水準 予測
\(t\) \(y_t\) \(\ell_t\) \(\hat{y}_{t\vert t-1}\)
1959 0 39.54
1960 1 39.04 39.12 39.54
1961 2 46.24 45.10 39.12
1962 3 19.79 23.84 45.10
1963 4 24.68 24.55 23.84
1964 5 25.08 25.00 24.55
1965 6 22.60 22.99 25.00
1966 7 25.99 25.51 22.99
1967 8 23.43 23.77 25.51
2014 55 30.22 30.80 33.85
2015 56 23.17 24.39 30.80
2016 57 20.86 21.43 24.39
2017 58 22.64 22.44 21.43
\(h\) \(\hat{y}_{T+h\vert T}\)
2018 1 22.44
2019 2 22.44
2020 3 22.44
2021 4 22.44
2022 5 22.44

8.2の黒色の線は実績値で、その水準は年により変化しています。

fc %>%
  autoplot(algeria_economy) +
  geom_line(aes(y = .fitted), col="#D55E00",
            data = augment(fit)) +
  labs(y="GDP比 (%)", title="輸出: アルジェリア", level = "区間予測") +
  guides(colour = "none")
単純指数平滑化をアルジェリアの輸出に適用(1960--2017)。オレンジ色のカーブは1期先の当てはめ値を表す

図 8.2: 単純指数平滑化をアルジェリアの輸出に適用(1960–2017)。オレンジ色のカーブは1期先の当てはめ値を表す

8.2には、2018–2022年の予測をプロットしています。1960–2017年の実績値と合わせて、1期先の当てはめ値もプロットしています。この例では\(\alpha\)値が大きいので、各時点で推計された水準\(\ell_t\)が大きく調整されています。\(\alpha\)値がより小さいと、推計された水準の変化はより小さくなるので、当てはめ値の系列はより平滑になります。

ここに示した区間予測は8.7節で述べる手法を使って計算しています。区間予測は、5年先までの予測期間で、将来の輸出にはかなりの不確実性があることを示しています。大きな不確実性を考慮せずに、点予測を解釈することは誤解を招きかねません。


  1. 「単一指数平滑化」と呼ぶ本もあります。↩︎