Sebelum melanjutkan program Python, kita akan bahas sedikit mengenai konsep Dynamic Holidays. Kita gunakan contoh valentive dan permintaan coklat.
Permintaan coklat akan mulai naik beberapa hari sebelum valentine, dan puncaknya pada hari valentine, kemudian akan menurun pada hari berikutnya.

Untuk membuat model diatas, dalam Facebook Prophet, kita definisikan tanggal 14 sebagai key event, ditambahkan range sebelum dan sesudah key event.
Jika menggunakan model lain, perlu dibuat dummy variable untuk setiap hari yang diperikirakan memiliki impact. Dari segi programming menjadi lebih rumit.
Melanjutkan program dari modul sebelumnya, berikut implementasi dynamic holidays.
Kita buat dataframe baru yang berisi holiday, yang pertama adalah easter. Perhatikan nama kolom harus sesuai. Untuk easter kita gunakan range 5 hari sebelum dan 2 hari sesudah.
#Easter
easter_dates = df[df.Easter ==1 ].ds
easter = pd.DataFrame({'holiday': 'easter',
'ds': easter_dates,
'lower_window': -5,
'upper_window': 2})
Selanjutnya buat dataframe holiday yang kedua yaitu black friday. Dimana range yang digunakan 7 hari sebelum dan 5 hari sesudah.
#Black Friday
bf_dates = pd.to_datetime(df[df['Black Friday'] == 1].ds)
bf = pd.DataFrame({'holiday': 'black_friday',
'ds': bf_dates,
'lower_window': -7,
'upper_window': 5})
Selanjutnya kita gabungkan kedua holiday diatas.
#combine the holidays holidays = pd.concat([easter, bf])
Setelah dataframe holiday selesai dibuat, kita buang data easter dan black firday pada dataframe original.
#Remove holidays from the main df df = df.drop(columns = ["Easter", "Black Friday"])
Perhatikan, kita akan guanakan 2 pendekatan, untuk easter dan black friday digunakan dynamic holiday, sementara untuk christmas digunakan external regressor.
Sampai disini kita sudah selesai mempersiapkan data holiday. Pada modul selanjutnya kita akan mempersiapkan data training dan test dan membuat Facebook Propohet model.