pau*_*ons 3 matlab numerical probability
我不确定这是一个编程或统计问题,但我确定应该有一个数值问题.因此,可能会提出一种程序化解决方案.
我正在使用MATLAB的mvnpdf函数来计算某些观测值的多变量高斯PDF.经常我得到"SIGMA必须是对称且肯定的"错误.
但是,我从数据中获取了covarince矩阵,因此数据应该是合法的.重新生成问题的代码是:
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
Run Code Online (Sandbox Code Playgroud)
每次跑步都会出现约500-600个错误.
PS我不会在我的情况下生成随机数据,只是在这里生成来演示.
abc*_*bcd 12
这是线性代数问题而不是编程问题.回想一下k维多元正态分布的PDF公式:

当你的矩阵不是严格正定的(即它是单数)时,分母中的行列式为零,并且未定义指数中的倒数,这就是你得到误差的原因.
然而,一种常见的误解是协方差矩阵必须是正定的.这不是真的 - 协方差矩阵只需要是半正的.您的数据完全有可能具有单数的协方差矩阵.此外,由于您正在形成的是您观察到的数据的样本协方差矩阵,因此您可能会因没有足够的观察而产生奇点.