問題タブ [pymc3]
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 - pymc 確率計算のデバッグ
ここで与えられた混合ガウスの例をコピーして、指数関数の混合をモデル化しようとしました。コードは以下です。ここでの推論にはいくつかのファンキーな側面があることは知っていますが、私の質問は、このようなモデルで計算をデバッグする方法についてです。
アイデアは、3 つの指数の混合であり、ガンマから取得されたスケール パラメータが に割り当てられているということscales
です。ただし、すべての観測値は、ElemwiseCategoricalStep
. を見ると、観測値の指数成分への割り当てが最初は多様であることがわかります。また、が 0 しか含まれていないinitial_assignments
ことから、すべての観測値がすべての相互関係でゼロ番目の成分に割り当てられていることがわかります。set(tr['exp'].flatten())
これは、p
in の式array([logp(v * self.sh) for v in self.values])
で代入されるすべての値ElemwiseCategoricalStep.astep
が負の無限大であるためだと思います。その理由と修正方法を知りたいのですが、さらに、この種のデバッグに使用できるツールを知りたいです。の計算をステップ実行してlogp(v * self.sh)
、結果がどのように決定されるかを確認する方法はありますか? pdbでやろうとすると、ネイティブ関数なので踏み込めないoutputs = self.fn()
inで詰まると思います。theano.compile.function_module.Function.__call__
与えられた一連のモデル パラメーターの pdf を計算する方法を知っていても、最初は役に立ちます。
python - pyMC2 ベイジアン A/B テストの例を pyMC3 に移植
私はpyMC 3の学習に取り組んでおり、問題があります。pyMC3 のチュートリアルは限られているため、私はBayesian Methods for Hackersから作業しています。ベイジアン A/B テストの例でpyMC 2 コードを pyMC 3 に移植しようとしていますが、成功しません。私が見ることができることから、モデルは観察をまったく考慮していません。
pyMC 3 はかなり異なるため、例からいくつかの変更を加える必要がありました。したがって、次のようになります。 import pymc as pm
代わりに次のようになります。
長い投稿で申し訳ありませんが、私の適応では、いくつかの小さな変更がありました。たとえば、pm.rbernoulli が存在しなくなったため、観測を手動で生成するなどです。また、トレースを実行する前に開始点を見つける必要があるかどうかもわかりません。実装を正しく実行するにはどうすればよいですか?
pymc - PyMC 3 の決定論的変数と Fortran Scipy 関数
私は単純な PyMC 3 モデルを構築しようとしています。このモデルでは、潜在的な二変量ガウス密度で 2 つのカット ポイントと相関パラメーターを推定し、(多項) カウントのベクトルに対して 4 つの予測確率を生成します。(これは最終的に、これらのパラメータやその他のパラメータが多数の潜在的な多変量ガウス密度に対して推定される、より大きなモデルの一部になることを願っています。)
したがって、カット ポイント cx と cy を通常の確率変数としてモデル化し、相関パラメーター rho をスケーリングされたベータ確率変数としてモデル化したい (補足として、rho を処理するより良い方法を聞きたい - PyMC 3 はたとえば、通常の確率変数を切り捨てましたか?)。関数 mvnun を使用して、cx、cy、および rho の特定の値の予測確率を計算します。関数 mvnun は scipy.stats.mvn の一部です。これは、非常に正確な多変量正規 CDF 値を計算するための 2 つの関数を持つコンパイル済みの Fortran コードです。
相関行列 S に rho を貼り付けようとするか、cx または cy を積分限界を示す配列に入れると、次のようになります。
cx、cy、および/または rho に固定数値を使用すると、mvnun は問題なく動作します ('with model:' ブロックの内外で)。PyMC RV がこのエラーを引き起こす理由を突き止めようとして、いろいろ調べてみましたが、困惑しています。cx、cy、および rho が theano TensorVariables であると私は収集しますが、theano TensorVariables について、これらの問題を引き起こす原因が何かを理解することはできません。
PyMC RV を引数として Fortran 関数を呼び出そうとすると、根本的な問題はありますか? または、私のコードに何らかの欠陥がありますか? 両方?まったく別の何か?
私はPyMCを初めて使用し、PyMC 3を現在のバージョンだと思ってインストールしました(数週間前にインストールしたときにアルファバージョンが存在しなかったことに注意してください)。おそらく、2.3 をインストールして、これとそれを組み合わせる方法を考えるべきでしょうか?
いずれにせよ、物事を修正する方法についてのアドバイスは大歓迎です。
これが私のコードです:
python - PyMC の並列化
誰かがPyMC MCMC
コードを並列化する方法について一般的な指示を与えることができますか? hereLASSO
の例に従って回帰を実行しようとしています。並列サンプリングがデフォルトで行われることをどこかで読みましたが、それを機能させるためにまだ何かを使用する必要がありますか?Parallel Python
これは、私のマシンで並列化できるようにしたい参照コードです。
python - pymc3 : 複数の観測値
パラメータを推定したい観測データがあり、PYMC3を試す良い機会だと思いました。
私のデータは一連のレコードとして構造化されています。各レコードには、固定された 1 時間の期間に関連する観測のペアが含まれています。1 つの観測値は、特定の時間内に発生したイベントの総数です。もう 1 つの観察結果は、その期間内の成功数です。たとえば、データ ポイントは、特定の 1 時間の間に合計 1000 件のイベントがあり、そのうちの 1000 件のうち 100 件が成功したことを示す場合があります。別の期間では、合計で 1000000 のイベントが発生し、そのうち 120000 が成功したとします。観測値の分散は一定ではなく、イベントの総数に依存します。私が制御およびモデル化したいのは、この効果の一部です。
これを行うための最初のステップは、基本的な成功率を推定することです。以下のコードは、scipy を使用して生成することで 2 セットの「観察された」データを提供することにより、状況を模倣することを目的としています。ただし、正しく動作しません。
私が期待しているのは次のとおりです。
- loss_lambda_factor はおよそ 0.1 です
- total_lambda (および total_lambda_mu) はおよそ 120 です。
代わりに、モデルは非常に迅速に収束しますが、予想外の答えになります。
- total_lambda と total_lambda_mu は、それぞれ 5e5 付近の鋭いピークです。
- loss_lambda_factor はほぼ 0 です。
traceplot (レピュテーションが 10 未満であるため投稿できません) はかなり面白くありません。収束が速く、入力データに対応しない数値で鋭いピークが発生します。私が取っているアプローチに根本的な問題があるかどうか、私は興味があります. 正しい/期待される結果を得るには、次のコードをどのように変更する必要がありますか?
python - PyMC3 でカスタム事前確率を定義する方法
PyMC3 でカスタム プライアを定義できるかどうか (およびその方法) を知りたいです。ここから、PyMC2 では (ソース コードを変更する必要なく) 比較的簡単に実行できるように見えますが、PyMC3 ではそれほど簡単ではありません (または、私は何かを理解していません)。BUGS に実装されている本「Doing Bayesian Data Analysis」から前もって複製しようとしています。
事前確率はあまり意味がありません。カスタム事前確率の定義方法と BUGS の汎用性の例にすぎません。
上記のカスタム プライアを実装する私の試みは次のとおりです。
編集
chris-fonnesbeckの回答に従う
次のようなものが必要だと思います:
唯一の問題は、theta1 と theta2 のすべての事後サンプルで同じ値が得られることです。カスタムの事前確率または事前確率と尤度の組み合わせに問題があると思います。カスタム事前分布の成功した定義は、この例で見つけることができます