使用scipy.stats计算条件期望

时间:2018-02-15 17:54:17

标签: scipy statistics

我们假设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的误解,我们将不胜感激。

1 个答案:

答案 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)

我不知道为什么在提供上限或下限时你会想要条件=假,但它是默认值。