0

モデルに従っているとします

https://dsp.stackexchange.com/questions/15326/can-someone-show-the-details-of-how-to-apply-aic-for-sinusoidal-models-to-specif

イプシロンはホワイトノイズです。次のコードを試しました

function [aic_matrix,bic_matrix]=ARMA_model(y,n);
%n possible order of each model
LOGL = zeros(n,n); %Initialize
PQ = zeros(n,n);
for p = 1:n
    for q = 1:n
        mod = arima(p,0,p);
        [fit,~,logL] = estimate(mod,y,'print',false);
        LOGL(p,q) = logL;
        PQ(p,q) = p+q;
     end
end
LOGL = reshape(LOGL,n*n,1);
PQ = reshape(PQ,n*n,1);
[aic1,bic1] = aicbic(LOGL,PQ+1,length(y));
aic_matrix=reshape(aic1,n,n);
bic_matrix=reshape(bic1,n,n);
end

しかし、次のコマンドを実行したとき

[aic_matric,bic_matrix]=ARMA_model(B,100);

結果が出ました

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 ]));

Error in ARMA_model (line 9)
        [fit,~,logL] = estimate(mod,y,'print',false);

この信号は非定常であることを意味しますか?私のコードに関連する問題は何ですか?助けてください

4

1 に答える 1

1

この行は間違っていると思います:

mod = arima(p,0,p); 

そうあるべきだと思う

mod = arima(p,0,q);

また、システムの MA 部分が AR 部分よりも高い次数を持つことは本当に望ましくありません (これは、エラーが修正された場合にループが行うことです)。ループ

for q = 1:n 

読むべき

for q = 1:p.

これらの問題を除けば、あなたのコードは問題ないようです。

于 2014-03-31T12:09:32.920 に答える