1

我想知道是否有人可以解释 scipy.stats 中的以下函数的作用:

rv_continuous.expect
rv_continuous.pdf

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

这是我的任务,理论上很简单,但我仍然对这些函数的作用感到困惑。

所以,我有一个区域列表,16383 个值。我想找到变量 area 取较小值(称为“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 之间的概率。

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

谢谢

布莱斯

4

2 回答 2

3

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

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

有很多方法可以从数据中估计未知分布,具体取决于您要进行多少建模以及要做出多少假设。在更复杂的范围内,您可以尝试将标准参数概率分布之一拟合到数据中。例如,如果您怀疑您的数据是对数正态分布的,您可以使用它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)使用未知分布的高斯核密度估计是一种简单的方法。但是,内核密度估计并不总是合适的,需要进行一些调整才能正确。

您可以做的最简单的事情就是计算介于inf和之间的数据点数,sup然后除以您拥有的数据点总数。这仅适用于大量点(您拥有)以及数据尾部不太远的边界。

于 2013-07-29T12:37:01.127 回答
2

累积密度函数可能会给你你想要的。那么P介于两个值之间的概率是 P(inf < area < sup) = cdf(sup) - cdf(inf)

这里这里有一个关于概率的教程 它们都是相关的。pdf 是概率的“密度”。它们必须大于零并且总和为 1。我认为它表明某事的可能性有多大。期望是平均概念的概括。

E[x] = sum(x.P(x))
于 2013-07-29T12:12:46.110 回答