我们假设x~泊松(2.5);我想计算类似E(x | x> 2)的东西。
我认为可以使用.dist.expect运算符完成,即:
D = stats.poisson(2.5)
cond_expect = D.dist.expect(lambda x: x, D.args,lb=2)
此评估为cond_expect = 2.29478750344
但是,如果我只计算该分布中随机样本的平均值
D = stats.poisson(2.5)
test = D.rvs(size = 100000)
empirical_expectation = np.mean(test[test>=2])
empirical_expectation评估为3.20875563063。
如果有人能澄清我对API的误解,我们将不胜感激。
答案 0 :(得分:5)
方法expect
采用布尔参数conditional
,默认为False。将其设置为True:
cond_expect = D.dist.expect(lambda x: x, D.args, lb=2, conditional=True)
与实证结果一致,返回3.219839256818051。
这是做什么的:
有条件:bool,可选
如果为真,则通过求和间隔的条件概率来校正期望。返回值是函数func的期望,条件是处于给定间隔(k使得ul <= k <= ub)。默认值为False。
所以,如果为False,则得到E(X if X >= 2 else 0)
而不是条件期望,通过除以P(X> = 2)来调整:E(X | X >= 2) = E(X if X >= 2 else 0) / P(X >= 2)
我不知道为什么在提供上限或下限时你会想要条件=假,但它是默认值。