2017-09-19 5 views
2

sympyでランダム変数の条件付き期待値を計算するにはどうすればよいですか?私はthisを読んでみました:sympyでの条件付き期待

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

これは、正しく1/2を返しますが、:

E(v, v>1/2) 
をNaNを返し

。私も試してみました:

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

これは正しくありません(3/4にする必要があります)。

私は間違っていますか?

答えて

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

を計算することによって求めることができます。


注意:インタラクティブに作業する場合、最終的には、statsモジュールに加えて、コアのSymPyからインポートすることができます。 Eはオイラー数2.718の略ですので... SymPyで、1だから

TypeError: 'Exp1' object is not callable

ものと期待を計算することができませんでし終わる可能性のいずれか一方または両方のモジュールのための名前空間をインポートする、または使用するかについて、より具体的にする必要があり。 Eは2.718である間st.Eが...

期待されるように、私の好適な解決策は

from sympy import * 
import sympy.stats as st 

です