あなたの場合、データは急速に変化しており、新しいデータを直ちに観察することができます。素早い予測は、Holt-winter指数平滑化を使用して実施することができる。
更新式:
![enter image description here](https://i.stack.imgur.com/EtKz1.png)
m_t
は、あなたが持っているデータ、例えば、毎回t
でいる人の数です。 v_t
は、一次導関数、すなわち、トレンドがm
である。 alpha
およびbeta
は、2つの減衰パラメータです。上のtilde
の変数は予測値を示します。ウィキペディアのページでアルゴリズムの詳細を確認してください。
python
を使用しているため、データを手助けするためのサンプルコードを表示できます。ところで、私は以下のように、いくつかの合成データを使用:data_t
以上
data_t = range(15)
data_y = [5,6,15,20,21,22,26,42,45,60,55,58,55,50,49]
時間0から始まる連続したデータ点のシーケンスです。 data_y
は、各プレゼンテーションで観察される人数のシーケンスです。
データは以下のようになります(データに近づけようとしました)。
![enter image description here](https://i.stack.imgur.com/LTij8.png)
アルゴリズムのためのコードは簡単です。
def holt_alg(h, y_last, y_pred, T_pred, alpha, beta):
pred_y_new = alpha * y_last + (1-alpha) * (y_pred + T_pred * h)
pred_T_new = beta * (pred_y_new - y_pred)/h + (1-beta)*T_pred
return (pred_y_new, pred_T_new)
def smoothing(t, y, alpha, beta):
# initialization using the first two observations
pred_y = y[1]
pred_T = (y[1] - y[0])/(t[1]-t[0])
y_hat = [y[0], y[1]]
# next unit time point
t.append(t[-1]+1)
for i in range(2, len(t)):
h = t[i] - t[i-1]
pred_y, pred_T = holt_alg(h, y[i-1], pred_y, pred_T, alpha, beta)
y_hat.append(pred_y)
return y_hat
[OK]を、今、私たちの予測因子を呼び出し、観測に対する予測結果をプロットしてみましょう:
import matplotlib.pyplot as plt
plt.plot(data_t, data_y, 'x-')
plt.hold(True)
pred_y = smoothing(data_t, data_y, alpha=.8, beta=.5)
plt.plot(data_t[:len(pred_y)], pred_y, 'rx-')
plt.show()
赤は、各時点での予測結果を示しています。 alpha
を0.8に設定し、最新の観測結果が次の予測に多く影響するようにします。履歴データの重みを増やしたい場合は、パラメータalpha
とbeta
で再生してください。また、赤線の最も右のデータ点はt=15
であり、まだ観測がない最後の予測です。
BTW、thisは完璧な予測とはほど遠いです。すぐに始めることができます。このアプローチの欠点の1つは、観測を得ることができなければならないということです。そうでなければ、予測はますますオフになります(おそらく、これはすべてのリアルタイム予測に当てはまります)。それが役に立てば幸い。
![enter image description here](https://i.stack.imgur.com/H7HFF.png)
本当にコードについては、この質問イマイチ、数学の詳細、どのようにあなたは、この意味での予測を定義していますか?このタイプの曲線/グラフ上の数学的方法は何ですか?私はこれがこの質問の正しい場所だとは思わない。 –
@Inbar私はこれがコードセクションに完全に適合していないことを知っていますが、これが私が近づいている唯一の角度です。私は、ここの人々が私に解決策の方向性を与えるのに十分な専門知識を持っていると確信しています。 – schme
この質問は、http://stats.stackexchange.com/によく合います。 –