【问题标题】:fbprophet yearly seasonality values too highfbprophet 年度季节性值太高
【发布时间】:2019-05-19 15:00:08
【问题描述】:

我最近开始在 python 中使用 fbprophet 包。我有过去 2 年的月度数据和未来 9 个月的预测。 因为,我有每月数据,我只包括每年的季节性(Prophet(yearly_seasonality = True))。 当我绘制组件时,趋势值似乎很好,但是每年的季节性值太高,我不明白为什么? 季节性显示增加 300 或减少 -200。但是,在实际图表中,过去的任何几个月都没有发生这种情况——我能做些什么来纠正?

使用的代码如下:

m = Prophet(yearly_seasonality = True)
m.fit(df_bu_country1)
future = m.make_future_dataframe(periods=9, freq='M')
forecast = m.predict(future)
m.plot(forecast)
m.plot_components(forecast)

【问题讨论】:

    标签: python time-series forecasting facebook-prophet


    【解决方案1】:

    您的数据的季节性因素不一致,在 2017-04 到 2018-10 之间似乎有一点年度季节性。第一个答案是绝对正确的,但如果你觉得有一些季节性,你可以通过改变它的傅里叶顺序来减少它的影响。 https://facebook.github.io/prophet/docs/seasonality,_holiday_effects,_and_regressors.html#fourier-order-for-seasonalities

    这个页面有如何做到这一点,默认的傅立叶阶数是 10,减少了它影响的值。 试试这个希望对你有帮助

    【讨论】:

    • 嗨 Sandeep,如何确定季节性的最佳值。我应该保持 1/2/3 .. 多少?
    • 尝试对所有值进行循环,并尝试计算测试集中的错误率,或比较残差。因为傅立叶阶计算难度不大,所以试着调优。选择最好的,我认为这将是简单的 hack
    【解决方案2】:

    您的数据完全没有季节性。为了存在年度季节性,您应该有一个年复一年重复的模式,但是从 10/2015 到 10/2016 的时间序列的形状与 10/2016 到 10/2017 之间的形状完全不同。所以强制每年的季节性会给你带来奇怪的结果,你应该把它关掉(即只使用 Prophet 的默认设置)。

    【讨论】:

    • 谢谢亚历克斯,明白了,这很有意义!
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多