y ( t ) = g ( t ) + s ( t ) + h ( t ) + ε ( t ) \ y(t) = g(t)+s(t)+h(t)+\varepsilon (t)\quad y(t)=g(t)+s(t)+h(t)+ε(t)
g(t)
属于趋势项。源代码中以changepoints
分段采取时间轴的最小与最大对应的y值并取之斜率。s(t)
属于季节项。源代码包括以年、周、日为周期,用傅里叶级数来求每一天对应项所对应的值。h(t)
属于节假日项。节假日的时间是自己在设置参数时设定的,除了可以设定这一天为节假日,还能设置节假日的前一天和后一天,源码中设置这一天的该项为1。growth = ‘linear’:fbporphet有两种模式,线性增长模式和逻辑增长模式(growth=‘logistic’)
changepoints:指定潜在改变点,如果不指定,将会自动选择潜在改变点.
n_changepoints:默认值为25,表示changepoints的数量大小,如果changepoints指定,该传入参数将不会被使用。
如果changepoints不指定,将会从输入的历史数据前80%中选取25个(个数由n_changepoints传入参数决定)潜在改变点。
yearly_seasonality:指定是否分析数据的年季节性,True输出yearly_trend,yearly_upper,yearly_lower等数据。
weekly_seasonality:指定是否分析数据的周季节性,True输出weekly_trend,weekly_upper,weekly_lower等数据。
daily_seasonality:自定义的参数,目前fbprophet不支持以小时为粒度的数据,
holidays:传入pd.dataframe格式的数据。这个数据包含有holiday列 (string)和ds(date类型)和可选列
lower_window和upper_window来指定该日期的lower_window或者upper_window范围内都被列为假期。
lower_window=-2将包括前2天的日期作为假期
upper_window=1将包括后1天的日期作为假期
seasonality_prior_scale:季节性模型的调节强度,较大的值允许模型以适应更大的季节性波动,较小的值抑制季节性。
holidays_prior_scale:假期组件模型的调节强度。
changepoint_prior_scale:自动的潜在改变点的灵活性调节参数,较大值将允许更多的潜在改变点,较小值将允许更少的潜在改变点。
mcmc_samples:整数,若大于0,将做mcmc样本的全贝叶斯推理,如果为0,将做最大后验估计。指定贝叶斯抽样,例如mcmc_samples=20
interval_width:浮点数,给预测提供不确定性区间宽度,如果mcmc_samples=0,这将是预测的唯一不确定性,如果mcmc_samples>0,这将会被集成在所有的模型参数中,其中包括季节性不确定性
uncertainty_samples:模拟绘制数,用于估计不确定的时间间隔
include_history:是否包含历史数据,保持默认就好。
def __init__(
self,
growth='linear',
changepoints=None,
n_changepoints=25,
yearly_seasonality=True,
weekly_seasonality=True,
daily_seasonality=True,
holidays=None,
seasonality_prior_scale=10.0,
holidays_prior_scale=10.0,
changepoint_prior_scale=0.05,
mcmc_samples=0,
interval_width=0.80,
uncertainty_samples=1000,
):
Reference: