Pythonでの予測にHolt-Wintersを使用する


8

[この質問をここで Stack Overflowに最初に投稿しましたが、返信がありませんでしたので、ここで試してみようと思いました。再投稿が許可されない場合はお詫びします。]

私はPythonの時系列予測にこのHolt-Wintersアルゴリズムの実装を使用しようとしましたが、ロードブロッキングに遭遇しました...そうではありません。予測が否定的ではない場合でも、予測が大幅に不正確になることがあります。予測よりも桁違いに高い/低いです。アルゴリズムで処理するデータの期間を長くしても効果がないように見え、実際には予測が悪化することがよくあります。

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

  • 非常に頻繁にサンプリングされます(例で使用されている月次データではなく、15分ごとに1つのデータポイント)。おそらくそれは実装に問題があることを示していますか?

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

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

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

rpy2 を使用する代わりにR 予測パッケージを使用することも検討しました。これにより、より良い結果が得られますか?私はまだパラメーターなどを計算する必要があると思いますので、私の現在の問題がアルゴリズムの実装にある場合にのみ良い考えでしょう...?

ヘルプ/入力をいただければ幸いです!

回答:


4

あなたが言及したR予測パッケージは、単にHolt-Wintersを使用するよりもこの問題に適していると思います。関心のある2つの関数はets()auto.arima()です。ets()は、Holt-Wintersおよび他のいくつかのメソッドを含む指数平滑法モデルに適合します。さまざまなモデルのパラメーター(アルファ、ベータ、ガマ)を選択し、AIC(またはBIC)が最も低いパラメーターを返します。auto.arima()も同様に機能します。

ただし、IrishStatが指摘したように、これらの種類のモデルは分析に適さない場合があります。その場合は、週末、休日、およびそれらの相互作用のダミー変数など、いくつかの共変量を計算してみてください。意味のある共変量を指定したら、auto.arima()を使用してARMAXモデルを検索し、forecast()を使用して予測を行います。おそらく、デフォルトのパラメーターを持つPythonの単純なHolt-Wintersモデルよりもはるかに優れたものになるでしょう。

ets()とauto.arimaの両方が季節性モデルに適合できることにも注意する必要がありますが、データを季節性時系列としてフォーマットする必要があります。それで何か助けが必要な場合はお知らせください。

予測パッケージの詳細については、こちらをご覧ください


共変量を計算するにはどうすればよいですか?
Wern

@Wern:少なくとも2セットの共変量が必要なようです:時間帯用のダミー変数のセットと、週末と平日を表す変数。つまり、次の0/1変数のマトリックスが必要です。H1、H2、H3、H4 ... H23、Weekday。ここで、Hour = 1の場合はH1 = 1、それ以外の場合は0です。hour == 2の場合はH2 = 2、それ以外の場合は0になります。平日=平日は1、週末は0。さらに、次のものを含めることもできます。平日と時間、曜日、年、休日、その他の相互作用。Rでこれを行うのに支援が必要な場合は、私に知らせてください。時間と平日のダミーから始めます。
ザック

@Wern:質問をもう一度読んだ後、1​​5分のデータがあるように聞こえるので、H1-H23を計算するのではなく、I1-I95を計算する必要があります。ここで、「間隔」は、日。また、H24やI96など、このダミーのセットから1つの変数を必ず省略してください。どのようなデータを見ていますか?Webトラフィック?電気負荷?
ザック

うーん、私はあなたが何を言っているのか知っていると思います。私はそれを試してあなたに知らせます-ありがとう!データはWebトラフィックです。
Wern

@Wern私の回答(またはIrishStatの回答)が気に入った場合は、緑色のチェックマークをクリックして、自由に回答を受け入れてください。
ザック

7

問題は、Holt-Wintersが特定のモデル形式であり、データに適用できない可能性があることです。HWモデルは、とりわけ次のことを前提としています。a)ただ1つの傾向b)データのレベルシフトなし、つまり切片の変化なし3)季節性パラメーターが経時的に変化しない4)外れ値なし5)自己回帰構造または適応モデル構造なし6)一定の分散を持つモデルエラーそしてもちろん7)歴史が未来を引き起こすこと、つまり、変数を助けるような価格/プロモーション。イベントなどの組み込みがないこと

あなたの説明から、混合周波数アプローチが必要かもしれないように私には思われます。時系列の影響と曜日の影響に有意な交互作用項がある時系列問題を見てきました。データを不適切な、つまり一般化されていない十分な構造に強制しようとしています。パラメータを推定し、少数のモデルセットから選択することで、モデル識別が置き換えられることはありません。www.autobox.com/pdfs/catchword.pdfで、自動モデリングへのさまざまなアプローチについての記事を読むことをお勧めします。より一般的なアプローチの観点から、前述の仮定を緩和する伝達関数とも呼ばれるARMAXモデルを検討することをお勧めします。


ええと、いくつかの非常に良い点があります...私のデータにも多くの外れ値が含まれており、クリスマスや新年などのイベントでは大幅な変動の影響を受けます。しかし、「自己回帰または適応モデル構造」とはどういう意味ですか?ARMAXを試してみますが、ありがとうございます!
Wern

@Wern適応/自己回帰コンポーネントは、「予測子」が、内因性(Y)系列のメモリ(以前の値)または外因性系列、またはエラー項の遅延値を含む場合に存在します。休日のそれぞれの周囲で起こり得るリード、同時発生、およびラグの影響を特定し、モデル化することが重要です。さらに、曜日によっては、特定の月に特定の原因が割り当てられる場合があります。たとえば、月の5日は週末ではなかったことが重要である可能性があります。この構造をモデル化/自動識別できました。
IrishStat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.