楼主: wwltm
4414 0

[mathematica] matlab中aicbic确定阶数的太小 [推广有奖]

  • 0关注
  • 0粉丝

讲师

1%

还不是VIP/贵宾

-

威望
0
论坛币
555 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
7121 点
帖子
132
精华
0
在线时间
436 小时
注册时间
2009-9-28
最后登录
2024-7-16

楼主
wwltm 发表于 2018-4-12 18:01:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想用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)

二维码

扫码加我 拉你入群

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

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

关键词:MATLAB matla atlab Atl Mat

被学习了。。。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 01:03