mac*_*ery 3 matlab distribution probability
我正在使用Matlab 的distfit函数来拟合我的数据的概率分布。有时会出现以下警告消息:
最大似然估计未收敛。超出迭代限制
在这种情况下,分布已拟合(负对数似然不是复数或无限),但拟合非常差(高 AIC)。
如果出现此警告,如何在 Matlab 中检查?如果出现这样的警告,我想抛出一个错误(并捕获它)。
目前,我正在调查负对数可能性是否是复杂的或无限的,如果是,我将抛出一个错误。我还应该做其他检查吗?
您无法直接捕获警告,但可以通过使用以下构造关闭给出的警告消息来伪造警告
% reset warnings
lastwarn('');
% Do your fitting
<your code here>
% Check which warning occured (if any)
[msgstr, msgid] = lastwarn;
switch msgid
case 'ThisParticularMessageID'
% In your case you say you want to throw an error
error(msgstr); % or your custom error message
%case 'SomeOtherMessageIDIfYouWantToCheckForSomethingElse'
end
Run Code Online (Sandbox Code Playgroud)
棘手的事情是找到正确的 msgid。最简单的方法是使用现有代码,在看到警告消息后,在命令行中输入
[msgstr,msgid] = lastwarn
这会告诉你你想用来做什么'ThisParticularMessageID'。