笔记说明
在datacamp网站上学习“Time Series with R ”track
“Forecasting Using R”课程 做的对应笔记。
学识有限,错误难免,还请不吝赐教。
学习的课程为“Forecasting Using R”,主要用forecast包。
课程参考教材Forecasting: Principles and Practice
课程中数据可在fpp2包得到
双指数模型的理论部分课程中没有做比较详细的解释。实话说我不是很理解双指数模型的公式。。。硬着头皮做这期笔记
为了做这次笔记我也参考了其他人的简书文章:指数平滑方法简介
Holt's linear trend
上次介绍的简单指数平滑只适用于没有长期趋势、没有季节趋势的时间序列。其预测结果是一条水平直线。
对模型添加趋势成分:
预测值:
平滑值:
斜率控制趋势,由于它随时间变化,所以被称为local lineal trend:
控制着斜率的变化速度,很小意味着基本不变。这里用符号是因为以后会用到
- 模型有两个平滑参数:,取值范围都是0到1
- 通过最小化SSE来选择
Damped trend methods
Holt's linear trend method 得到的预测结果是一条直线,即认为未来的趋势是固定的。对于短期有趋势、长期趋于稳定的序列,可以引入一个阻尼系数(Damping parameter)Φ,模型变为
预测值:
平滑值:
趋势:
- 阻尼系数
- 时即为Holt's linear trend
- 短期有趋势,长期趋于稳定
R实现
在forecast包中,可以用holt(y, damped=FALSE h = , ...)函数实现上面介绍的两种方法。y为数据,h为生成预测值的时间数,damped选项表示是否加阻尼系数,默认为否。
实例数据:austa数据为1980-2015年间每年到澳大利亚的国际旅客数(以百万为单位)
#建模并生成预测值
fc1 <- holt(austa,h=30,PI=F)
fc2 <- holt(austa,damped=T,h=30,PI=F)
# plot
autoplot(austa) + xlab("Year") + ylab("millions") +
autolayer(fc1, series="Linear trend") +
autolayer(fc2, series="Damped trend")
代码中的PI=F是取消生成预测值的置信区间
为了使两个模型的区别更加明显,这里h设为30,实际中不推荐预测这么长时间。
结果:
网友评论