识别 ARIMA 模型的参数

Identify parameters of ARIMA model

我正在尝试构建 ARIMA 模型,我的标准化时间序列中有 144 个项,它们代表原始时间序列的残差。我想建立 ARIMA 模型的残差是从原始时间序列中减去线性趋势和周期成分后得到的,因此残差是随机成分。

由于该减法,我将残差建模为平稳序列 (d=0),因此模型为 ARIMA(p,d,q)=ARIMA(?,0,?)。

我的残差的 ACF 和 PACF 函数在识别 ARIMA 模型的文献中不是很清楚,当我根据它们是置信区间之外的最后一个值的标准选择参数 p 和 q 时,我得到了值 p =109,q=97。对于这种情况,Matlab 给出了错误:

Error using arima/estimate (line 386)

Input response series has an insufficient number of observations.

另一方面,当我只查看 N/4 时间序列长度来识别 p 和 q 参数时,我得到 p=36,q=34。 Matlab 给了我这个案例的错误

Warning: Nonlinear inequality constraints are active; standard errors may be inaccurate.

In arima.estimate at 1113

Error using arima/validateModel (line 1306)

The non-seasonal autoregressive polynomial is unstable.

Error in arima/setLagOp (line 391) Mdl = validateModel(Mdl);

Error in arima/estimate (line 1181) Mdl = setLagOp(Mdl, 'AR' , LagOp([1 -coefficients(iAR)' ], 'Lags', [0 LagsAR ]));

我需要如何更正识别 p 和 q 参数,这里有什么问题?还有这个偏自相关图是什么意思,为什么最后的值这么大?

这个 guide 包含很多关于正确估计 ARIMA pq 参数的有用信息。

只要我记得我的学习,因为 ACF 在滞后 q - p 之后逐渐消失,而 PACF 在滞后 p - q 之后逐渐消失,正确识别pq 命令并不总是直截了当的,即使是上述指南提供的最佳实践也不足以为您指明正确的方向。

通常,防故障方法是将信息标准(如 AICBICFPE)应用于具有不同顺序 pq。呈现最小标准值的模型是最好的模型。假设您的最大 qp 所需顺序是 6 并且 k 是观察次数,您可以按如下方式进行:

ll = zeros(6);
pq = zeros(6);

for p = 1:6
    for q = 1:6
        mod = arima(p,0,q);
        [fit,~,fit_ll] = estimate(mod,Y,'print',false);
        ll(p,q) = fit_ll;
        pq(p,q) = p + q;
     end
end

ll = reshape(ll,36,1);
pq = reshape(pq,36,1);

[~,bic] = aicbic(ll,pq+1,k);
bic = reshape(bic,6,6);

完成后,使用 min 函数返回的索引来找到最佳的 qp 订单。

附带说明一下,关于您的错误...好吧,第一个非常简单并且不言自明。第二个基本上意味着不可能进行正确的模型估计。