如果 arima() 的剩余序列看起来不正常怎么办?

机器算法验证 时间序列
2022-03-31 13:22:58

我的时间序列在这里,我的代码在这里

我将模型拟合到arima()带有 ARMA(5,5) 的 R 中的系列和一些协变量的回归。

fit5 = arima(x, order=c(5,0,5), xreg=covaraites, include.mean=F)

我现在正在检查拟合模型是否足够。残差系列如下所示:

在此处输入图像描述

残差系列通过 Ljung Box 检验,ap 值为 0.3859。残差系列的ACF和PACF如下(好像不相关吧?):

在此处输入图像描述 在此处输入图像描述

残差系列的qqplot如下:

qqnorm(fit5$residuals, asp = 1)
qqline(fit5$residuals, asp=1)

在此处输入图像描述

在 (-2, 2) 内看起来没问题。我想知道高斯是不是不行?

IIC,arma 模型要求其残差序列是白噪声,但不一定是高斯噪声。但是arima()使用 MLE 拟合模型(假设高斯残差系列?)。所以如果我的残差序列不能被视为高斯,我应该如何修改我的模型以及 RI 中的什么函数可以用来适应我的时间序列?

3个回答

当您使用 MLE 时,会应用分布假设,在这种情况下可能是高斯假设。因此,如果您的高斯假设不成立,那么您的似然函数就会混乱,并且 MLE 不可靠。

QQ 图看起来不太好,它显示的尾部比正态分布更粗。您可以使用许多测试(例如 Jarque Bera 测试)来测试正态性假设。我敢打赌他们都会拒绝正常。

第一个也是最简单的尝试是对数转换。你的 QQ 图的外观让我想起了对数正态分布。您可以查看残差直方图和对数正态拟合,或者简单地获取变量重新拟合 ARIMA 的对数,然后查看残差,我敢打赌它们看起来会更正常。

我知道这个板上的一些人会建议忽略残差的非正态性,表现得好像你从不关心它“因为你有很多 (1200) 观察结果”。我对此的立场是,如果您以任何方式使用正态性,例如在似然函数中,并且正态性假设不成立,那么您就不能使用该模型。

在这种情况下,我建议您使用不假设正态性的模型。例如,您可以尝试拟合 t 分布的错误。在 MATLAB 中有一个在类中使用 t 分布arima的选项,在 R 中也可以有一个选项。无论如何,修改 R 代码很容易,您所需要的只是一个新的似然函数,它可以在许多地方找到,例如MATLAB help

另一种选择是以状态空间形式表示 ARIMA,参见例如Shumway 和 Stoffer第 6 章,然后使用非高斯误差,这在第 6.10 节,特别是示例 6.23 中进行了解释。

您可能需要识别干预变量,例如脉冲、季节性脉冲、电平转换或本地时间趋势。如果这些未经处理,它们会夸大错误的方差,并且您会在错误的 ACF 中得到向下的偏差,错误地暗示了随机性。此外,您可能需要合并预测变量的滞后以正确解释其影响。此外,您可能需要使用 GLS(加权最小二乘法)或幂变换来处理非常量误差方差。最后,模型的参数可能会随着时间的推移而变化,需要按照 Chow 测试的建议对数据进行分段。

可以使用商业软件来完成这些事情,或者如果您有足够的时间和技能,您可能想自己编写它。还有一件事可能是星期几的影响或其他确定性结构,例如需要合并以进行测试的特定日期或特定星期的效果随机性更正确。

您应该查看“rugarch”包,尤其是“ARFIMA”类的配合。这允许您指定广泛的分布类别,包括那些带有偏斜和重尾的分布:

http://cran.r-project.org/web/packages/rugarch/rugarch.pdf