Keyword: 指数平滑化, ホルトウィンタース, 線形ホルト, 2重指数平滑化, Holt Winters
概要
本サンプルはC言語により指数平滑化による予測を行うプログラムです。 入力データとして11個の観察データと指数平滑パラメータ(α、γ、φ)を与え、5ステップ分の予測を行います。
以下のプログラム例では線形ホルト指数平滑化を利用して予測を行いますが、その他に単純指数平滑化、ブラウン2重指数平滑化、ホルトウィンタース乗法、ホルトウィンタース加法の各平滑化法にも対応しています。
※本サンプルはnAG Toolbox for MATLAB®が提供する関数 g13am()のExampleコードです。実行にはMATLAB®本体(他社製品)とnAG Toolbox for MATLAB®が必要です。
本サンプル及び関数の詳細情報はg13am のマニュアルページをご参照ください。
入力データ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
mode = int32(2); itype = int32(3); p = int32(0); param = [0.01; 1; 1]; y = [180; 135; 213; 181; 148; 204; 228; 225; 198; 200; 187]; k = int32(11); init = [-1.666051209955092e-47; 4.853144920788553e-270]; nf = int32(5); r = [1.910201800633982e-313; -1.601103737937077e-47; -1.678629904873684e-47; -4.300360784598706e-39; -0.09138826798201372; -1.668172686220112e-47; 2.572155976556066e-306; -1.601102994801293e-47; 4.940656458412465e-324; 2.514055054265363e-306; -4.296977237061931e-39; 2.514055056853075e-306; -4.300811189660317e-39]; [initOut, fv, fse, yhat, res, dv, ad, rOut, ifail] = g13am(mode, itype, p, param, y, k, init, nf, r)
- mode には初期値の与え方を指定しています。"2"は初期値が観測データから推定されることを意味します。
- itype には平滑化の手法を与えています。"3"は線形ホルト指数平滑化を意味します。
- p には季節次数を与えますが、線形ホルト指数平滑化ではこの値は参照されません。
- param には指数平滑化パラメータであるα(=0.01)、γ(=1.0)、φ(=1.0)を与えています。
- y には観察データの値を与えています。
- k には初期値の推定に使用する観察データ数 (=11)を与えています。
- init には平均とトレンドの初期値を与えています。
- nf には予測を行うステップ数 (=5)を与えています。
- r にはトレンドを与えています。
- 最後に本関数を呼び出す構文を指定しています。
出力結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
initOut = 168.0182 3.8000 fv = 213.8545 217.6851 221.5157 225.3462 229.1768 fse = 25.4733 25.4784 25.4899 25.5102 25.5420 yhat = 171.8182 175.7818 178.8480 183.0050 186.7805 189.8003 193.4920 197.7318 202.1719 206.2559 210.2565 res = 8.1818 -40.7818 34.1520 -2.0050 -38.7805 14.1997 34.5080 27.2682 -4.1719 -6.2559 -23.2565 dv = 25.4733 ad = 21.2328 rOut = 1.0e+03 * 2.4680 0 0.0000 0.0010 0 0.0010 0 7.1378 0.2336 0.2100 0.0038 0.0110 0 ifail = 0
- initOut は計算に使われた初期値を示しています。
- fv は5ステップ分の予測値を示しています。
- fse は上記の標準誤差を示しています。
- yhat は1ステップ予測を示しています。
- res は残差を示しています。
- dv は平均偏差を示しています。
- ad は絶対偏差を示しています。平均偏差と絶対偏差双方ともモデルの当てはまり具合を示しています。 小さい値であればあるほど当てはまりが良いことを示します。
- rOut は平滑化の現在の状態を示しています。
- ifail は関数がエラーを検知しなければ"0"を出力します。