前を表現するには、次の2つの主要な属性を持つ確率クラスのインスタンスが必要になります。
value : the variable's current value
logp : the log probability of the variable's current value given the values of its parents
あなたが使用しているディストリビューションの名前で前を初期化することができます。
尤度を表すには、いわゆるデータ確率論が必要です。つまり、クラスobserved
フラグがTrue
に設定されているクラスのインスタンスです。この変数の値は変更できず、サンプリングされません。ここでも、使用しているディストリビューションの名前を使用して尤度を初期化することができます(しかし、observed
フラグをTrue
に設定することを忘れないでください)。
は、我々は次のセットアップを持っていると言う:
import pymc as pm
import numpy as np
import theano.tensor as t
x = np.array([1,2,3,4,5,6])
y = np.array([0,1,0,1,1,1])
私たちは、次のように簡単なロジスティック回帰を実行することができます。
with pm.Model() as model:
#Priors
b0 = pm.Normal("b0", mu=0, tau=1e-6)
b1 = pm.Normal("b1", mu=0, tau=1e-6)
#Likelihood
z = b0 + b1 * x
yhat = pm.Bernoulli("yhat", 1/(1 + t.exp(-z)), observed=y)
# Sample from the posterior
trace = pm.sample(10000, pm.Metropolis())
上記のほとんどはクリスFonnesbeckのiPythonノートhereから来ました。
出典
2014-03-28 03:19:17
Ben
誰もあなたに答えることができないように見えるので、ここで質問してみることをお勧めします:https://github.com/pymc-devs/pymc/issues – pablofiumara
これは[ソース](https: //github.com/pymc-devs/pymc/blob/master/pymc/step_methods/metropolis.py#L47)。それは比較的短く、アルゴリズムについてのあなたの明白な理解をもって、おそらく素早い見た目があなたにとって私にとってより明るいものになるでしょう。 –