我有每月数据并将我的 y 转换为 log(y) 并使用一些额外的回归器来使用prophet model.
我从 201601 到 202008 有 60 个数据点。
这是我的模式:
holidays = pd.DataFrame({
"holiday":"New_Year",
"ds": pd.to_datetime(["2015-11-30","2016-11-30","2017-11-30","2018-11-30","2019-11-30","2020-11-30"]),
"lower_window":-15,
"upper_window":90
})
m = Prophet(interval_width=0.95,holidays=holidays)
for c in cols:
m.add_regressor(c)
m.fit(data)
train_forecast = m.predict(data)
我训练和测试相同的数据,因为我只有 60 分。
现在谈到重要问题,我想将任何异常值/异常标记为未来几个月的早期预警(假设是 6 个月的预测)202009 to 202012
当前方法:我取 yhat 的均值和标准差,然后在这 60 个数据点上绘制第一条、第二条和第三条线。无论超出 3std,我都将其标记为预警。这是正确的方法吗?
问题 1:由于我采用了 interval_width=0.95,所以我对未来数据的预测是否总是落在预测值的 3 std.deviation 之内?在那种情况下,我永远不会有异常。
我也在许多博客中看到了这种方法:
y_original > forecasted['yhat_upper'] = 1
y_original< forecasted['yhat_lower']= -1
但是对于看不见的数据(6个月的未来)我不会有y_original
权利??因此,该方法不适用于预测值。
问题 2:如何使用现有的 Prophet 模型来标记未来预测值的异常?