密度与频率

时间:2014-09-05 10:47:45

标签: python matplotlib statistics statsmodels seaborn

下面的两个图表传达的信息大致相同。

  • 左边的那个是直方图,其中Y轴表示频率(即,我们看到与每个箱相关联的范围内的值的频率)。

  • 右边的那个是密度(KDE估计)。 Y轴代表密度(积分应加起来一个)。

我通常更喜欢密度图(您可以调整,但Y轴通常难以解释。

我知道KDE估计将返回一个加起来为1的密度,假设变量的域跨度从-Inf到Inf,但有没有办法将由KDE估计得到的PDF映射到频率(例如放大有频率的值)?

这只是轴的“缩放”问题吗?或者还有其他相关内容吗?

density vs frequency

1 个答案:

答案 0 :(得分:1)

您必须先计算密度点,然后绘图。阅读http://scikit-learn.org/stable/modules/density.html。一些代码:

from sklearn.neighbors.kde import KernelDensity
import numpy as np
import matplotlib.pyplot as plt 

# This X is your data for the histogram
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
X = X.reshape(-1, 1)

kde = KernelDensity(kernel='gaussian', bandwidth=1).fit(X)
x = np.linspace(X.min(), X.max(), 100).reshape(-1, 1)

density = np.exp(kde.score_samples(x))

plt.plot(x, density)
plt.show()

enter image description here