找到随机向量的底层正态分布

Find underlaying normal distribution of random vectors

我正在尝试使用 Python 解决与统计相关的现实世界问题,并且正在寻找有关我的想法的输入:我有 N 个来自 m 维正态分布的随机向量。我没有关于基础分布的均值和协方差矩阵的信息,事实上,它也是正态分布只是一个假设,一个非常合理的假设。我想计算分布的均值向量和协方差矩阵 的 近似值。随机向量的个数在100到300个数量级,正态分布的维数在2到5之间。计算时间在标准家用电脑上最好不要超过1分钟。

我目前正在考虑三种方法,并且很高兴看到关于这三种方法之间的其他方法或偏好的所有建议:

  1. 拟合:制作所有随机向量的多维直方图,并将多维正态分布拟合到直方图。关于该方法的问题:协方差矩阵有很多条目,这可能是拟合过程的问题?

  2. 反转累积分布函数:制作多维直方图作为随机向量密度函数的近似值。然后将其积分以获得多维累积分布函数。对于一维,这是可逆的,可以使用 cum-dist 函数像原始分布一样分布随机数。问题:对于多维情况,cum-dist 函数不可逆(?),我不知道这种方法是否仍然有效?

  3. 贝叶斯: 使用具有正态分布的贝叶斯统计作为先验并更新每个观察值。结果应该总是再次是正态分布。问题:我认为这在计算上很昂贵?另外,我不希望较早的更新对结果分布的影响更大。

另外,也许有一些库已经实现了这个任务?我没有在 Numpy 或 Scipy 中找到确切的这个,也许有人知道还能去哪里找?

如果按照Parameter estimation of the wikipedia article on the multivariate normal distribution are sufficient for your needs, you can use numpy.mean to compute the mean and numpy.cov节中描述的简单估计来计算样本协方差矩阵。