2015-09-18 2 views

答えて

11

PyMC3では、Boundを使用して任意の分布を切り捨てることができます。

with pm.Model() as model: 
    BoundedNormal = pm.Bound(pm.Normal, lower=0, upper=1) 
    n = BoundedNormal('n', mu=0, tau=10) 
    tr = pm.sample(2000, pm.NUTS()) 

結果の分布は次のようになります: KDE and trace of the bounded normal distribution

+0

ありがとうございますKiudee! – Kemp

+1

これを今見つけた方に。 'AttributeError: 'bool'オブジェクトを取得している場合、 'any'属性はありません。その後、 'BoundedNormal'インスタンス化で' testval'を指定します。 – JudoWill

1

まずあなたが(ここBoundedNormalと呼ばれる)有界分布、あなたを入力根本的な分布の通常のパラメータ変数を作成を構築する必要があります次のコードはPymc3バージョン3.0で動作します

a, b=np.float32(0.0), np.float32(10.0) 

    K_lo, K_hi = 0.0, 1.0 

    BoundedNormal = pm.Bound(pm.Normal, lower=K_lo, upper=K_hi) 

    with pm.Model() as model: 

      n = BoundedNormal('n', mu=a, tau=b) 

      tr = pm.sample(2000, pm.NUTS()) 

      traceplot(tr) 
関連する問題