Exploratoryが時系列予測に使用しているProphetアルゴリズムについて、よく聞かれる質問とその答えをこちらにまとめました。
Prophetは予測を行うために、以下の特徴を過去のデータから抽出します。
過去のデータから抽出されたこれらの値を未来に延長し、それを足し上げたものがProphetによる予測値となります。
参考リンク:
Prophetが計算する、過去の時系列のトレンドは、直線をつなげた折れ線で表されますが、この折れ線の折れている点がチェンジポイントです。
Prophetは、入力時系列データの始めの80%の部分に、均等に25個の点を置き、これらの点においてどの程度トレンドの直線を折るのが過去のデータを表現するのに最適なのかを計算します。
多くの場合、これらの点の内の一部だけで直線を折るのが最適という結果になり、その場合、これらの点において過去にトレンドの変化があったと解釈することができます。
チェンジポイントと、各チェンジポイントでのトレンドの折れ線の傾きの変化量は、トレンドビューで、緑色のバーとして表されます。
参考リンク:
ARMAやARIMAといった時系列予測アルゴリズムでは、入力データの定常性(stationarity)はモデルの持つ仮定に関わる重要な条件ですが、prophetでの予測においてはあまり関係がありません。
むしろ、Prophetはトレンドや季節性といった、データの非定常性を検出して予測に利用しています。定常的なデータには、トレンドも季節性もありませんので、定常的なデータをProphetに与えても、常に一定値を返す予測となるだけであり、これはprophetが力を発揮するようなデータではないとも言えます。
参考リンク:
はい、できます。欠損のある時系列データを扱えることは、他の多くの時系列予測アルゴリズムとの比較において、Prophetの特徴的な強みの一つです。
外れ値としてデータから除いてしまってもよいのですが、Prophetならではの方法として、こういった特別な日による影響を「祝日効果」としてモデルに組み込むことができます。これにより、将来、同様のイベントが開催されるときに、その効果を考慮に入れた予測をすることができます。
詳しくはこちらのノートをご覧ください。
Prophetで外部予測変数を使用したモデルをつくった場合は、将来の予測をするには、その将来の期間の外部予測変数の値が必要となります。将来の期間の外部予測変数がデータ中にない場合は、モデルは作成されますが、予測はされません。
将来の予測をしたい場合には、外部予測変数は、そもそも予測がしやすい値であるか、将来の予定が決まっているような値である必要があることになります。(予測に利用するのではなく過去のデータ間の関連性を見る目的であれば、もちろんそうでなくても問題はありません。)
外部予測変数も一緒に過去の値のみから予測して欲しいところなのですが、Prophetにそういった機能がないというのが現在の状況となります。そういった機能を加えようという動き(参考:この件のgithub issue)はあるようですがしばらく時間がかかりそうに見えます。
Exploratoryがprophetを呼び出している部分のRのコードは、こちらのgithubレポジトリで公開されています。