如何计算无限分布的期望值?(特别是在python中)

3 投票
1 回答
5403 浏览
提问于 2025-04-17 22:30

我在尝试计算一个分布的期望值(假设我知道参数或者可以估计它们),但这个分布可能是在一个无限的样本空间上。有没有什么库(比如在Python中,像numpy之类的)能够以合理的速度和准确性计算这样的期望值?

对于一个任意的分布,这似乎很难,但我想到的唯一办法是,如果它是正态分布的话,我们可以通过在概率高度集中区域加上足够小的块来进行近似……不过我想做一些更成熟、更规范的方法,因为我相信我不是第一个想在计算机上计算期望值的人。

1 个回答

2

拥有一个支持无限的概率空间并不罕见。

比如,正态分布和t分布的支持范围是整个实数线,而泊松分布则是所有正整数。

scipy.stats中,有一个expect方法。对于连续的情况,它会使用scipy.integrate.quad来计算,而对于离散的情况,它会用扩展求和的方法,并加上一些停止的判断标准。

这种方法在处理表现良好的函数时效果不错,但在某些情况下可能会遇到问题,比如函数的支持范围发生偏移或者尾部比较重的情况。

标准正态分布的方差:

>>> from scipy import stats
>>> stats.norm.expect(lambda x: x**2)
1.000000000000001

泊松分布的方差:

>>> stats.poisson.expect(lambda x: (x - 5)**2, args=(5,))
4.9999999999999973

撰写回答