Prophetによる祝日効果を考慮した時系列予測

この記事では、祝日効果を考慮した時系列予測の例として、Wikipediaの記事“Apple Worldwide Developers Conference”(WWDC)へのアクセス数を予測してみます。

予測のもとになる過去データ

以下のように、このWikipedia記事への毎日のアクセス数を記録したデータがあります。

ラインチャートで可視化してみると鋭いピークがいくつか見られます。これらは、Apple Worldwide Developers Conferenceが実際に開催されている期間であり、その影響を受けて、Wikipedia記事へのアクセスも大きく増加していることが見てとれます。

祝日データなしでの予測

まずは、こちらの過去データから、特にWWDCの開催日を特別扱いせずに一年分の予測を行ってみます。オレンジのラインが予測値です。

トレンドをそれなりに捉えてはいるものの、WWDC開催期間中の鋭いピークは予測で再現出来ていません。

祝日情報のデータ

ここで、WWDC開催日の情報を祝日情報(WWDCの開催日は祝日というわけではありませんが、この予測において特別な日という意味で、ここでは祝日と呼んでいきます。)として加えてみます。 こちらのデータには、WWDCの開催日である過去の日付と未来の予測期間の日付であるds列が入っています。さらに、各日付に対して、WWDCの開催何日目かによって祝日の種類を区別したholiday列が入っています。

祝日情報のデータをもとのデータに結合

このデータを、もとのWWDCのWikipedia記事アクセス数のデータに、完全外部結合(Full Join)します。ここで完全外部結合を使うのは、予測に使う未来の日付のデータを残したいためです。(ここでたとえば左外部結合を使ってしまうと、元データにない、未来の日付の祝日データが、結果のデータフレームに入ってきません。)

結合結果のデータには、以下のように過去と未来の祝日情報がholiday列として追加されます。

祝日効果を考慮した予測

時系列予測(Prophet)のアナリティクス・ビューにもどり、holiday列を祝日情報の列として指定します。

予測を実行した結果が以下になります。

今度は、WWDC期間中の鋭いピークが予測に再現されているのが見てとれます。

以下はインタラクティブなアナリティクス・チャートです。チャート内のマウスドラッグでズーム、またマウスオーバーでデータ点の値を見ることが出来ます。

Loading...