2017-09-19 1 views
2

sympy에서 임의 변수의 조건부 기대치를 계산하려면 어떻게해야합니까? 다음sympy를 사용한 조건부 기대

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

이 제대로 1/2 반환하지만 : 나는 this을 읽고 시도

E(v, v>1/2) 

가 NaN을 반환합니다. 나는 또한 시도 :

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

그것 (이 3/4이어야한다) 잘못 인 1/2를 반환했습니다.

내가 뭘 잘못하고 있니?

답변

1

균일하게 분포 된 임의의 변수에 대한 특정 문제입니다 (already reported 참조). (또한 older issue 포함하는 통일 있습니다.) 당신이 작품을 제대로 한 일을 다른 배포판의 경우 : 균일 한 유형으로

>>> 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)의 값이 0.75을 반환

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

를 계산함으로써 발견 될 수있다.


주의 : 대화식으로 작업하는 경우 통계 모듈 외에 코어 SymPy에서 가져올 수도 있습니다. E는 오일러의 수 2.718를 의미하기 때문에 ... SymPy에, 하나는 그래서

TypeError: 'Exp1' object is not callable

하나의 기대를 계산 할 수없는 끝낼 수 있습니다 중 하나 개 또는 두 모듈에 대한 네임 스페이스를 가져 오거나 사용하는 것에 대해 더 구체적이어야한다 . 나의 선호하는 솔루션은 ...

E가 2.718 동안 그래서 st.E이 기대가

from sympy import * 
import sympy.stats as st 

입니다