我的问题涉及数学和 CS 问题,但由于我需要一个高性能的实现,所以我将它发布在这里。
问题:
我有一个估计的正态双变量分布,定义为 python 矩阵,但是我需要在 Java 中转置相同的计算。(此处为虚拟值)
mean = numpy.matrix([[0],[0]])
cov = numpy.matrix([[1,0],[0,1]])
当我在 inupt 中收到整数值 (x,y) 的列向量时,我想计算给定元组的概率。
value = numpy.matrix([[4],[3]])
probability_of_value_given_the_distribution = ???
现在,从数学的角度来看,这将是我的法线概率密度函数的3.5 < x < 4.5
积分2.5 < y < 3.5
。
我想知道的:
有没有办法避免有效实现这一点,这意味着处理在矩阵上定义的表达式和双积分?除此之外,如果我必须自己实现它会花费我一段时间,这在计算上会很昂贵。一个近似的解决方案对我来说非常好。
我的理由:
在单变量正态中,可以简单地使用累积分布函数(或者甚至将其值存储为标准函数,然后进行归一化),但不幸的是,多元变量似乎没有封闭的 cdf 形式。
单变量的另一种方法是使用双变量近似的逆(因此,将法线近似为二项式),但是将其扩展到多元我无法弄清楚如何计算协方差。
我真的希望有人已经实现了这个,我很快就需要它(完成我的论文),我找不到任何东西。