9.2 ARIMA 误差回归在 R 中的实现

当指定Arima()函数中的参数xreg时,可利用Arima()拟合存在 ARIMA 误差项的回归模型。如果指定差分,则模型中所有变量都会进行差分。例如,以下 R 代码

将会拟合模型 \(y_t' = \beta_1 x'_t + \eta'_t\)。其中 \(\eta'_t = \phi_1 \eta'_{t-1} + \varepsilon_t\) 为满足 AR(1) 过程的误差。它等价于如下模型 \[ y_t = \beta_0 + \beta_1 x_t + \eta_t, \] 其中 \(\eta_t\) 为满足 ARIMA(1,1,0) 的误差。请注意,差分之后模型中将不存在常数项,若想要差分模型中包含常数项,则需指定include.drift=TRUE

auto.arima()函数可以通过xxreg参数处理回归项。用户必须指定模型中的预测变量,auto.arima()将会选择出误差项的最佳 ARIMA 模型。

AICc 值用来确定最终模型,它可以确定模型中包含的预测变量。也就是说,需要对预测变量的所有子集重复计算 AICc 值,并选择 AICc 值最小的模型。

示例:美国个人消费及收入

9.1 为1970年至2016年第三季度美国个人消费支出和个人可支配收入的季度变化情况。我们希望根据收入的变化情况预测支出的变化,但是收入的变化并不一定导致支出的同步变化(例如,当个人失去工作后,它可能会需要几个月的时间来适应新的经济状况)。在本例中,我们忽略这种变化的复杂性,仅衡量收入平均变化对消费支出平均变化的即时影响。

1970年至2016年第三季度美国季度个人消费支出和个人可支配收入的百分比变化。

图 9.1: 1970年至2016年第三季度美国季度个人消费支出和个人可支配收入的百分比变化。

所有变量数据都是平稳的(因为我们考虑的是个人消费和收入的变化率),因此不需要再对数据进行差分。拟合模型为: \[\begin{align*} y_t &= 0.60 + 0.20 x_t + \eta_t, \\ \eta_t &= 0.69 n_{t-1} + \varepsilon_t -0.58 \varepsilon_{t-1} + 0.20 \varepsilon_{t-2},\\ \varepsilon_t &\sim \text{NID}(0,0.322). \end{align*}\]

我们可以利用residuals()函数同时画出 \(\eta_t\)\(\varepsilon_t\) 的序列图。

拟合模型的回归误差($\eta_t$)和ARIMA误差($\varepsilon_t$)。

图 9.2: 拟合模型的回归误差(\(\eta_t\))和ARIMA误差(\(\varepsilon_t\))。

ARIMA 误差应当类似于一个白噪声。

误差(即ARIMA模型误差)与白噪声没有明显差异。

图 9.3: 误差(即ARIMA模型误差)与白噪声没有明显差异。

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from Regression with ARIMA(1,0,2) errors
#> Q* = 5.9, df = 3, p-value = 0.1
#> 
#> Model df: 5.   Total lags used: 8