第二章 不确定的间隔

默认情况下,Prophet会为了预测值,返回一个不确定的间隔值。针对这些不确定的间隔,下列有一些重要的假设。

根据产生不确定的原因,可以分为这几类:趋势的不确定,季节性估计的不确定,以及噪音的不确定。

趋势的不确定

在预估未来的过程中,最大的不确定性来自未来趋势的变化。历史的时间序列能很清楚的展示趋势变化,Prophet也能很好的适应它。但是,我们预估的未来趋势会是什么样?这个是不太确定的。因此我们只能尽可能做看起来合理的事。
我们假设未来会与历史有着一样的趋势变化。特别地,我们假设未来趋势变化的平均频率和幅度将与我们在历史上观察到的相同。我们预测这些趋势变化,通过计算它们的分布,我们得到不确定区间。

这种测量不确定性的方法的一个特性是,通过增加changepoint_prior_scale,允许更高的速率灵活性,将增加预测的不确定性。这是因为,如果我们在历史中使用更多的变化率模型,那么我们将在未来期望得更多。并使不确定性区间成为过度拟合的有用指标。

不确定区间的宽度(默认为80%)可以使用参数interval_width来设置:

# Python
forecast = Prophet(interval_width=0.95).fit(df).predict(future

同样,这些间隔假定未来将看到与过去相同的频率和幅度的变化率。这个假设可能不正确,所以您不应该期望在这些不确定间隔上得到准确的覆盖。

季节的不确定性

默认情况下,Prophet只会在趋势和观测噪声中返回不确定性。为了得到季节性的不确定性,你必须进行充分的贝叶斯抽样。这个可以使用参数mcmc.samples来实现(默认值为0)。在Quickstart中Peyton Manning数据的前六个月,我们在这里这样做:

# Python
m = Prophet(mcmc_samples=300)
forecast = m.fit(df).predict(future)

这将用MCMC抽样代替典型MAP估计,并且能根据有多少观测值预测持续更长时间——预计几分钟而不是几秒钟。如果你做了全面的抽样,那么当你绘制它们的时候,你会看到季节成分的不确定性:

# Python
fig = m.plot_components(forecast)
uncertainty_intervals_10_0.png

您可以在Python中使用m.predictive_samples(future)方法访问原始的后验预测样本。在PyStan有一些针对Windows的上游问题,这使得MCMC采样非常缓慢。在Windows中,MCMC采样的最佳选择是在Linux VM中使用R或Python。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天是星期天让李俊达多睡了会,吃完早饭后把作业梳理一下。我出去有事了。接近中午11点他妈妈打电话说:李俊...
    俊达爸阅读 270评论 0 0
  • 昨天,难得又吃了回阳春面。上海的阳春面在我记忆中的美味和美好是无与伦比的,暖暖的,油油的,面条滑溜溜,轻轻一吸,顺...
    子非鱼2015阅读 360评论 1 2
  • 别说想我好吗?别说爱我好吗?也许爱上你不是我的错,也许,你选错了人,在那个秋天,我的心情如落下的枫叶被人踩踏那样的...
    雨下忧愁阅读 183评论 0 1
  • 我现在用的是2014年出的 Macbook Pro。近三年来,断断续续装了很多写作软件。大浪淘沙,最后留下来的,就...
    某人李下阅读 116,388评论 70 487
  • (一) 当我睁开眼睛的时候,一个老婆婆正在看着我。 “你醒啦!” “嗯……这里是哪儿?” ...
    鱼翅大魔王阅读 497评论 0 1