問題タブ [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.

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

python - パラメーター空間で桁違いの指数を使用して指数事前分布を定義する

次のようにパラメータの指数事前分布を定義したい

ここに画像の説明を入力

したがって、私はpymcでそれを定義しました

という制約も満たしてほしい

ここに画像の説明を入力

しかし、MCMC コードの変更を非常にゆっくりと実行すると、とMASSの間でこの 3 桁の速度で変更したいと思います。パラメータ空間で大幅に変更するために、どのように前もって定義できますか?1e+131e16

0 投票する
2 に答える
1271 参照

python - PyMC3 でモデルを定義し、1 つのパラメーターを複数の条件で同じ値に制約する方法

以下のようなモデルを書きたいと思います。主なアイデアは、いくつかの条件 (または治療) があるということです。すべての条件で同じカッパ パラメーターを除いて、すべてのパラメーターは条件ごとに個別に推定されます。

モデルを実行すると、次のメッセージが表示されます。

編集 chris-fonnesbeck の回答に続いて、次のことを試しました。

エラーが発生します:

UserWarning は開始点の最適化に関連しており、pm.find_MAP() を使用しない場合は削除されます。残りのエラーは持続します。

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

python - statsmodels と pymc の対数尤度

Python で最初の最尤推定を実行しようとしています。この手順の 1 つで、モデル パラメーターの可能性を計算する必要があります。ここに要約できるサンプルデータをいくつか見つけました。

statsmodels.api を介して単純なモデルを実行するとします。results.summary() から -14.601 の値を取得します。

OLS のソースを見ると、これは対数尤度の基本的な計算のようです

これを PyMC で実装しようとすると、異なる結果が得られます。私の側での場所とスケールの計算ミスかもしれません。

ここでは -135.29 という値を取得します。scale と loc の値を誤って計算しているに違いないと感じていますが、実装の他のエラーである可能性があります。おそらく、OLS は通常の対数尤度以外の他の尤度を使用していますか? 私は統計モデル、PyMC、および MLE 全般にかなり慣れていません。ここで私が間違っていることを誰かが知っていますか?

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

pymc - マルチレベル モデルの奇数相関事後トレースプロット

シンプルなマルチレベル モデルで PyMC3 を試しています。偽のデータと実際のデータの両方を使用すると、ランダム効果分布のトレースが互いに移動し (下のプロットを参照)、同じトレースのオフセットのように見えます。これは予想される NUTS のアーティファクトですか、それとも私のモデルに問題があることを示していますか?

以下は、実際のデータのトレースプロットです。

トレースプロット

これは、偽のデータを作成するために使用されたモデルと関数のIPtyhon ノートブックです。対応する要点は次のとおりです。

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

python - pymc3 による確率的および決定論的変数の定義

私は pymc3 で自分の変数stochasticと変数を書き込もうとしていますが、 pymc2.3の古い公開されたレシピでは、変数をパラメーター化する方法が機能しなくなりました。たとえば、私はこのアプローチを使用しようとしましたが、失敗しました:deterministicdirect

次のエラー メッセージが表示されました。

pymc3たとえば、デコレータと利用可能なディストリビューションを使用せずに、自分の事前確率または可能性をどのように定義できるか疑問に思っていますpymcか?

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

pymc - PyMC 3 のディリクレ過程

Implementing Dirichlet processes for Bayesian semi-parametric models (source: here ) で参照されているディリクレ プロセスの例を PyMC 3 で実装するために実装したいと思い ます。

pymc.deterministic この例では、デコレーターを使用して棒切れの確率が計算されます。

勾配計算に Theano を使用している PyMC 3 でこれをどのように実装しますか?

theano.scan編集:メソッドを使用して次の解決策を試しました:

悲しいことに、これは本当に遅く、合成データの元のパラメーターを取得しません。

より良い解決策はありますか?これは正しいですか?

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

pymc - 崩壊したサンプリング/個々の Metropolis-Hastings ステップ

私のモデルには、theta_1theta_2nuなどの 3 つのパラメーターがあります。

theta_1theta_2を後からnuを周辺化して (分析的に行うことができます)、つまりp(theta_1, theta_2 | D)からp(theta_1, theta_2, nu | D) からサンプリングしたいのですが、ここでDはデータです。その後、theta_1theta_2の新しい値に基づいてnuをリサンプリングします。したがって、1 つのサンプリング スキャンは次のステップで構成されます。

  1. p(theta_1, theta_2 | D)からtheta_1theta_2を描画します( nuは除外されます)
  2. p ( nu | theta_1, theta_2, D)からnuを描画します (nu は除外されます)

つまり、崩壊したギブス サンプラーです。

PyMC3でどうやってそれを行うのですか? 個々のステップ関数を実装する必要があると思いますが、ここで可能性を構築する方法がわかりません。PyMC3 でステップ関数を実装するときにモデル仕様にアクセスするにはどうすればよいですか?

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

pymc - 回帰モデルを定義するときの大量のメモリ使用量

ポアソン回帰モデルの実行時にメモリに問題があります。データがロードされ、モデルの準備が整った状態で、python は約 650 MB のメモリを使用しています。モデルを作成するとすぐに、

メモリ使用量は最大 3 GB になります。8 ビット整数のデータ ポイントは 350 個しかないため、この量のメモリを使用しているものはわかりません。

少し遊んだ後、モデルに何かを追加すると、メモリが最大 3 GB になることがわかりました。

何が起こっているか、またはどうすればより深く調べることができるかについて何か提案はありますか? 新しい iMac、Python 2.7、および最新バージョンの PyMC3 を使用しています。ありがとう。

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

pymc - 多項ロジスティック回帰 - pymc3

私はpymc3を試し始め、多項ロジスティック回帰モデルを実装する必要があります. 私は twiecki のチュートリアルを研究し、彼の階層回帰モデルの実装 ( https://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/を参照) といくつかの基本的な例を理解しています。 pymc3 のバイナリ ロジスティック回帰。これを多項ロジスティック回帰に拡張したものはまだ見ていません。pymc3 の GLM を使用した場合のサポートはありますか? または、GLM を使用せずにこれをどのように実装しますか? 問題を解決しようとするiPythonノートブックへのリンクを次に示しますが、ここに重要な何かが欠けていることはわかっています。MultinomialLogisticRegression%20-%20Radon%20Level.ipynb

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

theano - PyMC3 ディリクレ分布

次のコードのように、重みの未知のベクトルが確率質量関数になるように制約されているため、ディリクレ分布としてモデル化されている pymc3 で線形回帰モデルを実装しています。

実行して事後をサンプリングした後:

ディリクレ変数のトレースを分析したところ、それらの値が 1 に加算されないことがわかりました (以下は例です)。

私は theano 変数に精通しておらず、ディリクレ RV が pymc3 でどのように表現されているかを調べるのが難しいことがわかりました...何か間違ったことをしていますか、それともトレースで返された値を正規化して合計が 1 になるようにする必要がありますか?

クイック更新 関数pm.find_MAP()は一種の勾配降下最適化を採用しているようです。これは、ディリクレ分布からのドローを表すベクトルが確率質量関数であるという事実から生じる制約を考慮していません (その値は正でなければならず、それらの合計は 1 でなければなりません)。この制約は、アルゴリズムのサンプリング段階でも明らかに適用されず、尤度分布の精度がゼロに向かってドリフトするため、収束の問題が発生します。