問題タブ [probabilistic-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
583 参照

pymc3 - 確率的グラフィカルモデルをパラメータ化するためにpymcを使用する方法は?

確率的グラフィカルモデルをパラメータ化するためにpymcをどのように使用できますか?

X2 つのノードとを持つ PGM があるとしYます。X->Yグラフだとしましょう。

AndXは 2 つの値{0,1}を取り、 Yまた 2 つの値も取ります{0,1}

pymc を使用して分布のパラメーターを学習し、それをグラフィカル モデルに入力して推論を実行したいと考えています。

私が考えることができる方法は次のとおりです。

ここY0Valsに、値 = 0に対応する値と、値 = 1 にY対応する値があります。XY1ValsYX

計画は、これらから MCMC サンプルを抽出し、 および の手段を使用してY0_pY1_p 離散ベイジアン ネットワークの確率を設定するP(X) = (X_p,1-X_p)ことです...したがって、 while の確率表はP(Y/X):

質問:

  1. これはこれを行う正しい方法ですか?
  2. 特にX数百の離散値がある場合、これは不器用になりませんか? または、変数に 2 つの親がXありY、それぞれに 10 個の離散値がある場合は?
  3. 私にできるもっと良いことはありますか?
  4. この種の相互接続を行う方法を詳しく説明している良い本はありますか?
0 投票する
0 に答える
763 参照

python - PyMC: 複数の時系列観測 (「ハッカーのためのベイジアン手法」からのテキスト メッセージの例の適応)

Cameron Davidson-Pilon のBayesian Methods for Hackers の第 1 章「最初のハンマーの紹介: PyMC」のテキスト メッセージの例を、複数の観測を処理するように適応させようとしています 。以下の解決策は機能しているように見えますが、私はpymcが初めてで、これがpymcで複数の時系列観測を処理する良い方法であるかどうかわかりません. どんなアドバイスでも大歓迎です!

Bayesian Methods for Hackers からのテキスト メッセージの例を要約すると、以下の図に示すように、観測は 74 日間のテキスト メッセージ数で構成されます。

ここに画像の説明を入力

この本では、スイッチポイント パラメーター (tau) と 2 つの指数パラメーター (lambda1 と lambda2) を使用してこのプロセスをモデル化しています。これらのパラメーターは、tau の前後のポアソン分布メッセージ カウントをそれぞれ制御します。この例では、pymc は次のコードを使用して、ほぼ tau=45、lambda1=18、lambda2=23 の解を生成します。これは本のコードとほとんど同じです。

私の質問は、複数の観測を処理するためにこれをどのように適応させるべきですか?

私の解決策は以下に表示され、機能しているようですが、pymc で問題をモデル化するためのより良い方法があるかどうか知りたいです。

最初に、次のように tau=45、lambda1=18、lambda2=23 を使用して 5 つのランダムな観測値を生成します。

上記のコードを実行すると、以下に示すように、たとえば 74 日間にわたる 5 人の異なる人々のデータを表す (5 x 74) の「観察」配列が得られます。

ここに画像の説明を入力

次のステップは、よくわからない部分です: これらの 5 つの観測値を pymc でどのようにモデル化する必要がありますか? ここに私が持っているものがあります:

このモデルを実行すると、タウ、ラムダ 1、およびラムダ 2 について期待される結果が生成されるように見えますが、これが複数の観測を処理する適切な方法であるかどうか疑問に思います。

0 投票する
1 に答える
1519 参照

python - PYMC3 で ODE を解く

ここでは、次の式で与えられる減衰調和振動子のパラメーター (ガマとオメガ) を推定することを目的としています。

dX^2/dt^2+ガンマ*dX/dt+(2*パイ*オメガ)^2*X=0. (システムにホワイト ガウス ノイズを追加できます。)


上記のコードを DampedOscil_model.py として保存すると、次のように PYMC を実行できます。


そして、それはうまく機能します(以下を参照)。

gama_true=2.0 および omega_est=1.5 によって作成された真の信号と推定信号。パラメータの推定値は、gama_est=2.04 および omega_est=1.49 です。

次に、このコードを PYMC3 に変換して、NUTS と ADVI を使用します。

このコードでは、次のエラーが発生します: V1 = pm.Deterministic('V1', DHOS[0])

簡単に言えば、PYMC コードの次の部分を PYMC3 に変換する方法を知りたいです。

問題は、第一に、決定論的関数の引数が PYMC3 と PYMC で異なることです。第二に、PYMC3 には Lambda 関数がありません。

PYMC3 で ODE を解いて、生物学的システムのパラメーター推定タスク (データから方程式パラメーターを推定する) を解決するためにご協力いただきありがとうございます。

ご協力いただきありがとうございます。

敬具、

メイサム