statsmodels.sandbox.distributions.transformed.LogTransf_gen.expect¶
-
LogTransf_gen.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其中
ub和lb是参数,x具有dist.pdf(x)分布。如果边界lb和ub对应于分布的支持,例如默认情况下的[-inf, inf],那么积分是不受限制的f(x)的期望值。此外,函数f(x)可以定义为f(x)在有限区间外为0,在这种情况下,期望值是在有限范围[lb, ub]内计算的。- Parameters:¶
- func
callable,optional 计算积分的函数。只接受一个参数。 默认是恒等映射 f(x) = x。
- args
tuple,optional 分布的形状参数。
- loc
float,optional 位置参数(默认=0)。
- scale
float,optional 尺度参数(默认值=1)。
- lb, ubscalar,
optional 积分的下限和上限。默认设置为分布的支持范围。
- conditionalbool,
optional 如果为真,积分将根据积分区间的条件概率进行修正。返回值是函数在给定区间内的条件期望。默认为假。
- Additional keyword arguments are passed to the integration routine.
- func
- Returns:¶
- expect
float 计算得出的期望值。
- expect
注释
此函数的积分行为继承自 scipy.integrate.quad。此函数和 scipy.integrate.quad 都无法验证积分是否存在或是否有限。例如
cauchy(0).mean()返回np.nan和cauchy(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。>>> 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
Last update:
Oct 16, 2024