找到随机向量的底层正态分布
Find underlaying normal distribution of random vectors
我正在尝试使用 Python 解决与统计相关的现实世界问题,并且正在寻找有关我的想法的输入:我有 N 个来自 m 维正态分布的随机向量。我没有关于基础分布的均值和协方差矩阵的信息,事实上,它也是正态分布只是一个假设,一个非常合理的假设。我想计算分布的均值向量和协方差矩阵 的 近似值。随机向量的个数在100到300个数量级,正态分布的维数在2到5之间。计算时间在标准家用电脑上最好不要超过1分钟。
我目前正在考虑三种方法,并且很高兴看到关于这三种方法之间的其他方法或偏好的所有建议:
拟合:制作所有随机向量的多维直方图,并将多维正态分布拟合到直方图。关于该方法的问题:协方差矩阵有很多条目,这可能是拟合过程的问题?
反转累积分布函数:制作多维直方图作为随机向量密度函数的近似值。然后将其积分以获得多维累积分布函数。对于一维,这是可逆的,可以使用 cum-dist 函数像原始分布一样分布随机数。问题:对于多维情况,cum-dist 函数不可逆(?),我不知道这种方法是否仍然有效?
贝叶斯: 使用具有正态分布的贝叶斯统计作为先验并更新每个观察值。结果应该总是再次是正态分布。问题:我认为这在计算上很昂贵?另外,我不希望较早的更新对结果分布的影响更大。
另外,也许有一些库已经实现了这个任务?我没有在 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节中描述的简单估计来计算样本协方差矩阵。
我正在尝试使用 Python 解决与统计相关的现实世界问题,并且正在寻找有关我的想法的输入:我有 N 个来自 m 维正态分布的随机向量。我没有关于基础分布的均值和协方差矩阵的信息,事实上,它也是正态分布只是一个假设,一个非常合理的假设。我想计算分布的均值向量和协方差矩阵 的 近似值。随机向量的个数在100到300个数量级,正态分布的维数在2到5之间。计算时间在标准家用电脑上最好不要超过1分钟。
我目前正在考虑三种方法,并且很高兴看到关于这三种方法之间的其他方法或偏好的所有建议:
拟合:制作所有随机向量的多维直方图,并将多维正态分布拟合到直方图。关于该方法的问题:协方差矩阵有很多条目,这可能是拟合过程的问题?
反转累积分布函数:制作多维直方图作为随机向量密度函数的近似值。然后将其积分以获得多维累积分布函数。对于一维,这是可逆的,可以使用 cum-dist 函数像原始分布一样分布随机数。问题:对于多维情况,cum-dist 函数不可逆(?),我不知道这种方法是否仍然有效?
贝叶斯: 使用具有正态分布的贝叶斯统计作为先验并更新每个观察值。结果应该总是再次是正态分布。问题:我认为这在计算上很昂贵?另外,我不希望较早的更新对结果分布的影响更大。
另外,也许有一些库已经实现了这个任务?我没有在 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节中描述的简单估计来计算样本协方差矩阵。