9

我有一个数据集,我想拟合一个已知的概率分布。目的是在数据生成器中使用拟合的 PDF - 这样我就可以从已知的(拟合的)PDF 中采样数据。数据将用于模拟目的。目前我只是从正态分布中采样,这与真实数据不一致,因此模拟结果不准确。

我首先想使用以下方法: 使用 Scipy (Python) 将经验分布拟合到理论分布?

我的第一个想法是让它适应威布尔分布,但数据实际上是多模态的(附图片)。所以我想我需要组合多个分布,然后将数据拟合到结果分布,对吗?也许结合高斯和威布尔分布?

如何将 scipy fit() 函数与混合/多模式分布一起使用?

我也想在 Python 中执行此操作(即 scipy/numpy/matplotlib),因为数据生成器是用 Python 编写的。

非常感谢 !

数据直方图

4

1 回答 1

14

我建议使用核密度估计 (KDE)。它为您提供了一个混合 PDF 的解决方案。

SciPy 只有高斯内核(对于您的特定直方图看起来不错),但您可以在statsmodelsorscikit-learn包中找到其他内核。

作为参考,这些是相关的功能:

from sklearn.neighbors import KernelDensity
from scipy.stats import gaussian_kde
from statsmodels.nonparametric.kde import KDEUnivariate
from statsmodels.nonparametric.kernel_density import KDEMultivariate

Python 中 KDE 的一个很好的资源在这里

于 2015-10-19T04:43:27.063 回答