名稱:自動預測過程
版本: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<[email protected]>
---------------------------------------------------------------------------------------------------------
下面是分別介紹包中方法的具體使用,共12個方法:
(一)prophet —— prophet預測器
描述:
預測器,模型生成器
用法:
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 —— 新建一個數據框包含將來需要預測的日期
描述:
新建一個數據框,指明需要預測到將來多長時間
用法:
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()返回的數據框】
輸出值:
預測結果數據框
(四)plot.prophet ——繪製prophet預測結果圖
描述:
繪製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圖像的參數。