問題タブ [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 に答える
1468 参照

bayesian - pymc3: 複数の観測変数を持つ階層モデル

私は、正規分布からの小さなサンプルを持つ多数の個人を含む単純な階層モデルを持っています。これらの分布の平均も正規分布に従います。

PyMC3 を使用して、サンプルからモデル パラメーターを計算したいと考えています。

mcmc サンプル

の事後model_means分布が、元の平均分布のようになることを期待していました。しかし、それ30は手段の平均に収束するようです。pymc3 モデルから平均の元の標準偏差 (私の例では 12) を回復するにはどうすればよいですか?

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

pymc - pymc3のGARCHモデル:確率変数をループする方法は?

この例の行に沿って、pymc3 で GARCH モデルを実装しようとしています。このために、次のように GARCH(1, 1) ディストリビューションを実装しようとしました

明確にするために、これは GARCH(1,1) モデルの対数尤度です。ボラティリティ プロセスは、時間 t でのボラティリティが時間 t-1 での残差に依存する時系列です。しかし、時間 t-1 での残差を決定するには、時間 t-1 でのボラティリティが必要です。

とにかく、それは私の質問にとってそれほど重要ではありません。重要なのは、for ループをベクトル化することによって可能性を計算できないことです (これは、投稿の上部にあるリンクで実行される方法です)。したがって、各ステップで最初にボラティリティを更新し、次に観察されたリターンの可能性を決定する明示的なループが必要です。

しかし、上記のコードは機能しません。次のようなモデルを構築しようとすると

「SP500.csv」ファイルは、 githubなどで見つけることができます。

このコードはエラーを生成します:

これは、for ループが theano と競合しているためだと確信しています。どうすればこれに対処できますか?

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

bayesian - PyMC3 の条件付き事前確率

分布に割り当てられた事前確率が特定の値に依存し、その値がサンプリングされる別の変数であるモデルを構築しようとしています。たとえば、問題に正しく答える生徒は、確率 p のベルヌーイ試行に従ってモデル化されます。学生が与えられた前提条件 (モデルの一部) を持っている場合、p は Beta(20,5) から取得する必要があります。そうでない場合、p は Beta(5,20) から取得する必要があります。

次のコードを使用して、これを PyMC2 で動作させました。

つまり、ベルヌーイ確率変数に割り当てられた事前確率は、他の値 (この場合は theta1[i]) の SAMPLED 値に応じて確率変数を返す決定論的関数です。

@deterministic デコレータが存在しなくなり、決定論的関数は Theano 変数として入出力を持たなければならないため、PyMC3 でこれを行う方法がわかりません。

洞察や提案をいただければ幸いです!!

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

pymc3 - Pymc3: ディリクレ事前パラメーターの観測値

動作しない小さなpymc3コードをいくつか書きます。

Theano エラー "IndexError: index out of bounds" というエラー メッセージが表示されましたが、その理由がわかりません。上記のコードのさまざまなバリエーションを試しましたが、すべてうまくいきません。

コードの意味に興味がある場合は、多項式カウントを観察した後にディリクレ パラメーターの事後が (10, 3, 4) であることを確認するためのものです。 .,1.,1.]) の結果は (10.,3.,4.)

シンプルな直接サンプリング:

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

python - PyMC3 を使用した反復測定による単純な線形回帰

John Kruschke の本「Doing Bayesian Data Analysis」(第 2 版) の例を再現しようとしています。この例は、反復測定による単純な線形回帰に関する第 16 章からのものです。この場合、尤度関数を指定することに夢中になっていると思います。John Kruschke のサイトからデータをダウンロードし、それを使用して csv を作成しました。これは、本で彼の R コードに従っているコードです。

どんな助けでも大歓迎です。

0 投票する
3 に答える
1946 参照

python - Theano のステップで File in wrong format エラーが発生する

Getting Started PyMC3の例を複製しようとしてい ます。

Windows 2012 R2 で。

ステップ from pymc3 import Model, Normal, HalfNormal

私はgccのために持っています

私は何が欠けていますか?

ありがとう

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

pymc3 - pymc3 を使用したロジスティック回帰 - glm でのビルドの前段階は何ですか?

ロジスティック回帰の場合、pymc3 で glm を使用して正確に何が起こっているのかについての良い説明を見つけることができませんでした。そこで、GLM バージョンを明示的な pymc3 モデルと比較しました。ドキュメント用の ipython ノートブックの作成を開始しました。以下を参照してください。

http://christianherta.de/lehre/dataScience/machineLearning/mcmc/logisticRegressionPymc3.slides.php

私が理解していないのは:

  • GLM のパラメータに使用される前もって何ですか? それらも正規分布していると思います。GLM でのビルドと比較して、明示的なモデルでは異なる結果が得られました。(上記のリンクを参照)

  • データが少ないと、サンプリングが動かなくなったり、非常に悪い結果しか得られませんでした。より多くのトレーニングデータを使用すると、この動作を観察できませんでした。これはmcmcにとって正常ですか?

ノートブックにはさらに問題があります。

ご回答有難うございます。

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

pymc3 - pymc3 で独立してサンプリングする方法

私は、やや型にはまらない事前分布を持つ単純な二変量正規モデルを使用しています。私が抱えている主な問題は、実行ごとに事後分布が一貫していないことです。これは、連続したサンプル間の依存度が高い問題に関連していると推測しています。ここに私の具体的な質問があります。

  1. N個の独立したサンプルを取得する最良の方法は何ですか? 現時点では、sample() を呼び出して大きなチェーン (たとえば、長さ 10,000) を取得し、1,000 から始まる 100 番目のサンプルごとに取得しています。しかし、パラメータの 1 つの自己相関プロファイルを見ると、少なくとも 500 番目のサンプルごとに取得する必要があるようです! (相互情報量を使用して、ラグ間の依存関係をよりよく理解することもできます。)

  2. 私は、pymc3 チュートリアルの確率的ボラティリティの例で説明されているフィッティング手順に従っています。特に、最初に MAP を見つけ、それを使用して NUTS() オブジェクトを生成し、次に短いサンプルを取得し、それを使用して別の NUTS() オブジェクトを生成し、gamma=0.25 (???) を使用して、最後に私の大きなサンプル。これが適切かどうか、またはガンマ = 0.25 が必要かどうかはわかりません。

  3. また、同じ例では、指数分布のテスト値があります。これらが必要かどうかわかりません。(平均値のデフォルト使用の何が問題なのですか?)

実際に使っているモデルはこちら。

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

python - pymc3 SQLite バックエンド、追跡する変数のリストを指定

1 つの変数の形状が 10K を超え、モデルが収束するために 500+k サンプルが必要な階層モデルを当てはめています。後で異なるモデルを比較できるように、トレースに永続的なバックエンドを使用したいと考えています。SQLite バックエンドを使用しようとしましたが、次のエラーが発生しました。

/opt/conda/lib/python2.7/site-packages/pymc3/backends/sqlite.pyc in _create_table(self) 123 ステートメント = template.format(table=varname, 124 value_cols=colnames) --> 125 self.db .cursor.execute(ステートメント) 126 127 def _create_insert_queries(self, chain):

OperationalError: individual_freq の列が多すぎます

これは、形状が 10K を超えるベクトル変数を含むすべての変数のトレースを保存しようとしているためだと思います。ベクトルのトレースを保存する必要はありません/保存したくありません-最上位の変数にのみ関心があります。メモリ バックエンドを使用する場合、次のように変数のリストを明示的に指定できます。

しかし、SQLite を使用する場合は、次のものしか指定できません。

私がやりたいことは、次のようなものです:

出来ますか?これは機能のリクエストでしょうか? アドバイスをありがとう。