如何计算无限分布的期望值?(特别是在python中)
我在尝试计算一个分布的期望值(假设我知道参数或者可以估计它们),但这个分布可能是在一个无限的样本空间上。有没有什么库(比如在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