Ape Creation 論文募集|Secondary Exponential Smoothing and Triple Exponential Smoothing of Time Series Analysis Algorithms + Python code implementation

目次

序文

第 2 指数平滑法 (Holt の線形トレンド法)

1. 定義

2.フォーミュラ

二次指数平滑値:

二次指数平滑化数学モデル:

 3. 事例の実現

三重指数平滑法 (Holt-Winters の季節法)

1. 定義

2.フォーミュラ

 3. 事例の実現

重み付け係数 a の選択

注意してください、迷子にならないようにしてください。間違いがある場合は、メッセージを残してアドバイスをお願いします。どうもありがとうございました

見る



序文

久しぶりに時系列解析アルゴリズムを更新しましたが、今日、一般的に広く使われている時系列アルゴリズムである平滑化法を完成させます。この記事の最後は、従来の時系列予測アルゴリズム全体が終了したことを意味します。記事の内容は、前回の記事の直後です。

ちょっと勉強になる - 時系列解析アルゴリズムの指数平滑法詳細解説+Pythonコード実装 - Fanstuck's Blog - CSDN Blog - Exponential Smoothing Python

 次の記事では、単変量時系列予測のすべてのモデルとアルゴリズムについて詳しく説明します。この連載では、人気の LSTM 短期時系列予測と、より高度で便利な時系列予測アルゴリズムについて引き続き書いていきます。

読者が読んだ後、コメント欄で間違いや意見を書き込めるようにして、ブロガーがブログを長期間維持し、適時に更新することを願っています。


第 2 指数平滑法 (Holt の線形トレンド法)

前に学んだ単純移動平均法と、それに基づいて導き出された 2 次移動平均法 (トレンド移動平均法とも呼ばれる) から、第 1 指数平滑法と第 2 指数平滑法との関係は類似している可能性があります。原理は同じだと言っていました。

1. 定義

指数平滑法に基づいて、トレンドの動きが作られます。時系列の変化が線形傾向を示している場合でも、1 回限りの指数平滑法による予測には明らかな遅延偏差があります。補正方法も、1回の指数平滑法に基づいて2回目の指数平滑法を行い、遅れ偏差の法則を利用して曲線の発展方向と発展傾向を見極め、線形傾向予測モデルを構築することから、いわゆる2 番目の指数平滑法。

2.フォーミュラ

指数平滑法の式をもう一度見てみましょう。

時系列をy_{1},y_{2},...,y_{t}...,\alpha加重係数0<\アルファ <1とすると、指数平滑化の式は次のようになります。

 y^{'}_{t+1}は時刻 t+1 での予測値、つまり時刻 t での平滑化された値であり、 は時刻 tS_{t}y_{t}の実際の値です;y^{'}_{t}は時刻tでの予測値であり、前の時刻での平滑化された値S_{t-1}です. 明らかに、この式移動平均式から改善されます。

二次移動平均法でも同じことを行います。

二次指数平滑値:

 方式:

  • S^{(2)}_t: t 番目の期間の 2 次指数平滑化値
  • S^{(1)}_t: t 番目の期間の指数平滑値
  • S^{(2)}_{t-1}: t-1 周期の 2 番目の指数平滑値
  • \アルファ:重み付け係数(平滑化係数)

2つ目の指数平滑法は、1つの指数平滑化値を再度指数平滑化する方法であることが容易にわかります。したがって、それを計算する前に指数平滑法を使用する必要があります。

二次指数平滑化数学モデル:

 3. 事例の実現

ここでは、最後の化学実験のケース 1 を使用しませんが、別のケースを使用します。

例として、私の国の 1965 年から 1985 年までの総発電量データを取り上げて、1986 年と 1987 年の総発電量を予測するために二次指数平滑法を試してください。

 次に、データを読み込んで、前に書いた SES の 1 回限りの平滑化指数法を導入するだけです。

import pandas as pd
import numpy as np
import Ipynb_importer
import SES
df=pd.read_excel('try_test2.xlsx')

 まず、スムーズ値を取得しますが、スムーズ係数はまだ 0.3 です。

df=pd.read_excel('try_test2.xlsx')
x=df['t']
y=df['发电总量y']
y_1=SES(y,1,0.3)
y_1

 

 二次平滑化値を取得するには、一次平滑化値を再度代入するだけで次の値を取得できます。

y_2=SES(y_2,1,0.3)
y_2

 

 次に、時間 21 での t の値を予測したい場合は、2 つのパラメーター a と b の値を取得する必要があります。

#我们需要传入一次平滑预测值和二次平滑预测值,以及t值、平滑系数a和给予的T
def SES_quadratic(y_1,y_2,s,t,T):
    a=2*y_1[t-1]-y_2[t-1]
    b=(s/(1-s))*(y_1[t-1]-y_2[t-1])
    y=a+b*T
    return y
SES_quadratic(y_1,y_2,0.3,21,1)

このようにして、t が 22 のときの予測値を取得します。

三重指数平滑法 (Holt-Winters の季節法)

1. 定義

一次指数平滑法はトレンドや季節性のない時系列、二次指数平滑法はトレンドはあるが季節性のない時系列、三次指数平滑法はトレンドのある時系列を予測できる方法です。そして季節性。「Holt-Winter」という用語は、三重指数平滑法を指します。この方法は、予測式と 3 つの平滑化式 (1 つはレベル、もう 1 つはトレンド、もう 1 つは季節成分) に分けられ、平滑化パラメーターの合計は、季節の数などの季節サイクルを表すために使用されます。 1年で、季節の数、月の数。

時系列データについて直接話すと、時系列には次の 4 つの時系列特性があります。

  • 長期トレンド (Trend)
  • 季節の変わり目(季節)
  • サイクリック
  • 不規則な変動 (Irregular)

季節変動も三重指数平滑法で表される平滑化です。次の URL は、季節予測アルゴリズムの完全な説明です。

7.3 Holt-Winters の季節法 | 予測: 原則と実践 (第 2 版)

また、最初の記事で次のように述べました。

通常、影響を与える 4 つの要因の 2 つの組み合わせがあります。

1 つは加法的モデル: Y=T+S+C+I で、データの発展傾向は 4 つの影響要因の重ね合わせの結果であると考えられています。

1 つは乗算モデル: Y=T*S*C*I で、データの発展傾向は 4 つの要因の相互統合の結果であると考えられています。

この方法には 2 つのバリエーションがあり、季節成分の性質によって異なります。季節変動がシリーズ全体でほぼ一定の場合は加法モデルが好まれ、季節変動がシリーズ レベルに比例する場合は乗法モデルが好まれます。加算法を使用して、季節成分は観測された系列のスケールで絶対値として表現され、水平方程式では、系列は季節成分を差し引くことによって季節調整されます。毎年、季節成分の合計はほぼゼロになります。乗法法を使用して、季節成分を相対的な用語 (パーセンテージ) で表し、系列を季節成分で割って季節調整します。毎年、季節成分の合計は約 m です。

次に、Holt-Winters 加法モデルは次のようになります。

ここで、k は (h−1)/m の整数部分であり、予測に使用される季節指数の推定値がサンプルの最後の年からのものであることを保証します。水平方程式は、時間 t の季節調整された観測 ( ) と非季節予測 ( )y_{t}-s_{tm}の間の加重平均を示し\imath _{t-1}+b_{t-1}、トレンド方程式はホルトの線形アプローチと同じです。季節方程式はy_{t}-\imath _{t-1}-b_{t-1}、現在の季節指数 ( ) と昨年の同じ季節 (つまり m 期間前) の季節指数の間の加重平均を示します。

季節成分の式は通常、次のように表されます。

 上記の平滑化方程式の ℓ を成分形式のレベルに代入すると、次のようになります。

 それに対応して、乗算モデルは次のとおりです。

2.フォーミュラ

三重指数平滑法を改めて理解する必要はありませんが、3 つ目の平滑法は、2 次平滑法に基づいてもう一度平滑化することに他なりません。次に、導出式はさらに単純です。

3 次平滑化値の式は次のとおりです。

ここS^{(3)}_{t}で、 は三重指数平滑化値です。

 三重指数平滑法の予測モデルは次のとおりです。

 3. 事例の実現

私たちのケースは二次指数平滑法のケースと同じであり、州の誰もが他のケースのシナリオを理解するでしょう。

最初に点をプロットして、データが三重指数平滑法により適しているかどうかを確認できます。

import matplotlib.pyplot as plt
df=pd.read_excel('try_test2.xlsx')
x=df['t']
y=df['发电总量y']
plot1 = plt.plot(x, y, '*', label='origin data')
plt.title('metric_polyfit')
plt.show()

 次に、このケースのデータが直線的に増加していることがわかったので、ケースを変更する必要があります。ここでは、最後の化学反応のケースを使用するのが最善です。

例として、化学反応で測定された生成物濃度 y (%) と時間 t (分) のデータを取り上げます。

 

非線形の増加傾向を示す実際のデータ系列を通じて、三重指数平滑法予測法が使用されます。

指数平滑法の初期値重み係数 (平滑化係数) aを決定します。1 回目、2 回目、3 回目の指数平滑法の初期値を、最初の 3 つのデータの平均値に設定しますつまり:

S^{(1)}_{0}=S^{(2)}_{0}=S^{(3)}_{0}=\frac{y_1+y_2+y_3}{3}=\ frac{4+6.4+8}{3}=6.13

\アルファそれを 0.3 とすると、最初に次のことがわかりS^{(1)}_{16},S^{(2)}_{16},S^{(3)}_{16}ます。

y_1=SES(y,3,0.3)
y_2=SES(y_1,3,0.3)
y_3=SES(y_2,3,0.3)

次に、Python を使用してコードを記述します。

#我们需要传入一次平滑预测值、二次平滑预测值和三次平滑预测值,以及t值、平滑系数a和给予的T
def SES_triple(y_1,y_2,y_3,s,t,T):
    t=t-1
    a=y_1[t]*3-y_2[t]*3+y_3[t]
    b=(s/(2*((1-s)**2)))*((6-5*s)*y_1[t]-2*(5-4*s)*y_2[t]+(4-3*s)*y_3[t])
    c=((s**2)/(2*((1-s)**2)))*(y_1[t]-2*y_2[t]+y_3[t])
    y=a+b*T+c*T**2
    return y
SES_triple(y_1,y_2,y_3,0.3,16,1)

 

重み付け係数a の選択

指数平滑法では、予測を成功させる鍵は a の選択です。のサイズは、新しい予測における新しいデータと元の予測の比率を指定します。a の値が大きいほど、新しいデータの割合が大きくなり、元の予測の割合が小さくなり、逆もまた同様です。

        理論家は一般に、次の方法が利用可能であると考えています。

        経験的判断。この方法は、主に時系列の発展傾向と予測者の経験に基づいて判断します。

1. 時系列が比較的安定した水平トレンドを示している場合、通常は 0.05 から 0.20 の間の小さな α 値を選択する必要があります。

2. 時系列が変動するが、長期的な傾向があまり変わらない場合、通常は 0.1 から 0.4 の間で、わずかに大きい α 値を選択できます。

3. 時系列が大きく変動し、長期的な傾向が大きく変化し、明確かつ急速な上昇または下降傾向を示す場合、0.6 から 0.8 の間の値など、より大きな α 値を選択する必要があります。予測モデルの感度が高い. 高いほど、データの変化に迅速に対応できます。

4. 時系列データが上昇 (または下降) トレンド タイプの場合、α は 0.6 から 1 の間でより大きな値を取る必要があります。

        アルゴリズムを試してください。特定の時系列状況に応じて、経験的判断方法を参照して定格値の範囲を大まかに決定し、試算のためにいくつかのα値を取り、異なるα値での予測標準誤差を比較し、αを選択します最小予測標準誤差.

        実際のアプリケーションでは、予測者は、予測対象の変更規則に基づいて定性的な判断を行い、予測誤差を計算する必要があり、予測感度と予測精度が相反することを考慮に入れる必要があり、両者には一定の考慮が必要です。妥協値 α を使用する必要があります。


注意してください、迷子にならないようにしてください。間違いがある場合は、メッセージを残してアドバイスをお願いします。どうもありがとうございました

この問題は以上です。私はファンスタックです. ご不明な点がございましたら, お気軽にメッセージを残してください. 次号でお会いしましょう.

見る

時系列モデル (3

指数平滑法 (ES) - Idea Reply ブログ - CSDN ブログ - 指数平滑法

おすすめ

転載: blog.csdn.net/master_hunter/article/details/126598557