名称:自动预测过程
版本:0.2.1
日期:2017-11-08
描述:实现了一个时间序列的预测过程,基于能够拟合年度、周等周期以及假期等因素的非线性趋势的加法模型。模型要求至少一年以上的周期性历史数据。prophet模型对于缺失值、趋势突变以及大量离群点的数据有较好的鲁棒性。
平台:R(3.2.3以上版本),Rcpp(0.12.0以上版本)
载入包: dplyr, extraDistr, ggplot2, grid,rstan, scales, stats, tidyr
作者: Sean Taylor [cre, aut] , BenLetham[aut]
主要联系人:Sean Taylor
---------------------------------------------------------------------------------------------------------
下面是分别介绍包中方法的具体使用,共12个方法:
描述:
预测器,模型生成器
用法:
prophet( df = NULL, growth ="linear", changepoints = NULL, n.changepoints = 25,
yearly.seasonality ="auto", weekly.seasonality = "auto", daily.seasonality ="auto",
holidays = NULL,seasonality.prior.scale = 10, holidays.prior.scale = 10,
changepoint.prior.scale = 0.05,mcmc.samples = 0, interval.width = 0.8,
uncertainty.samples = 1000, fit= TRUE, ... )
参数说明:
df (选择项)历史数据框,必须包含列:ds(date型)、y(时间序列),当逻辑增长时,必须包含cap列指明每一个ds的capacity。不提供此参数时,模型会被实例化但是不会被拟合,可以使用fit.prophet(m,df)来拟合模型。
growth 字符串‘linear’或‘logistic’,表示线性或者逻辑增长趋势。
changepoints 日期型向量,表示潜在的拐点,不指定时系统自动选择。
n.changepoints 拐点数量,当changepoints有输入时不用指定,默认情况选择df$ds的前80%。
yearly.seasonality 拟合年度季节性,可以为‘auto’,TRUE,FALSE,或者是一些傅里叶成分来生成。
weekly.seasonality 拟合周度季节性,可以为‘auto’,TRUE,FALSE,或者是一些傅里叶成分来生成。
daily.seasonality 拟合日的季节性,可以为‘auto’,TRUE,FALSE,或者是一些傅里叶成分来生成。
holidays 数据框包含holiday列(字符型)和ds列(日期型),以及可选列lower_window和upper_window表示节假日所跨度的时间段。例如lower_window=-2表示从节假日当天往前延长两天,还可以有一列可选列prior_scale指明每个节假日的现有规模。
seasonality.prior.scale 参数用于调节季节模型的强度,较大的值允许模型适应较大的季节波动,较小的值则会抑制季节变动。可以使用add_seasonality来指定个别季节性。
holidays.prior.scale 参数用于调节节假日成分模型的强度,除非在节假日输入中被重写。
changepoint.prior.scale 参数调节自动改变点选择的灵活性,较大的值会产生较多的改变点,较小的值则产生较少的转折点。
mcmc.samples 整型,大于0将用指定的MCMC样本进行完全贝叶斯推理,为0时则进行MAP估计(最大后验概率估计)。
interval.width 数值型,预测的不确定性区间的宽度。
uncertainty.samples 用于估计不确定区间的模拟绘图的数量
fit 布尔型,FALSE时表示模型被初始化但是不进行拟合。
输出值:
prophet预测模型
描述:
新建一个数据框,指明需要预测到将来多长时间
用法:
make_future_dataframe (m, period,freq = ’day’, include_history = TRUE)
参数说明:
m Prophet对象
periods 将来要预测时间范围,整型
freq ‘day’,‘week’,‘month’,‘quarter’,‘year’,1 (1 sec),60 ( 1 minute ) or 3600 ( 1 hour )
include_history 布尔值,是否包含历史日期
输出值:
数据框,从m$history结束处延伸至需要预测时间点的周期数
(三)predict.prophet —— 使用prophet模型进行预测
描述:
使用prophet模型进行预测
用法:
## S3 method for class‘prophet’
predict (object, df = NULL, …)
参数说明:
object Prophet对象
df 包含预测日期(column ds),逻辑增长时需要容量(column cap),如果不指定则在历史数据基础上预测 【make_future_dataframe()返回的数据框】
输出值:
预测结果数据框
描述:
绘制prophet预测结果图
用法:
## S3 method for class‘prophet’
plot (x, fcst, uncertainty =True, plot_cap = TRUE, xlabel = “ds”, ylabel = “y”, …)
参数说明:
x Prophet对象
fcst predict(m, df)返回的数据框
uncertainty 布尔值,指明是否画出yhat的预测区间,fcst中必须有yhat_lower和yhat_upper字段
plot_cap 布尔值,指明是否画出capacity
xlabel x轴的标签
ylabel y轴的标签
输出值:
ggplot2图
(五)plot_forecast_component —— 绘制prophet预测结果的分量图
描述:
绘制prophet预测结果分量图,包含总体趋势、节假日以及周度、年度季节因素
用法:
plot_forecast_component (fcst,name, uncertainty = True, plot_cap = TRUE)
参数说明:
fcst predict(m, df)返回的数据框
name 字符串,fcst列的名字
uncertainty 布尔值,指明是否画出yhat的预测区间,fcst中必须有yhat_lower和yhat_upper字段
plot_cap 布尔值,指明是否画出capacity
输出值:
ggplot2图
(六)prophet_plot_components —— 绘制预测结果的各个成分图
描述:
绘制预测结果的各个成分图,输出一个ggplot2图像包括趋势、周度、年度季节以及节假日因子的图形面板。
用法:
prophet_plot_components(m, fcst, uncertainty = TRUE, plot_cap = TRUE, weekly_start = 0,
yearly_start = 0)
参数说明:
m Prophet模型对象
fsct predict(m, df)返回的数据框
uncertainty 布尔型,指定是否趋势的不确定区间,即fcst数据框中的trend_lower和trend_upper列
plot_cap 布尔值,指明是否画出capacity
weekly_start 整型,指明周季节图中起始的天,0(默认)表示一周从周六开始。
yearly_start 整型,指明年度季节图中开始的天,0(默认)表示从1月1日开始。
输出值:
返回一个列表,包含绘制ggplot图像的参数。