我正在尝试使用pmcov()
MATLAB 的函数来计算 700 ms 长、采样频率为 1000 Hz 的离散时间信号的功率谱密度估计 (PSD)。此函数需要用于生成 PSD 估计的自回归模型的模型阶数。
如何估计此模型顺序以预测拟合的正确性?我知道很少有像AIC
,BIC
之类的标准GIC
可用于估计模型阶数,但在 matlab 中找不到如何使用它们。任何人都可以帮忙吗?我的输入时间信号是一个[700 129]
矩阵。
非常感谢!
我正在尝试使用pmcov()
MATLAB 的函数来计算 700 ms 长、采样频率为 1000 Hz 的离散时间信号的功率谱密度估计 (PSD)。此函数需要用于生成 PSD 估计的自回归模型的模型阶数。
如何估计此模型顺序以预测拟合的正确性?我知道很少有像AIC
,BIC
之类的标准GIC
可用于估计模型阶数,但在 matlab 中找不到如何使用它们。任何人都可以帮忙吗?我的输入时间信号是一个[700 129]
矩阵。
非常感谢!
如果您的信号可靠平滑,您可能只需查看每个试验的自相关函数,然后选择设置顺序作为 ACF 开始衰减时的滞后。
autocorr(Y);
如果您想获得更量化的拟合(这可能比目测和概括 129 个信号更容易)。您可以拟合 AR 模型
您要做的第一件事是选择要评估的订单范围(我会查看 ACF 的几个信号,然后选择 ACF 中相对没有信号的订单)。
bounds = 1:12; % Order bounds
现在您将遍历每个订单可能性并计算 AIC、BIC。较低的值 == 更适合。
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
所以现在你有了你想要选择最低的 BIC 分数。在这种情况下,我使用信号之间的平均值,如果你想非常小心,我会查看分布并选择
分布紧密的低中位数。您也可以使用 AIC 进行评估。
[~,order_ind] = min(mean(bic,1));
order = bound(order_ind);