24

Python での時系列予測にHolt-Winters アルゴリズムのこの実装を使用しようとしましたが、障害に遭遇しました... 基本的に、(正の) 入力のいくつかの系列では、負の数を予測することがあります。そうではありません。予測がマイナスでなくても、非常に不正確な場合があります。本来よりも桁違いに高い/低い場合があります。アルゴリズムが処理するデータの期間を長くしても効果はないようであり、実際には予測が悪化することがよくあります。

私が使用しているデータには次のような特徴があり、問題になる可能性があります。

  • 非常に頻繁にサンプリングされます (例で使用されている毎月のデータとは対照的に、15 分ごとに 1 つのデータ ポイント) - しかし、私が読んだことから、Holt-Winters アルゴリズムには問題がないはずです。おそらく、それは実装に問題があることを示していますか?

  • 複数の周期性があります - 毎日のピーク (つまり 96 データ ポイントごと) と、平日のデータよりも大幅に低い週末のデータの週単位のサイクルがあります。平日のデータだと、負数の問題が発生します。

Holt-Winters アルゴリズムの一般的な実装または使用法に欠けているものはありますか? 私は統計学者ではないので、上記のリンクに示されているアルファ、ベータ、ガンマの「デフォルト」値を使用しています。それが問題になる可能性がありますか?これらの値を計算するより良い方法はありますか?

それとも ... Holt-Winters よりも優れたアルゴリズムはありますか? 最終的には、ここで過去のデータから賢明な予測を作成したいだけです。私は単一および二重指数平滑化を試みましたが、(私が理解している限り) どちらもデータの周期性をサポートしていません。

ヘルプ/入力は大歓迎です!

4

5 に答える 5

2

興味深い結果が得られるまで、ランダム データを生成してみました。ここでは、すべての正の数値を入力し、負の予測を得ました。

y = [0.92, 0.78, 0.92, 0.61, 0.47, 0.4, 0.59, 0.13, 0.27, 0.31, 0.24, 0.01]
holtwinters(y, 0.2, 0.1, 0.05, 4)

...
forecast: -0.104857182966
forecast: -0.197407475203
forecast: -0.463988558577
forecast: -0.258023593197

ただし、予測はデータの負の勾配に適合することに注意してください。

これは、あなたが話していた桁数かもしれません:

y = [0.1, 0.68, 0.15, 0.08, 0.94, 0.58, 0.35, 0.38, 0.7, 0.74, 0.93, 0.87]
holtwinters(y, 0.2, 0.1, 0.05, 4)

...
forecast: 1.93777559066
forecast: 3.11109138055
forecast: 0.910967977635
forecast: 0.684668348397

しかし、あなたがそれを非常に不正確であると見なしたり、それを「低くすべき」と判断したりする方法はわかりません.


データを外挿するときはいつでも、いくぶん驚くべき結果が得られます。実装が正しくない可能性や、出力に特定の使用法に適したプロパティがないことを心配していますか?

于 2011-05-07T19:16:10.007 に答える
1

まず、アルゴリズムの特定の実装について不明な点がある場合は、そのためのテストケースを作成することをお勧めします。別の実装、おそらくmatlabなど、機能することがわかっているものなら何でも取ります。いくつかの入力を生成し、それを参照と実装にフィードすると、同じになるはずです。そのように、matlab からいくつかのアルゴリズムを翻訳して検証しました。scipy.io.loadmatそれには素晴らしいです。

アルゴリズムの使用について: 数日および数週間の周期性について話し、分のタイムスケールでデータをフィードします。この特定のアルゴリズムがそれをうまく処理するかどうかはわかりませんが、いずれにせよ、ローパス フィルタリングを試してから、アルゴリズムに 1 時間ごとにフィードするか、さらに遅くすることをお勧めします。1 周期の 700 近くのタイムステップは、認識するには多すぎる可能性があります。フィードするデータには、時系列の完全な期間が少なくとも 2 つ含まれている必要があります。アルゴリズムが周期性をサポートしている場合、実際に周期性を確認できるように、適切な方法でデータを提供する必要もあります。これらの極値を取得するという事実は、アルゴリズムが一方向の安定したトレンドの日付のみを持っているというヒントになる可能性があります.

また、予測を分離して、1 つは週単位の予測用に最適化し、もう 1 つは日中の予測用に最適化し、最後にそれらを再度結合することもできます。

于 2012-09-28T10:25:05.430 に答える
0

適切な予測方法を選択する前に、時系列のプロパティを分析することが重要です。

1 - Holt-Winters を適用する前に、時系列が定常であるかどうかを確認し、そうでない場合は微分してこのプロパティを達成することが重要になる場合があります。これは精度に役立ちます。

2 - データは時間の経過とともに定期的に変化する可能性があり、傾向のように見えるものでも、実際には大きな季節的な期間の一部である可能性があります。それがあなたのケースである場合 (実際にそうである場合)、複数の周期性を処理できないため、Holt-Winters を 2 回 (季節ごとに 1 回) 適用してから、シナリオに適したものを分析する必要があります。

3 - さまざまな平滑化パラメータ (アルファ、ベータ、ガンマ) を試すことが重要な場合があります。それらが大きいほど、いくつかの最後の観測と最後に計算されたコンポーネントがより重要になります。これらのパラメーターを自動的に適応させる適応型の Holt-Winters 実装を見つけて、何が起こるかを確認してください。

さまざまな構成を簡単に試すことができるように、適応型で使いやすい Holt-Winters 実装を含む R 言語を使用することをお勧めします。これは、予測パッケージを通じて提供されます。

于 2016-09-30T21:48:48.150 に答える
-4

データに周期性があることが観察されたという事実は、そのような特性を表現できるモデルを使用することも試みるべきであることを意味します。

Holt-Winters はこれを表現できない単純な平滑化モデルです。

古典的なアプローチは、ARMA モデル (自己回帰移動平均) と、その自然な拡張である SARIMA (季節調整...) モデルを調べることです。

結論 : これは実際には統計に関する質問です。この主題に関する最高のテキストの 1 つは、Maddala による Econometrics です。

于 2012-02-19T16:43:29.527 に答える