频率与密度

2 投票
1 回答
1730 浏览
提问于 2025-04-20 00:26

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

  • 左边的图是一个直方图,Y轴表示频率(也就是我们在每个区间内看到的值的次数)。

  • 右边的图是一个密度图(KDE估计)。Y轴表示密度(所有的值加起来应该等于1)。

我通常更喜欢密度图(你可以调整它),但Y轴的理解通常比较困难。

我知道KDE估计会返回一个密度值,这些值加起来等于1,前提是变量的范围从负无穷到正无穷,但有没有办法把KDE估计得到的概率密度函数(PDF)映射到频率上(比如把这些值放大到频率)呢?

这只是Y轴的“缩放”问题吗?还是还有其他的因素呢?

    density vs frequency

1 个回答

2

你需要先计算密度点,然后再进行绘图。可以参考这个链接: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()

在这里输入图片描述

撰写回答