当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy rv_continuous.expect用法及代码示例


本文简要介绍 python 语言中 scipy.stats.rv_continuous.expect 的用法。

用法:

rv_continuous.expect(func=None, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)#

通过数值积分计算函数相对于分布的期望值。

函数f(x)相对于分布dist的期望值定义为:

ub
E[f(x)] = Integral(f(x) * dist.pdf(x)),
        lb

其中ublb 是参数,x 具有dist.pdf(x) 分布。如果边界lbub对应于分布的支持,例如[-inf, inf] 在默认情况下,则积分是 f(x) 的无限制期望。此外,函数f(x)可以被定义为使得f(x)是有限区间之外的0,在这种情况下,在有限范围[lb, ub]内计算期望。

参数

func 可调用的,可选的

为其计算积分的函数。只接受一个论点。默认值为恒等映射 f(x) = x。

args 元组,可选

分布的形状参数。

loc 浮点数,可选

位置参数(默认 = 0)。

scale 浮点数,可选

比例参数(默认值=1)。

lb, ub 标量,可选

积分的下限和上限。默认设置为发行版的支持。

conditional 布尔型,可选

如果为 True,则通过积分区间的条件概率校正积分。返回值是函数的期望值,条件是在给定的区间内。默认为假。

Additional keyword arguments are passed to the integration routine.

返回

expect 浮点数

计算出的期望值。

注意

此函数的集成行为继承自 scipy.integrate.quad 。这个函数和 scipy.integrate.quad 都不能验证积分是否存在或有限。例如 cauchy(0).mean() 返回 np.nancauchy(0).expect() 返回 0.0

同样,结果的准确性也没有经过函数验证。 scipy.integrate.quad 对于数值上有利的积分通常是可靠的,但不能保证所有可能的区间和被积函数都收敛到正确的值。提供此函数是为了方便;对于关键应用程序,请对照其他集成方法检查结果。

该函数未矢量化。

例子

要了解积分边界的影响,请考虑

>>> from scipy.stats import expon
>>> expon(1).expect(lambda x: 1, lb=0.0, ub=2.0)
0.6321205588285578

这是接近

>>> expon(1).cdf(2.0) - expon(1).cdf(0.0)
0.6321205588285577

如果conditional=True

>>> expon(1).expect(lambda x: 1, lb=0.0, ub=2.0, conditional=True)
1.0000000000000002

与 1 的微小偏差是由于数值积分。

通过将 complex_func=True 传递给 scipy.integrate.quad ,可以将被积数视为 complex-valued 函数。

>>> import numpy as np
>>> from scipy.stats import vonmises
>>> res = vonmises(loc=2, kappa=1).expect(lambda x: np.exp(1j*x),
...                                       complex_func=True)
>>> res
(-0.18576377217422957+0.40590124735052263j)
>>> np.angle(res)  # location of the (circular) distribution
2.0

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.rv_continuous.expect。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。