【发布时间】:2014-03-31 05:51:36
【问题描述】:
假设我们遵循模型
epsilon 是白噪声,我尝试了以下代码
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);
这是否意味着这个信号是非平稳的?与我的代码有关的问题是什么?请帮助我
【问题讨论】:
-
我认为这行不正确:
mod = arima(p,0,p);我认为应该是mod = arima(p,0,q);。此外,您确实不希望系统的 MA 部分具有比 AR 部分更高的阶数(如果错误得到修复,您的循环将执行此操作)。循环for q = 1:n应为for q = 1:p。 -
AIC和BIC哪个更稳定?
-
我可以写成 arima(p,0,0) 吗?
-
是的,这只会给你一个 AR 模型(这对于正弦模型的情况可能没问题)。请不要使用 cmets 进行聊天。请到这里聊天:chat.stackexchange.com/rooms/1090/signal-processing
-
但是在这种情况下如何给出建议?AR 模型是否适合正弦模型?也因为它处于噪声中,所以总是建议采用高 AR 阶数,但要多高?让我们假设我有这两个矩阵,让我们假设我已经给出了可能的订单 80,这个大小合适吗?
标签: matlab signals signal-processing autoregressive-models