1

かなり単純な質問: どのように使用すればよい@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、より良い可能性を取得しようとする各反復で変更されます。

4

2 に答える 2