情報学部 菅沼ホーム SE目次 索引

予測

    1. 1.平均による予測
    2. 2.最小 2 乗法による予測
1.平均による予測

  時系列データから先のデータを予測する方法の内,最も簡単な方法は,過去のデータの平均値を使用する方法です.平均値を利用する方法としては,以下のような方法があります.なお,以下の説明において,di を過去,または,新しく得られたデータ,Di を予測値とします.

  1. 単純平均法

      過去のデータ,

    di  i = 1, 2, ・・・, n

    の平均値,

    D = Σ di / n

    によって,予測する方法です.

  2. 移動平均法

      時間の経過と共に,平均の対象とするデータを徐々に変更していく方法です.例えば,3 つのデータを平均する場合は,以下のようになります.
    d1, d2, d3 → D4 = (d1 + d2 + d3) / 3
    d2, d3, d4 → D5 = (d2 + d3 + d4) / 3
      ・・・・・			
  3. 簡易指数平均法

      時間の経過と共に,対象とするデータに重みを付けて平均を取っていく方法です.具体的には,以下の式に従って,予測値を計算します.

    新予測値 = α (新しいデータ) + (1 - α) (旧予測値)

    例えば,以下のようにして計算します.
    D1 = d1
    D2 = α d2 + (1 - α) D1
    D3 = α d3 + (1 - α) D2
      ・・・・・			
    α の値としては,最初,0.3 前後を使用し,落ち着いた時点で再設定をするという方法が良く使用されます.

2.最小 2 乗法による予測

  1. 直線のあてはめ

      過去のデータ,

    x1 y1
    x2 y2
     ・・・
    xn yn

    から,これらのデータに最も合う直線,

    y = ax + b   (1)

    を求め,得られた直線から予測を行う方法です(この直線を,回帰直線と呼びます).直線を決めるために,最小 2 乗法が使用されます.最小 2 乗法は,誤差の 2 乗の和,
    s = Σ (yi - axi - b)2
     = [y - Az]T[y - Az] (2)			
    ただし,
    y = [y1 y2 ・・・ yn]T
    z = [a b]T
    			
    を最小にするように,(1) 式の a, b を決定する方法です.具体的には,(2) 式を z で微分し,0 と置くことによって,以下の結果が得られます.
    ∂s/∂z = -2AT[y - Az] = 0   ∴ z = [ATA]-1ATy			
      例えば,データ,
        0  2.450
        1  2.615
        2  3.276
        3  3.294
        4  3.778
        5  4.009
        6  3.920
        7  4.267
        8  4.805
        9  5.656
    			
    を使用すると,以下に示すような結果が得られます.
    y = 0.310594 x + 2.409327			
      C/C++ によるプログラム例 → 

      JavaScript 版では,任意のデータに対して画面上で結果を求めることができます.なお,他の言語( PHP,Ruby,Python,C#,VB )によるプログラム例に関しては,「プログラミング言語の落とし穴」第 9 章の「最小二乗法」をご覧ください.

  2. 2 次曲線のあてはめ

      直線の当てはめと同様にして,与えられたデータに最も合う 2 次曲線,
    y = a x2 + b x + c			
    を使用して予測を行うこともできます.
    y = [y1 y2 ・・・ yn]T
    z = [a b c]T
    			
    と置けば,先の場合と全く同様にして,以下の式で各係数を計算することができます.
    z = [ATA]-1ATy			
      例えば,データ,
    10  28.2
    15  47.0
    20  44.4
    26  32.8
    32  20.8
    40   0.8			
    を使用すると,以下に示すような結果が得られます.
    y = -0.097596 x2 + 3.701743 x + 6.245642
        2 次曲線のあてはめに対しても,データを変更することによって,直線の当てはめに対して示したプログラムを使用できます.参考のため,JavaScript 版に対して,初期設定を上で示した例に変更したものをあげておきます.

情報学部 菅沼ホーム SE目次 索引