Python - 从 numpy 数组分布计算 pdf

标签 python arrays numpy probability-density

给定一个值数组,我希望能够为其拟合密度函数并找到任意输入值的 pdf。这可能吗,我该怎么做?不一定有正常的假设,我不需要函数本身。

例如,给定:

x = array([ 0.62529759, -0.08202699,  0.59220673, -0.09074541,  0.05517865,
        0.20153703,  0.22773723, -0.26229708,  0.76137555, -0.61229314,
        0.27292745,  0.35596795, -0.01373896,  0.32464979, -0.22932331,
        1.14796175,  0.17268531,  0.40692172,  0.13846154,  0.22752953,
        0.13087359,  0.14111479, -0.09932381,  0.12800392,  0.02605917,
        0.18776078,  0.45872642, -0.3943505 , -0.0771418 , -0.38822433,
       -0.09171721,  0.23083624, -0.21603973,  0.05425592,  0.47910286,
        0.26359565, -0.19917942,  0.40182097, -0.0797546 ,  0.47239264,
       -0.36654449,  0.4513859 , -0.00282486, -0.13950512, -0.05375369,
        0.03331833,  0.48951555, -0.13760504,  2.788     , -0.15017848,
        0.02930675,  0.10910646,  0.03868301, -0.048482  ,  0.7277376 ,
        0.08841259, -0.10968462,  0.50371324,  0.86379698,  0.01674877,
        0.19542421, -0.06639165,  0.74500856, -0.10148342,  0.02482331,
        0.79195804,  0.40401969,  0.25120005,  0.21020794, -0.01767013,
       -0.13453783, -0.09605592, -0.88044229,  0.04689623,  0.09043851,
        0.21232286,  0.34129982, -0.3736799 ,  0.17313858])

我想知道 0.3 的值与上述所有值相比如何,以及它大于上述值的百分比。

最佳答案

我个人喜欢使用 scipy.stats 包。它有一个有用的核密度估计实现。基本上,它所做的是使用高斯(或其他)分布的组合来估计某些数据的概率密度函数。使用哪些分布是您可以设置的参数。在此处查看文档和相关示例:https://docs.scipy.org/doc/scipy/reference/tutorial/stats.html#kernel-density-estimation

关于 KDE 的更多信息:https://en.wikipedia.org/wiki/Kernel_density_estimation

构建 KDE 后,您可以对其执行相同的操作以获得概率。例如,如果您想计算一个值大于或等于 0.3 的概率,您可以执行以下操作:

kde = stats.gaussian_kde(np.array(x))

#visualize KDE
fig = plt.figure()
ax = fig.add_subplot(111)
x_eval = np.linspace(-.2, .2, num=200)
ax.plot(x_eval, kde(x_eval), 'k-')

#get probability
kde.integrate_box_1d( 0.3, np.inf)

长篇大论: 计算一个 KDE,然后像使用 PDF 一样使用 KDE。

关于Python - 从 numpy 数组分布计算 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45464924/

相关文章:

Python 列表、csv、去重

python - 添加日期,检查是否已过期

python - CSV dtype 中的 numpy rearray 有很多列,但 shape 只显示一行,这是为什么?

python - Seaborn distplot 与来自不同数组的 rugplot

python - 生成预测列表

python - 网络抓取逐渐变慢并最终停止的可能原因有哪些?

javascript - js中关联数组排序

javascript - 如何从具有该字段的对象数组中获取该字段的数组?

c - C 中的输入字符串数组内存管理

python - 为什么 numpy.random.choice 这么慢?