如何告诉先知不要预测负值。

11

在 R 中使用 Facebook 的“Prophet”包进行预测。想知道是否有一种方法可以使用它,使其不会预测出负值?

谢谢!


1
我不了解Prophet,但通常在时间序列建模中,如果您有一个下限为0的连续度量,则需要在建模之前进行转换,例如对其取对数,对转换后的序列进行建模,生成预测,然后将这些预测值反向转换回原始比例。 - ulfelder
我删除了 [prophet] 标签 - 该标签与 Facebook Prophet 无关。 - YowE3K
@YowE3K,我觉得这与prophet非常相关,你为什么不这么认为呢?这是与prophet库相关的预测问题。 :) 我通过Google查询“如何在prophet零中设置下限”找到了这个问题。 - Andrea Ciufo
3个回答

4

在Prophet中,您可以通过将列绑定到样本数据框和前向日期列表来设置上限和下限,但这只会限制分解模型的趋势部分。

要确保所有最终估计值都大于0,您可以:

  1. 相应地调整下限(通常不建议),或者
  2. 在拟合模型之前对所有数据取对数,然后使用predictive_samples查看后验分布。然后需要使用exp()将其转换回原始单位。

4
这在文档此页面中有解释。
简言之,您应该使用“逻辑”增长而不是“线性”增长。您必须设置一个上限(最大可能值),并且可以设置一个下限(如果不设置,则默认为零)。
假设您在df中拥有数据(带有日期的ds列和值的y列)。
您需要为过去和未来都设置一个上限。
(我正在使用文档中包含的8.5例子数字...这个值可能会因每天而异,对于您的情况,这显然应该设置为有意义的内容)
您可以(但不需要)设置一个下限,以保证最小值。
df$cap <- 8.5
m <- prophet(df, growth = 'logistic')
future <- make_future_dataframe(m, periods = 1826)
future$cap <- 8.5
#future$floor <- 1.5
fcst <- predict(m, future)
plot(m, fcst)


0

没有找到参数@chunjin。是否有类似于prophet(df, floor=0)的方法? - Bernardo

R

预测 <- 预测(m, 未来) tail(预测[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])
- chunjin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接