python scipy.stats pdf和expect函数

时间:2013-07-29 11:18:58

标签: python statistics scipy probability-density

我想知道是否有人可以解释scipy.stats中的以下功能:

rv_continuous.expect
rv_continuous.pdf

我已阅读文档,但我仍感到困惑。

这是我的任务,理论上非常简单,但我仍然对这些功能的作用感到困惑。

所以,我有一个区域列表,16383个值。我想找到变量区域在较小值(称为“inf”)和较大值“sup”之间取任何值的概率。

所以,我的想法是:

scipy.stats.rv_continuous.pdf(a) #a being the list of areas
scipy.stats.rv_continuous.expect(pdf, lb = inf, ub = sup)

这样我就可以得到任何区域在sup和inf之间的概率。

任何人都可以通过简单的方式解释函数的功能以及如何计算inf和sup之间f(a)的积分的任何提示来帮助我吗?

由于

布莱斯

2 个答案:

答案 0 :(得分:3)

rv_continuousscipy.stats中实现的所有概率分布的基类。你不会自己在rv_continuous上调用方法。

你的问题并不完全清楚你想做什么,所以我假设你有一个从一些未知概率分布中得出的16383个数据点的数组。从原始数据中,您需要估算累积分布,在supinf值处找到该累积分布的值,然后减去以查找从未知分布中获取的值的概​​率。

根据您想要做多少建模以及想要做多少假设,有很多方法可以估算数据中的未知分布。在更复杂的频谱末端,您可以尝试将一个标准参数概率分布拟合到数据中。例如,如果您怀疑数据是对数正态分布的,则可以使用scipy.stats.lognorm.fit(data, floc=0)查找适合您数据的对数正态分布参数。然后,您可以使用scipy.stats.lognorm.cdf(sup, *params) - scipy.stats.lognorm.cdf(inf, *params)来估计值在这些值之间的概率。

中间是分布估计的非参数形式,如直方图和核密度估计。例如,scipy.stats.gaussian_kde(data).integrate_box_1d(inf, sup)是使用未知分布的高斯核密度估计进行此估计的简单方法。但是,核密度估计并不总是合适的,需要进行一些调整才能正确。

您可以做的最简单的事情就是计算介于infsup之间的数据点数,并除以您拥有的数据点总数。这只适用于大量的点(你有)以及在数据尾部不太远的界限。

答案 1 :(得分:2)

累积密度函数可能会为您提供所需的功能。 那么两个值之间的概率P是  P(inf < area < sup) = cdf(sup) - cdf(inf)

有关于概率herehere的教程 他们都是相关的。 pdf是概率的“密度”。它们必须大于零并且总和为1.我认为它表明事物的可能性。期望是对平均概念的概括。

E[x] = sum(x.P(x))