时间序列预测之一:指数平滑法(二)R语言——代码实现
? 參考:https://www.cnblogs.com/fengzzi/p/10044426.html
指數模型是用來預測時序未來值的最常用模型。這類模型相對比較簡單,但是實踐證明它們的短期預測能力較好。不同指數模型建模時選用的因子可能不同。比如
- 單指數模型(simple/single exponential model)擬合的是只有常數水平項和時間點i處隨機項的時間序列,這時認為時間序列不存在趨勢項和季節效應;
- 雙指數模型(double exponential model;也叫Holt指數平滑,Holt exponential smoothing)擬合的是有水平項和趨勢項的時序;
- 三指數模型(triple exponential model;也叫Holt-Winters指數平滑,Holt-Winters exponential smoothing)擬合的是有水平項、趨勢項以及季節效應的時序。
R中自帶的HoltWinters()函數或者forecast包中的ets()函數可以擬合指數模型。ets()函數的備選參數更多,因此更實用。
1. HoltWinters()函數
R語言與數據分析之七:時間序列簡單指數平滑
R語言與數據分析之八:時間序列--霍爾特指數平滑法
R語言與數據分析之九:時間內序列--HoltWinters指數平滑法
2. forecast包中的ets()函數
平滑參數(α,β,γ)=(水平,趨勢,季節)
2.1 最簡單參數
? ? ? ? ets(ts, model="zzz")
? ? ? ?model="ZZZ",依次含義為錯誤類型、趨勢類型、季節類型。 "A"=additive, "M"=multiplicative and "Z"=automatically
? ? ? ?其中ts是要分析的時序,限定模型的字母有三個。第一個字母代表誤差項,第二個字母代表趨勢項,第三個字母則代表季節項。可選的字母包括:相加模型(A)、相乘模型(M)、無(N)、自動選擇(Z)。
? ? ? ?"A"=additive, "M"=multiplicative and "Z"=automatically
2.2 所有參數
ets(y, model="ZZZ", damped=NULL, alpha=NULL, beta=NULL, gamma=NULL,?phi=NULL, additive.only=FALSE, lambda=NULL,??lower=c(rep(0.0001,3), 0.8), upper=c(rep(0.9999,3),0.98),?opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3,?bounds=c("both","usual","admissible"), ic=c("aic","aicc","bic"),restrict=TRUE)
y:一個數值向量或時間系列
model="ZZZ":依次含義為錯誤類型、趨勢類型、季節類型。 "A"=additive, "M"=multiplicative and "Z"=automatically
(additive,為加法;multiplicative,乘法;damped,阻尼;Null,無)
damped=NULL,一個的阻尼趨勢
lower=c(rep(0.0001,3), 0.8), upper=c(rep(0.9999,3),0.98), 參數(α,β,γ,φ)的上下界
opt.crit=c("lik","amse","mse","sigma","mae"):優化標準, “MSE”(均方誤差),“AMSE”((Average MSE over first nmse forecast horizons),“sigma”(標準偏差殘差),“mae”(殘差絕對值的平均值),或“lik”(對數似然,默認值)
nmse=3, 平均多級MSE(1 <=nmse<= 10)的步數。
bounds=c("both","usual","admissible"): 收斂參數空間類型,"usual" 表示所有參數都必須指定上限和下限之間,“"admissible"表示參數必須位于允許的空間,”"both"(默認)的交叉點這些區域。
ic=c("aic","aicc","bic"):在模型選擇要使用的信息準則。
restrict=TRUE:如果是TRUE,無限方差模型將不會被允許
3. 預測準確性度量
- 平均誤差和平均百分比誤差:一般來說,平均誤差和平均百分比誤差用處不大,因為正向和負向的誤差會抵消掉。
- RMSE:給出了平均誤差平方和的平方根,本例中即1.13°F。
- 平均絕對百分誤差:給出了誤差在真實值中的占比,它沒有單位,因此可以用于比較不同時序間的預測準確性;但它同時假定測量尺度中存在一個真實為零的點(比如每天的游客數量),但華氏溫度中并沒有一個真實為零(即不存在分子運動動能)的點,因此這里不能用這個統計量。
- 平均絕對標準化誤差:是最新的一種準確度測量,通常用于比較不同尺度的時序間的預測準確性。這幾種預測準確性度量中,并不存在某種最優度量,不過RMSE相對最有名、最常用。
總結
以上是生活随笔為你收集整理的时间序列预测之一:指数平滑法(二)R语言——代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言:ts() 时间序列的建立
- 下一篇: R语言:时间序列常用函数