

売上データの3年分を元にProphetで今年2021年年末までの売上予測を出したいと思っています。  
CSVデータの取り込み、グラフ作成、データをExcelに出力まではできました。  
取り込んだ直近までのテスト用実績データは稼働日のみで、非稼働日は含まれていません。

データのカラムは以下の通りです。

[code]

    ds: 稼働日YYYY-MM-DD
     y: 売上
    
[/code]

Excelに出力された予測は年末まで、毎月非稼働日も含めてすべての日数が出力されています。稼働日のみを予測に反映させる、もしくは予測対象から非稼働日を除く方法があれば教えてください。  
他に適したライブラリ等あれば情報いただけると助かります。


CC BY-SA 4.0
2021-08-25T08:05:02.787
81033
2021-08-30T01:16:44.730
2021-08-26T03:24:09.693
3060
47905
question
python
Prophetの予測データを出すのに、稼働日のみを対象とした結果を出したい


[Prophet アルゴリズム](https://docs.aws.amazon.com/ja_jp/forecast/latest/dg/aws-
forecast-recipe-prophet.html)のページには、

> Prophet は、以下のようなデータセットに特に役立ちます。  
>  ・長期 (月次、年次) にわたる詳細な履歴観測 (毎時、日次、週次) を含む  
>  ・複数の強い季節性を持つ  
>  ・以前に認識されていた、重要だが不規則なイベントを含む  
>  ・データポイントがないか、大きな外れ値がある  
>  ・限界に近づいている非線形成長トレンドがある

これから判断すると、分析に利用する実績データは非稼働日を含む毎日の売上額が適切と考えられます。  
テスト用実績データに、非稼働日(テスト用実績データに含まれていない日)の売上額を0(ゼロ)としたデータを付け加え、日付でソートしたデータを使って予測してみては如何でしょうか。

Prophetは、フーリエ解析のような手法を使うようですから、入力値(分析対象の実績データ)は、連続性のあるものが望ましいはずです。

１年分(365日)のデータから、1年分のデータ予測が得られるのが、素直だと思います。  
また、非稼働日には売上が無い、という想定も無理が無いと思います。


CC BY-SA 4.0
2021-08-25T11:18:43.947
81037
2021-08-25T11:18:43.947
217
81033
answer


以下のページは英語ですが、この問題の答えになると思います。

[How to exclude weekends ( saturday & Sundays) from fb Prophet · Issue #1291 ·
facebook/prophet](https://github.com/facebook/prophet/issues/1291)

これは `df` 中の週末の日付が捨てられます：

[code]

    df_no_weekdays = df[df['ds'].dt.dayofweek < 5]
    # 例:
    # m = Profit()
    # m.fit(df_no_weekdays)
    
[/code]

* * *

以下のページも問題解決の手伝いになるかもしれません。

[Eliminate weekends? · Issue #323 ·
facebook/prophet](https://github.com/facebook/prophet/issues/323)

これは営業日のみに予測の日付が作成されます：

[code]

    horizon = 200
    future = m.make_future_dataframe(
        periods=horizon, 
        freq='B'
    )
    
[/code]

`'B'`: 毎営業日（月曜 - 金曜）

（申し訳ありませんが、私の母国語は英語です）


CC BY-SA 4.0
2021-08-25T22:20:32.820
81049
2021-08-30T01:16:44.730
2021-08-30T01:16:44.730
47907
47907
81033
answer