多重季节性的谐波回归
当时间序列存在多重季节模式时,谐波回归也非常有用。比如,taylor 数据包含 2000 年间几个月内英格兰和威尔士的半小时用电量。其季节周期为 48(每日季节性)以及 7 x 48 = 336(每周季节性)。数据量不够,无法考虑年度季节性。
对于这样一条很长的时间序列,auto.arima() 拟合会花很长时间。因此,您将改用 tslm() 函数,基于 Fourier 项拟合一个标准回归模型。它与 lm() 十分类似,但专为时间序列设计。面对多重季节性时,您需要为每个季节周期指定阶数 $K$。
# formula 参数是对待拟合模型的
# 符号化描述
> args(tslm)
function (formula, ...)
tslm() 是新引入的函数,您基本可以直接跟随预写代码。taylor 数据已加载到您的工作区。
本练习是课程的一部分
R 中的预测
练习说明
- 对
taylor拟合一个名为fit的谐波回归,对每种季节性均使用阶数 10。 - 将预测 20 个工作日的结果保存为
fc。请记住数据是半小时级,以便设定正确的h值。 - 绘制预测的时间图。
- 检查已拟合模型的残差。正如您将看到的,
auto.arima()的表现可能会更好。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Fit a harmonic regression using order 10 for each type of seasonality
fit <- tslm(taylor ~ fourier(___, K = c(10, 10)))
# Forecast 20 working days ahead
fc <- forecast(___, newdata = data.frame(fourier(___, K = ___, h = ___)))
# Plot the forecasts
___
# Check the residuals of fit
___