开始使用免费开始使用

每周数据的预测

对于每周数据,用 ETS 或 ARIMA 模型处理季节性往往很困难,因为季节长度太大(约为 52)。可以改用谐波回归,它通过正弦和余弦函数来刻画季节性。

fourier() 函数可以方便地生成所需的谐波项。阶数($K$)越高,允许的季节形状就越"起伏"。当 \(K=1\) 时,就是一条简单的正弦曲线。您可以通过最小化 AICc 值来选择 $K$。正如视频中所示,fourier() 需要传入一个时间序列、要生成的傅里叶项个数,以及可选的需要预测的行数:

> # fourier(x, K, h = NULL)

> fit <- auto.arima(cafe, xreg = fourier(cafe, K = 6),
                    seasonal = FALSE, lambda = 0)
> fit %>%
    forecast(xreg = fourier(cafe, K = 6, h = 24)) %>%
    autoplot() + ylim(1.6, 5.1)

预加载的 gasoline 数据包含美国成品车用汽油(motor gasoline)周度数据。本练习中,您将对该数据集拟合谐波回归,并预测未来 3 年。

本练习是课程的一部分

R 中的预测

查看课程

练习说明

  • 使用 fourier()gasoline 上生成 xreg 矩阵,命名为 harmonics,阶数设为 $K=13$(该值是通过最小化 AICc 选出的)。
  • 拟合一个动态回归模型保存到 fit。将 xreg 设为 harmonics,并将 seasonal 设为 FALSE,因为季节性由回归项处理。
  • 用相同方式建立新的 xreg 矩阵 newharmonics,然后计算未来 3 年的预测并保存为 fc
  • 最后,绘制预测结果 fc

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Set up harmonic regressors of order 13
harmonics <- fourier(___, K = ___)

# Fit regression model with ARIMA errors
fit <- auto.arima(___, xreg = ___, seasonal = ___)

# Forecasts next 3 years
newharmonics <- fourier(___, K = ___, h = ___)
fc <- forecast(___, xreg = ___)

# Plot forecasts fc
___
编辑并运行代码