R语言与数据分析之九:时间内序列--HoltWinters指数平滑法

今天继续就指数平滑法中最复杂的一种时间序列:有增长或者降低趋势并且存在季节性波动的时间序列的预测算法即Holt-Winters和大家分享。这种序列可以被分解为水平趋势部分、季节波动部分,因此这两个因素应该在算法中有对应的参数来控制。

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

souvenir <- scan("http://robjhyndman.com/tsdldata/data/fancy.dat")
souvenirtimeseries <- ts(souvenir, frequency=12, start=c(1987,1))
logsouvenirtimeseries <- log(souvenirtimeseries)
plot.ts(logsouvenirtimeseries)


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

souvenirtimeseriesforecasts <- HoltWinters(logsouvenirtimeseries)

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

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

plot(souvenirtimeseriesforecasts)

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

library("forecast")
souvenirtimeseriesforecasts2 <- forecast.HoltWinters(souvenirtimeseriesforecasts, h=48)
plot.forecast(souvenirtimeseriesforecasts2)


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

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

三张图的结果表示咱们R提供的Holt-Winters()算法还是特别牛掰的,关于指数平滑就到此就彻底结束啦。



  • 2
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
时间序列分析是研究一系列按照时间先后顺序排列的数据的变化规律和趋势的统计方法。它广泛应用于经济学、金融学、气象学、交通运输等领域。 在应用R语言进行时间序列分析时,首先需要安装并加载相关的R包。其中,最常用的包包括“stats”、“forecast”和“xts”等。可以通过在R控制台中输入"install.packages('包名')"来下载和安装相应的R包。 下载完成后,可以通过如下步骤进行时间序列分析: 1. 读取数据:使用R语言提供的函数读取时间序列数据,如"read.csv()"函数用于读取CSV格式的数据文件。 2. 转换数据:将读取的数据转换为时间序列对象,可以利用“ts()”函数将数据转换为时间序列对象,或者使用“xts”包将数据转换为eXtensible Time Series(xts)对象。 3. 可视化数据:使用R语言中的绘图函数如“plot()”、"acf()"和"pacf()"等对时间序列数据进行可视化分析,观察数据的趋势、季节性和自相关性等特征。 4. 模型拟合:选择适当的时间序列模型,可以通过“auto.arima()”函数自动选择ARIMA模型,或者手动选择模型参数进行拟合。 5. 模型诊断和评估:通过观察残差图、自相关图和偏自相关图等对模型进行诊断,评估模型的拟合效果和预测能力。 6. 预测:使用拟合好的模型进行预测,可以通过“forecast()”函数获得未来一段时间预测结果。 总之,通过学习和应用R语言进行时间序列分析,可以更好地理解数据的变化规律和趋势,并提供可靠的预测结果。同时,R语言作为一种开源的数据分析工具,拥有丰富的时间序列分析函数和包,为研究者提供了便捷和灵活的数据分析环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值