有条件的期望与同情

Conditional expectation with sympy

如何在 sympy 中计算随机变量的条件期望?我阅读了 this 并尝试了:

from sympy.stats import *
v = Uniform("v",0,1)
E(v)

这个 returns 正确 1/2,但是:

E(v, v>1/2)

returns 南。我也试过:

E(v, where(v > 1/2))

它返回了 1/2,这是不正确的(应该是 3/4)。

我做错了什么?

这个问题(我看到你 already reported) is specific to uniformly distributed random variables. (There's also an older issue 涉及 Uniform。)对于其他发行版,你所做的工作正常:

>>> from sympy.stats import *
>>> x = Exponential("x", 1)
>>> E(x, x < 2)
-3/(-1 + exp(2)) + exp(2)/(-1 + exp(2))

至于统一类型,目前的解决方法是记住将一个均匀分布的随机变量调节到某个区间会创建另一个均匀分布的随机变量。

所以E(v, v > 1/2)的值可以通过计算得到

E(Uniform("x", 1/2, 1))

其中 returns 0.75.


注意:如果以交互方式工作,除了它的统计模块之外,您可能希望最终从核心 SymPy 导入。由于 E 代表欧拉数 2.718... 在 SymPy 中,人们可能最终无法使用

计算期望值

TypeError: 'Exp1' object is not callable

因此,要么必须更具体地说明要导入的内容,要么为一个或两个模块使用名称空间。我的首选解决方案是

from sympy import *
import sympy.stats as st

所以 st.E 是期望值,而 E 是 2.718...