Hi there,
If I use add_country_holidays(country_name = 'US') on monthly data, do the holiday effects still work the same as it would for daily data?
Also, I am seeing that when I apply the above, the prophet plot is showing the holidays are having a negative impact on the forecasts. Any reason why? How do I interpret that?
Thanks!

And here is my model:
seasonality.mode = 'multiplicative',
seasonality.prior.scale = .05,
changepoint.prior.scale = .05,
n.changepoints = 30,
changepoint.range = .9,
yearly.seasonality = 6
) %>%
add_regressor('regressor', mode = 'multiplicative') %>%
add_regressor('regressor', mode = 'additive') %>%
add_country_holidays(country_name = 'US') %>%
fit.prophet(mydata)
No, the holiday effects are probably not doing what you'd want with monthly data.
Adding country holidays adds an effect to the particular day that is the holiday, like 12/25 for Christmas.
With monthly data, the model is still fitting a continuous time model and treating your monthly data points as if they were observations just on those particular days (https://facebook.github.io/prophet/docs/non-daily_data.html#monthly-data).
What does this mean? Well if your monthly data looks like
1/1/18
2/1/18
3/1/18
then the model is treating it as a datapoint on each of those days. So, the Christmas effect on 12/25 will never show up because 12/25 isn't in the data (12/1 and 1/1 are).
Since your monthly data are actually (I presume) aggregated across the whole month, what you'd really want is to include all holiday effects from within that month.
For holidays that occur in the same month every year, the holiday effect will already be part of the yearly seasonal effect that is being estimated and there is nothing else to gain from trying to add in holidays.
The only exception would be with something like Easter which is usually in April but every now and then is in March. If Easter was a really important holiday for your time series then you would want to handle this by manually creating a holiday on the same date where Easter is included in your aggregate. For instance, if 3/1/18 is the date given for the aggregate of all March 2018, then your Easter holiday would be put on 3/1/16, 4/1/17, 4/1/18, etc. because Easter was in March in 2016 but April in 2017 and 2018. But I think this is a pretty rare case and you really don't need to worry about this unless you have strong effects on holidays that float from one month to another.
Hi @bletham. Thank you for the response. That was very helpful and insightful. My follow up question is then how does holidays.prior.scale and seasonality.prior.scale play a role here when the holiday effect is being captured in the yearly seasonality effect for monthly data. If I am building out prophet models on monthly data, should I not tune holidays.prior.scale and tune seasonality.prior.scale instead?
That's right, holidays.prior.scale plays no role if there are no holidays specified in the model.
Most helpful comment
No, the holiday effects are probably not doing what you'd want with monthly data.
Adding country holidays adds an effect to the particular day that is the holiday, like 12/25 for Christmas.
With monthly data, the model is still fitting a continuous time model and treating your monthly data points as if they were observations just on those particular days (https://facebook.github.io/prophet/docs/non-daily_data.html#monthly-data).
What does this mean? Well if your monthly data looks like
then the model is treating it as a datapoint on each of those days. So, the Christmas effect on 12/25 will never show up because 12/25 isn't in the data (12/1 and 1/1 are).
Since your monthly data are actually (I presume) aggregated across the whole month, what you'd really want is to include all holiday effects from within that month.
For holidays that occur in the same month every year, the holiday effect will already be part of the yearly seasonal effect that is being estimated and there is nothing else to gain from trying to add in holidays.
The only exception would be with something like Easter which is usually in April but every now and then is in March. If Easter was a really important holiday for your time series then you would want to handle this by manually creating a holiday on the same date where Easter is included in your aggregate. For instance, if 3/1/18 is the date given for the aggregate of all March 2018, then your Easter holiday would be put on 3/1/16, 4/1/17, 4/1/18, etc. because Easter was in March in 2016 but April in 2017 and 2018. But I think this is a pretty rare case and you really don't need to worry about this unless you have strong effects on holidays that float from one month to another.