Prophet文档中文翻译--uncertainty_intervals

%matplotlib inline
from fbprophet import Prophet
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import logging
logging.getLogger('fbprophet').setLevel(logging.ERROR)
import warnings
warnings.filterwarnings("ignore")
df = pd.read_csv('examples/example_wp_log_peyton_manning.csv')
df = df.loc[:180,]  # Limit to first six months
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=60)

默认情况下,Prophet将返回预测的不确定性区间–yhat。这些不确定性区间背后有几个重要的假设。

预测中存在三个不确定性来源:趋势的不确定性,季节性估计的不确定性以及额外的观测噪声。

趋势中的不确定性

预测中最大的不确定性来源是未来趋势的变化。我们在本文档中已经看到的时间序列显示了历史上明显的趋势变化。Prophet能够发现和适应这些,但我们预期的趋势变化会是什么?我们无法确切地知道,所以我们做了最合理的事情–我们假设未来会看到与历史相似的趋势变化。特别是,我们假设未来趋势变化的平均频率和幅度将与我们在历史中观察到的相同。我们预测这些趋势变化并通过计算它们的分布来获得不确定性区间。

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

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

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

同样,这些区间假设未来将看到与过去相同的频率变化频率和幅度。这种假设可能不正确,因此您不应期望在这些不确定区间内得到准确的覆盖。

季节性的不确定性

默认情况下,Prophet只会返回趋势和观察噪声的不确定性。为了获得季节性的不确定性,您必须进行完整的贝叶斯抽样。这是使用参数mcmc.samples(默认为0)完成的。我们在这里用快速启动例子中的Peyton Manning数据的前六个月做示范:

m = Prophet(mcmc_samples=300)
forecast = m.fit(df).predict(future)
WARNING:pystan:n_eff / iter for parameter beta_m[1] is nan!
WARNING:pystan:n_eff / iter for parameter beta_m[2] is nan!
WARNING:pystan:n_eff / iter for parameter beta_m[3] is nan!
WARNING:pystan:n_eff / iter for parameter beta_m[4] is nan!
WARNING:pystan:n_eff / iter for parameter beta_m[5] is nan!
WARNING:pystan:n_eff / iter for parameter beta_m[6] is nan!
WARNING:pystan:n_eff / iter below 0.001 indicates that the effective sample size has likely been overestimated
WARNING:pystan:Rhat for parameter beta_m[1] is nan!
WARNING:pystan:Rhat for parameter beta_m[2] is nan!
WARNING:pystan:Rhat for parameter beta_m[3] is nan!
WARNING:pystan:Rhat for parameter beta_m[4] is nan!
WARNING:pystan:Rhat for parameter beta_m[5] is nan!
WARNING:pystan:Rhat for parameter beta_m[6] is nan!
WARNING:pystan:Rhat above 1.1 or below 0.9 indicates that the chains very likely have not mixed

这用MCMC采样取代了的型MAP估计,并且可能需要更长的时间,具体取决于有多少观测值 - 期望几分钟而不是几秒钟。如果您进行完整采样,那么在绘制它们时,您将看到季节性成分的不确定性:

fig = m.plot_components(forecast)

png

您可以使用m.predictive_samples(future)方法在Python中访问原始后验预测样本。

PyStan for Windows中存在问题,这使得MCMC采样速度极慢。Windows中MCMC采样的最佳选择是在Linux VM中使用R或Python。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值