Python中的核密度估计

时间:2017-03-12 10:01:32

标签: python scipy statistics kernel-density

我有一个计数列表(下面代码中的'y'),我用来绘制概率分布 - 所以请注意它不是原始数据,而是我已经计算过的真正应该落在各个箱子中的频率。散点图甚至直方图(用条形函数绘制)显示它是某种双峰分布方式。我希望能够将pdf拟合到这一点,所以我首先尝试了一些高斯,但是SciPy中的曲线拟合算法在拟合曲线方面是不成功的。然后我遇到了核密度估计,从我所读到的是实现这一目标的最佳方法,但由于某种原因,即使在将来自堆栈溢出的代码汇总到类似问题的答案以及来自不同的网站之后,其中推荐使用scipy.stats中的gaussian_kde函数,到目前为止我没能成功。假设我能够为我所拥有的一切做到这一点,我错了吗?如果我是对的,我该怎么做才能做到正确?

x = np.linspace(x_min, x_max, n_bins) 
y = np.array(normed_pdf)
plt.scatter(x,y,s=5, label='Sim Data')
plt.hold('on')
kde = gaussian_kde(y, bw_method=0.1 / y.std(ddof=1))
kde.covariance_factor = lambda : .25
kde._compute_covariance()
plt.plot(x, kde(x), 'r-', label='fit')
plt.hold('off')
plt.grid(True)
plt.legend(prop={'size':10})
plt.show()

我知道我不妨使用R或GNUPlot或其他工具来做这件事,但我希望能够在Python中做到这一点。叫我一个自给自足,一致的代码。

0 个答案:

没有答案