识别 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 p
和 q
参数的有用信息。
只要我记得我的学习,因为 ACF
在滞后 q - p
之后逐渐消失,而 PACF
在滞后 p - q
之后逐渐消失,正确识别p
和 q
命令并不总是直截了当的,即使是上述指南提供的最佳实践也不足以为您指明正确的方向。
通常,防故障方法是将信息标准(如 AIC
、BIC
或 FPE
)应用于具有不同顺序 p
和 q
。呈现最小标准值的模型是最好的模型。假设您的最大 q
和 p
所需顺序是 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
函数返回的索引来找到最佳的 q
和 p
订单。
附带说明一下,关于您的错误...好吧,第一个非常简单并且不言自明。第二个基本上意味着不可能进行正确的模型估计。
我正在尝试构建 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 p
和 q
参数的有用信息。
只要我记得我的学习,因为 ACF
在滞后 q - p
之后逐渐消失,而 PACF
在滞后 p - q
之后逐渐消失,正确识别p
和 q
命令并不总是直截了当的,即使是上述指南提供的最佳实践也不足以为您指明正确的方向。
通常,防故障方法是将信息标准(如 AIC
、BIC
或 FPE
)应用于具有不同顺序 p
和 q
。呈现最小标准值的模型是最好的模型。假设您的最大 q
和 p
所需顺序是 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
函数返回的索引来找到最佳的 q
和 p
订单。
附带说明一下,关于您的错误...好吧,第一个非常简单并且不言自明。第二个基本上意味着不可能进行正确的模型估计。