• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言 Holt-Winters法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有增长或者降低趋势并且存在季节性波动的时间序列的预测算法即Holt-Winters,这种序列可以被分解为水平趋势部分、季节波动部分,因此这两个因素应该在算法中有对应的参数来控制。

Holt-Winters算法中提供了alpha、beta和gamma 来分别对应当前点的水平、趋势部分和季节部分,参数的去执法范围都是0-1之间,并且参数接近0时,近期的观测值的影响权重就越小。我们以澳大利亚昆士兰州海滨纪念商品的月度销售日子为分析对象,绘制出该时间序列,捞个整体印象:

[plain] view plain copy
  1. souvenir <- scan("http://robjhyndman.com/tsdldata/data/fancy.dat")  
  2. souvenirtimeseries <- ts(souvenir, frequency=12, start=c(1987,1))  
  3. logsouvenirtimeseries <- log(souvenirtimeseries)  
  4. plot.ts(logsouvenirtimeseries)  


我们采用R中提供的HoltWinters算法进行预测,实现和结果如下:

[plain] view plain copy
  1. souvenirtimeseriesforecasts <- HoltWinters(logsouvenirtimeseries)  

Alpha=0.4,意味着当期预测基于平衡了最近和较远期的观测值。Beta 为0表明趋势部分的斜率在整个时间序列上市不变的,且等于初始值,这个也符合我们的直观感受,水平改变非常多,但是趋势部分斜率是基本不变的,于此相反gamma=0.96表明当期季节部分预测仅仅基于最近的观测值。

我们同时画出预测值和观测值来看下预测的效果如何:

[plain] view plain copy
  1. plot(souvenirtimeseriesforecasts)  

可见Holt-Winters算法非常成功的预测了季节峰值,为了预测未来期数的值,我们同样采用forecast函数包,以预测未来48个月销售为例:

[plain] view plain copy
  1. library("forecast")  
  2. souvenirtimeseriesforecasts2 <- forecast.HoltWinters(souvenirtimeseriesforecasts, h=48)  
  3. plot.forecast(souvenirtimeseriesforecasts2)  


图中蓝色线条显示的为预测值,深灰色部分为80%的置信区间,浅灰色为95的置信区间。

接下来老套路采用Ljung-Box 和画出直方图来检查预测误差的随机性,就不重复贴代码了,有忘记的童鞋请转前两篇,我这里就直接贴结果图了:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言运行shiny的函数报错的解决办法发布时间:2022-07-18
下一篇:
【数据可视化】R语言实现网络可视化发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap