我不确定这是一个编程问题还是统计问题,但我 %99 确定应该存在一个数字问题。因此也许可以提出一个程序化的解决方案。
我正在使用 MATLAB mvnpdf 函数来计算一些观测值的多元高斯 PDF。我经常收到“SIGMA 必须是对称且正定的”错误。
但是,我从数据中获取协方差矩阵,因此数据should是合法的。重新生成问题的代码是:
err_cnt = 0;
for i = 1:1000
try
a = rand(3);
c = cov(a);
m = mean(a);
mvnpdf(a, m, c);
catch me
err_cnt = err_cnt + 1;
end
end
每次运行时我都会遇到大约 500-600 个错误。
附:在我的例子中,我不会生成随机数据,只是在此处生成以进行演示。
这是一个线性代数问题,而不是一个编程问题。回想一下 k 维多元正态分布的 PDF 公式:
当您的矩阵不是严格正定的(即,它是奇异的)时,分母中的行列式为零,并且指数中的倒数未定义,这就是您收到错误的原因。
然而,一个常见的误解是协方差矩阵必须是正定的。这是不正确的——协方差矩阵只需为正半定的。您的数据完全有可能具有奇异的协方差矩阵。另外,因为你正在形成的是样本协方差矩阵对于观察到的数据,您可能会因观察不足而出现奇点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)