如何在 python (pandas kde) 中提取密度函数概率

How to extract density function probabilities in python (pandas kde)

pandas.plot.kde() 函数可以方便地绘制连续随机变量的估计密度函数。它将数据 x 作为输入,并显示合并输入的概率 p(x) 作为输出。

我如何提取它计算的概率值?我不只是绘制带宽样本的概率,而是想要一个包含内部计算的概率值的数组或 pandas 系列。

如果 pandas kde 无法做到这一点,请告诉我 scipy 或其他

中的任何等效项

有几种方法可以做到这一点。您可以自己计算或从图中获取。

  1. 正如@RichieV 在 this post 之后的评论中所指出的,您可以使用
  2. 从图中提取数据
data.plot.kde().get_lines()[0].get_xydata()
  1. 使用seaborn然后同1):

您可以使用 seaborn 估计内核密度,然后 matplotlib 提取值(如 中所示)。您可以使用 distplotkdeplot:

import seaborn as sns

# kde plot
x,y = sns.kdeplot(data).get_lines()[0].get_data()
# distplot
x,y = sns.distplot(data, hist=False).get_lines()[0].get_data()

  1. 您可以使用scipy.stats.gaussian_kde的底层方法来估计pandas使用的内核密度:
import scipy.stats

density = scipy.stats.gaussian_kde(data)

然后您可以使用它在一组点上对其进行评估:

x = np.linspace(0,80,200)
y = density(xs)