当使用库(“fps”)中可用的bhattacharya.dist()函数时,我们遇到了一个错误,它在为两个相同的分布计算这个距离时给出了-Inf。 (在这种情况下,正确的值为零)。 这是因为函数中两个大值的相乘。我已经发布了旧代码和代码以及下面的修复程序。
有些专家可以验证这是否正确,并建议如何将此修复程序引起该库的所有者的注意并分发出来等。请注意,我对R和统计等非常新。因此我我担心这个修复可能会有一些问题。
我已经用不同大小的矩阵运行了一些测试并看到了预期的结果。但诚然,(由于我缺乏软件开发技能),它无法接近彻底的测试。
bhattacharyya.dist
function (mu1, mu2, Sigma1, Sigma2)
{
aggregatesigma <- (Sigma1 + Sigma2)/2
d1 <- mahalanobis(mu1, mu2, aggregatesigma)/8
d2 <- log(det(as.matrix(aggregatesigma))/sqrt(det(as.matrix(Sigma1)) *
det(as.matrix(Sigma2))))/2
out <- d1 + d2
out
}
bhattacharyyaDistance = function (mu1, mu2, Sigma1, Sigma2)
{
aggregatesigma <- (Sigma1 + Sigma2)/2;
d1 <- mahalanobis(mu1, mu2, aggregatesigma)/8;
#d2 <- log(det(as.matrix(aggregatesigma))/sqrt(det(as.matrix(Sigma1)) *
# det(as.matrix(Sigma2))))/2;
d2 <- log((det(as.matrix(aggregatesigma))/sqrt(det(as.matrix(Sigma1))))
/ sqrt(det(as.matrix(Sigma2))))/2;
out <- d1 + d2;
return(out);
};