全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4354 0
2018-04-12
想用aicbic确定ARMA的阶数,但用这个确定的阶数时会出现如下错误
Error using arima/validateModel (line 1314)
The non-seasonal moving average polynomial is non-invertible.

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

Error in arima/estimate (line 1183)
  Mdl = setLagOp(Mdl, 'MA' , LagOp([1  coefficients(iMA)' ], 'Lags', [0 LagsMA ]));

解决方法:
论坛有人说把p,q的阶数设置小点,我有300个数据呢,最后阶数只能设置为pMax=5; qMax=2; pMax设置为6都出错,如果这样的话,就感觉太小了,而且和eviews自相关函数和偏自相关函数的结果相差好大,能有人帮看下原因吗,谢谢


代码如下:

LogL = zeros(pMax,qMax);%pMax,qMax来自于自相关、偏自相关序列图显著阶数最(较)大值
SumPQ = LogL;
for p = 1:pMax
    for q = 1:qMax
        Mdl = arima(p,0,q);
        [fit,~,LogL(p,q)] = estimate(Mdl,X,'print',false);%X是待检验序列
        SumPQ(p,q) = p+q;
    end
end
logL = reshape(LogL,pMax*qMax,1);
numParams = reshape(SumPQ,pMax*qMax,1) + 1;
[~,bic] = aicbic(logL,numParams,500);
BIC = reshape(bic,pMax,qMax);
minBIC = min(bic)
[BICbestP,BICbestQ] = find(BIC == minBIC)
Mdl = arima(BICbestP,0,BICbestQ);
%[fit,~,~] = estimate(Mdl,lnR,'print',false)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群