chapter15.3 时间序列2--指数预测模型

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指数平滑在单指数平滑的基础上添加了趋势项
\begin{align} \\&L:level\ ; \quad T:Trend \\&Y_{t+1}:forecast\ value\ at\ time\ {t+1} \\ \\& Y_{t+1} = L_{t} + (h)T_{t} \\ \\&L_{t} = \alpha Y_{t} + (1-\alpha)(L_{t-1} + T_{t-1}) \\ \\&T_{t} = \beta (L_{t} - L_{t-1}) + (1-\beta)T_{t-1} \end{align}
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模型的基础上加入了季节项
\begin{align} \\&L:level\ ; \quad T:Trend ; \quad S: Seasonal \\&M: seasonal\ period ; \quad h: seasonal\ horizon \\&Y_{t+1}:forecast\ value\ at\ time\ {t+1}\\ \\& Y_{t+1} = (L_{t} + (h)T_{t})S_{t-M-h}\\ \\&L_{t} = \alpha (Y_{t}/S_{t-M}) + (1-\alpha)(L_{t-1} + T_{t-1})\\ \\&T_{t} = \beta (L_{t} - L_{t-1}) + (1-\beta)T_{t-1}\\ \\&S_{t} = \gamma(Y_{t} - L_{t}) + (1-\gamma)S_{t-m} \end{align}

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")
  • 相关参考
    [1] https://www.youtube.com/watch?v=uLHOfewK9wc

你可能感兴趣的:(chapter15.3 时间序列2--指数预测模型)