1

Ich versuche die Funktion pmcov() von MATLAB zu verwenden, um Leistungsspektraldichteschätzungen (PSD) eines diskreten Zeitsignals von 700 ms Länge mit einer Abtastfrequenz von 1000 Hz zu berechnen. Diese Funktion benötigt die Modellreihenfolge des autoregressiven Modells, das zur Erstellung der PSD-Schätzungen verwendet wird.Schätzung der Modellreihenfolge eines autoregressiven (AR) Modells

Wie kann ich diese Modellreihenfolge schätzen, um die Korrektheit der Anpassung vorherzusagen ?. Ich kam wissen, dass es einige Kriterien wie AIC, BIC, GIC gibt, die verwendet werden können, um Modellreihenfolge zu schätzen, aber nicht finden konnten, wie man sie in Matlab verwendet. Kann jemand helfen? Mein Eingangszeitsignal ist eine [700 129] Matrix.

Vielen Dank!

Antwort

0

Wenn Ihre Signale zuverlässig glatt sind, können Sie wahrscheinlich nur die Autokorrelationsfunktion für jeden Versuch betrachten und die Reihenfolge als Verzögerung festlegen, wenn der ACF anfängt zu zerfallen.

Wenn Sie eine mehr quantitative Anpassung (die wahrscheinlich einfacher ist als Augäugeln und generalisieren 129 Signale) erhalten möchten. Sie können ein AR-Modell

Zuerst, was Sie tun werden, ist wählen Sie die Reihenfolge, die Sie evaluieren möchten (ich würde die ACF für ein paar Signale betrachten und wählen Sie eine Reihenfolge, in der relativ kein Signal in der ACF) .

bounds = 1:12; % Order bounds 

Jetzt durchlaufen Sie jede Bestellmöglichkeit und berechnen die AIC, BIC. Niedrigere Werte == bessere Passform.

for p = bounds 
    myModel = arima(p,0,0);  % no moving average (I'm not sure about no MA...) 
    for sig_ind = 1:size(sig_mat,2) 
     % Get the log likelihoods 
     [~,~,LL(p,sig_ind)]= estimate(myModel,sig_mat(:,sig_ind)); 
    end 
end 
for sig_ind = 1:size(sig_mat,2) 
    [aic(sig_ind,:),bic(sig_ind,:)] = aicbic(LL(:,sig_ind),bounds,size(sig_mat,1)); 
end 

So jetzt haben Sie Ihre BIC-Ergebnisse, die Sie die niedrigsten auswählen möchten. In diesem Fall verwende ich den Mittelwert über Signale, wenn Sie wirklich vorsichtig sein wollen Ich würde auf die Verteilungen schauen und wählen Sie einen niedrigen Median mit einer engen Verteilung
. Sie können das AIC auch zum Auswerten verwenden.

[~,order_ind] = min(mean(bic,1)); 
order = bound(order_ind);