15.3 时间序列的预测
15.3.1 指数预测模型
- 单指数平滑
t+1预测值可以看成是第t期预测值和真实值的加权,也可以看成是第t期的预测值再加上一个关于alpha的修正项
在R里可以使用ets()
函数拟合模型
类型 | 参数 | 函数 |
---|---|---|
单指数 | 水平项 | ets(ts, model="ANN") |
双指数 | 水平项,趋势项 | ets(ts, model="AAN") |
三指数 | 水平项,趋势项,季节项 | ets(ts, model="AAA") |
#install.packages("forecast")
nhtemp # 康涅狄格州纽黑文市从1912年到1971年每一年的平均华氏温度
library(forecast)
fit <- ets(nhtemp, model="ANN")
forecast(fit, 1) # forecast(fit, k) k表示向前预测几步
plot(forecast(fit, 1)
, xlab="Year"
, ylab=expression(paste("Temperature (", degree*F,")",))
,main="New Haven Annual Mean Temperature")
accuracy(fit) # 得到准确率
- Holt指数平滑(双指数)
单指数平滑假定时序中缺少趋势项和季节项,Holt和Holt-Winters可以弥补单指数平滑的不足
Holt指数平滑在单指数平滑的基础上添加了趋势项
T代表趋势项,L代表水平项
第t期的趋势项可以看成是t期水平项与t-1期水平项的差值与t-1期趋势项的加权
fit <- ets(log(AirPassengers), model="AAN")
accuracy(fit)
pred<-forecast(fit,5)
plot(pred, main="Forecast for Air Travel",ylab="Log(AirPassengers)", xlab="Time")
- Holt-Winters指数平滑(三指数)
Holt-Winters指数平滑在Holt模型的基础上加入了季节项
fit <- ets(log(AirPassengers), model="AAA")
fit
accuracy(fit)
pred<-forecast(fit,5)
plot(pred, main="Forecast for Air Travel",ylab="Log(AirPassengers)", xlab="Time")