我想知道是否有人能解释一下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)积分的任何提示吗?
谢谢
布莱斯
发布于 2013-07-29 12:12:46
发布于 2013-07-29 12:37:01
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
之间的数据点数,除以您拥有的数据点的总数。这仅适用于大量的点(这是您拥有的)和边界,而不是太远的尾部数据。
https://stackoverflow.com/questions/17922666
复制相似问题