かなり単純な質問: どのように使用すればよい@pm.stochastic
ですか? @pm.stochastic
負の対数値が期待されると主張するいくつかのブログ投稿を読みました。
@pm.stochastic(observed=True)
def loglike(value=data):
# some calculations that generate a numeric result
return -np.log(result)
最近これを試しましたが、本当に悪い結果が見つかりました。一部の人々が -np.log の代わりに np.log を使用していることにも気付いたので、試してみると、はるかにうまく機能しました。本当に期待していることは何@pm.stochastic
ですか?np.log(1/(1+t_1-t_0))
次のように書かれたようなものを使用した非常に人気のある例のために、必要な記号に小さな混乱があったと思います-np.log(1+t_1-t_0)
別の質問: このデコレータはvalue
引数に対して何をしているのでしょうか? 私が理解しているように、尤度に入力する必要がある事前確率の提案された値から始めます。@pm.stochastic
基本的には、この尤度をサンプリングプロセスの前の反復によって生成された数値と比較するための数値を生成するという考え方です。尤度は引数と事前確率のいくつかの値を受け取る必要がありますが、これが唯一の必要な引数であるため、value
これですべてが機能しているかどうかはわかりませんが、次のように書くことができます。value
@pm.stochastic(observed=True)
def loglike(value=[1]):
data = [3,5,1] # some data
# some calculations that generate a numeric result
return np.log(result)
そして、私が知る限り、それは以前と同じ結果を生み出します。たぶん、observed=True
デコレータに追加したので、このように機能します。observed=False
デフォルトで確率変数でこれを試した場合value
、より良い可能性を取得しようとする各反復で変更されます。