我有一个数据集,我想要拟合到一个已知的概率分布。目的是在数据生成器中使用拟合的PDF -这样我就可以从已知的(拟合的) PDF中采样数据。数据将用于模拟目的。目前,我只是从正态分布中抽样,这与实际数据不一致,因此模拟结果不准确。
我首先想使用以下方法:Fitting empirical distribution to theoretical ones with Scipy (Python)?
我的第一个想法是将其拟合为威布尔分布,但数据实际上是多模态的(附图)。所以我想我需要组合多个分布,然后将数据拟合到结果dist中,对吗?也许结合高斯分布和威布尔分布?
如何将scipy fit()函数用于混合/多模态分布?
另外,我想用Python (即scipy/numpy/matplotlib)来实现,因为数据生成器是用Python编写的。
非常感谢!
发布于 2015-10-19 12:43:27
我建议使用核密度估计(KDE)。它为您提供了一个混合PDF格式的解决方案。
SciPy只有高斯内核(对于您的特定直方图来说,它看起来很好),但您可以在statsmodels
或scikit-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的一个很好的资源是here。
https://stackoverflow.com/questions/33158726
复制相似问题