元データ
ある販売担当部員の直近 12 か月の月別売上を集計したデータです。「期」列はデータ数を把握しやすくするための補助列で、処理上は必須ではありません。
このデータから 13 期目(9 月)の売上予測値を求めるのが目的です。なお、直後のステップで表の上部に行を追加するため、1 行分の空白行を残しておいてください。
α を 9 個のパターンで考える
見出し α と初期値 0.1 を入力し(ここでは順にセル D1, E1)、その下の行に 予測値・絶対誤差 の見出しを作ります(セル D2, E2)。完成したらこれらを右に 1 ブロック分(2 列)コピーします。
コピーされたブロックの α 値セルを、前のブロックの α に 0.1 を加える式に書き換えます。
- =E1+0.1
α=0.2 のブロック(4 セル)を選択し、α=0.9 のブロックができるまで右方に 7 ブロック分コピーします。この例では U 列まで展開します。
予測式にあてはめてみる
指数平滑法の予測式は次のとおりです(Ft:t 期の予測値、Xt:t 期の実測値)。
α(平滑定数)はこの手法のキモで、0 < α < 1 の範囲をとるウエイトです。α が 2 か所登場することから、片方に掛かるウエイトが増えればもう片方が減る関係にあります。
- α = 1 のとき:(次期の)予測値 = (直前の)実測値 ← 真のナイーブ予測
- α = 0 のとき:(次期の)予測値 = (直前の)予測値 ← 変化を無視した予測
つまり α の大小は「当期の実測値(変化への敏感さ)」と「連綿とした予測の流れ」のどちらに重きを置くかを決定づけます。
この式変形(α でくくりなおす)を図示すると次のようになります。誤差にウエイト α を掛けて修正していく構造が見えます。α が大きいほど変化への反応が速く、小さいほど過去からの流れが支配的になります。
Ft+1 = αXt + (1-α)Ft を変形すると Ft+1 = α(Xt - Ft) + Ft。α は「誤差をどれだけ次の予測に組み込むか」の割合——これが「フットワークの良さ」の正体。
Ft を繰り返し展開して遡っていくと、予測値は実のところすべての結果を取り込むかたちで計算がおこなわれていることがわかります。
またXについては,直前の期のそれのみが参照される構造ゆえ、ある程度のサイズを揃えられなくても計算そのものは可能であることがわかります。
図の中段までを確認すると、次期の予測値は、「当期から過去の各期にウエイトを乗せた実測値の合成」と考えることができます。
さらに図の後段のように、X に掛かるウエイト α(1-α)k は、過去に向かうにつれ指数関数的に減少することがわかります——これが「指数平滑法」という名の由来です。
以上を踏まえて実装に移ります。2 期目の予測値の初期値として、1 期目の実測値を絶対参照で参照します。
- =$C$3
3 期目以降は予測式をそのまま適用します。実測値の列(C 列)と α の行(1 行目)は複合参照で固定します。
実測値の「列」と α の「行」のみを固定します。
- =E$1*$C4+(1-E$1)*D4
この式を最下行より 1 行はみ出るところまでコピーします。
誤差を計算する
絶対誤差を求めます。
(実測値 − 予測値)の絶対値
実測値の列(C 列)は複合参照で固定します。
- =ABS($C4-D4)
最下行までコピーします。
計算した領域(予測値・絶対誤差の 2 列)を選択し、α=0.9 のブロック(U 列)まで一気にコピーします。
予測値として採用する値を絞り込む
13 期(9 月)の行見出しを追加します。各ブロックの 13 期行(青色の 9 個のセル)がそれぞれの α に対応する次期の予測値候補です。
絞り込みのしくみを整えます。「区間」(誤差の平均[MAE]を求める際の対象期数)と「誤差の平均」の見出し・値を下図のように入力します。ここでは区間の初期値として 3 を入力します。
α=0.1 のときの誤差の平均を計算します(OFFSET 関数の使い方は移動平均法のページを参照)。
- =AVERAGE(OFFSET(E14, 0, 0, $B$17*-1, 1))
計算式とその右隣の空白セルを選択し、α=0.9 のブロックまでコピーします。
9 つの α に対する予測値と誤差の平均が揃いました。表としてはこれで完成です。
区間のセルを変えるだけで誤差の平均が再計算される。直近 6 期で見るか全期間で見るかは状況次第——ただし指数平滑法では遠い過去のウエイトはほぼゼロなので、半数程度を加味すれば十分なことが多い。
たとえば直近 6 期(区間 6)で最も小さい誤差の平均は α=0.3 のブロックにあります。このとき 13 期目の予測値(緑色の着色部分)を採用する、という判断ができます。
グラフを作る場合 / ソルバーによる α の精緻化
グラフが必要な場合は、B・C の 2 列と目的の α の「予測値」列を選択し、移動平均法と同様に折れ線グラフで描画します。
異なる α による予測値を並べたグラフです。α の値が小さいほどより平滑化されていること(「連綿とした流れ」に重きが置かれる)が視覚的に確認できます。
α の決定にはソルバーを使う方法もあります。誤差の平均[MAE]が最小となる α を 0 < α < 1 の範囲でソルバーに探索させ、9 段階の総当たりより精緻な値を得られます。
ただし、アドインが稼働している環境が前提であること、複数アウトプットが必要な場合は都度ソルバーを走らせる手間が生じることから、シートの再計算の利便性を重視するなら適用が難しい場面もあります。