問題タブ [pymc]
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.
python - 価格を正しく解決する
Probabilistic Programming for Hackersの第5 章で、著者はThe Price is Rightのインスタンスに対して次のソリューションを提案しています。ここでの目標は、フルショーケースの価格の事後確率を推定することです。
ショーの参加者として、あなたが持っているのは、ショーの履歴データに基づくショーケースの全額の見積もりと、ショーケースに含まれるアイテムの価格の独自の見積もりだけです。
本の章はこの投稿に基づいており、ソリューションのコードを以下に示します。
その結果:
私の質問は次のとおりです。
この問題のベイジアン定式化は何ですか? 作成者はどのように尤度関数を使用して事前確率を接続し、事後確率を得ることができますか?
は上記のコードの の定義をどのように
pymc
解釈しますか? 統計グラフ モデルerror
potential
の文献では、ポテンシャルは通常、ある分布の因数分解における因子 (積項) です。この場合、どの分布 (つまり、どの変数) が参照されていますか?potential
normal_like
著者はコード内でPyMC 関数を使用しているPyMC
ため、この尤度関数を最大化することを想定していますか? (そうでない場合、それはどのような役割を果たしますか?)。著者はtrue_price
、観測データprice_estimate
としてmu
、正規尤度関数の として使用しているようです。これは正しいですか?もしそうなら、これの理論的根拠は何ですか?
python - PyMC の並列化
誰かがPyMC MCMC
コードを並列化する方法について一般的な指示を与えることができますか? hereLASSO
の例に従って回帰を実行しようとしています。並列サンプリングがデフォルトで行われることをどこかで読みましたが、それを機能させるためにまだ何かを使用する必要がありますか?Parallel Python
これは、私のマシンで並列化できるようにしたい参照コードです。
python - PYMC を使用して多変量法線の階層混合モデルをコーディングする方法
PyMC を使用して 3 つの法線の混合を正常に実装しました ( https://drive.google.com/file/d/0Bwnmbh6ueWhqSkUtV1JFZDJwLWcに表示され、PyMC で 3 つの法線の混合物をモデル化する方法で尋ねられた質問と同様です) 。
私の次のステップは、多変量法線の混合を試してコーディングすることです。
ただし、データには追加の複雑さがあります。つまり、一連の観測が親観測に属する階層です。クラスタリングは、個々の観測自体ではなく、親の観測に対して行われます。この最初のステップでコード (60 の親、各親ごとに 50 の観測値) が生成され、正常に動作します。
ただし、PyMC を使用してサンプリングを実行しようとすると、イントロ トラブルが発生します (「エラー: flib.prec_mvnorm の 3 番目の引数 `tau' を C/Fortran 配列に変換できませんでした」)。
上記の代わりに、この手順がうまく機能するため、シミュレートされた観測データの形式に問題がないことはわかっています。
結果として、問題は平均ベクトル ('mean') と共分散行列 ('prec') の入力方法だと思いますが、方法がわかりません。私が言ったように、これは正規分布の混合ではうまくいきましたが、多変量正規分布の混合は私が理解できない複雑さを追加しています.
python - pymc に保存されたトレースからの図のプロット
収束を確認するには、さまざまなパラメーターで MCMC をさまざまな時間に実行する必要があります。だから私はトレースを保存することに決めたので、(比較目的で)知る必要があるときに
pymc.MCMC (iter = 10000, burn = 1000, thin = 10)
再実行する必要はありません。(多くの時間がかかります(パラメータのさまざまな値に対して同じことをしなければなりません))。
私は解決策を見つけました
したがって、トレースは10000iter1000burn.pickleという名前のデータベースに保存されます
さて、トレースをロードするには、次のようにします
実行するprint db.trace('tau')[:]
と同じ出力が得られますが、図をプロットしたり、他の情報を取得したりしたい場合は失敗します
plot() は少なくとも 2 つの引数 (1 つ指定) を取ります が、plot(m) を実行すると (サンプラーを再度実行したときの最初のケース)、正常に動作します。
同様にdb.tau.summary()
、エラー'Trace' object has no attribute 'summary' が表示
されます。m.tau.summary()
同じことが当てはまりますdb.logp
私はこの分野の初心者です。構文のどこかに間違いがある場合は、親切に修正してください。図を再プロットして、mcmc を再度実行せずにモデルの対数確率を取得できる他の方法があれば、喜んでお知らせします。