問題タブ [stan]
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.
r - コマンド ラインで stan() を呼び出す R スクリプトを実行しているときに、rstan R パッケージの stan() 関数から警告メッセージを取得するにはどうすればよいですか?
R スクリプトでは、パッケージの関数Fit12_for_stack.R
を呼び出します。インタラクティブな R セッションでコードを実行すると、次のような警告メッセージが表示されます。rstan
stan()
Fit12_for_stack.R
stan()
警告メッセージ: 1: ウォームアップ後に 13 回の発散遷移がありました。adapt_delta を 0.8 より大きくすると役立つ場合があります。2: サンプリングの問題を診断するためにpairs()プロットを調べます
Fit12_for_stack.R
コマンドラインで次のコマンドを使用してスクリプトを実行すると:
出力は得られますが、警告メッセージは得られません。コマンド ラインで呼び出す R スクリプトを実行しているときに、警告メッセージをキャプチャするにはどうすればよいですか?stan()
stan()
投稿からすべてのコンソール出力を R のファイルに保存する方法は? 、追加してみました
スクリプトの先頭に追加されましたが、警告メッセージtest.log
なしで出力が表示されました。stan()
これはFit12_for_stack.R
次のようになります。
これはtry8.stan
次のようになります。
performance - 単純な隠れマルコフ モデルが PyMC3 の制限に直面する可能性がある
私は単純な HMM から始めて、離散パラメーターを必要とする可能性のあるモデルに構築する言語処理に取り組もうとしています (そのため、Stan は機能しない可能性があります)。最終的には、大量の言語データを処理したいので、かなりの効率が必要です。PyMC3 はおそらく私の唯一のオプションのようです (提案を受け付けています)。
単純な「隠れた」マルコフモデルを試してみると、問題が発生しました。これは、「潜在的な」状態が観測されたデータであるスタンマニュアルの最初の HMM モデルです。N=300 の人工データを使用したモデルは、Metropolis を使用して PyMC3 で実行されますが、Stan の 2.5 秒 (NUTS を使用) と比較して 11 分かかります。何百倍も長いということは、Metropolis サンプラーが適切に拡張できないことを示唆しています。PyMC3 の NUTS サンプラーは、非常に正確な MAP 推定値が供給されているにもかかわらず、「スケーリングは正定値ではありません」というエラーを出します。
また、PyMC3 で N=1000 のモデルを実行してみました。fmin_powell オプティマイザーと L-BFGS-B オプティマイザーの両方を試しました。どちらも 2 時間実行され、システムで使用可能なすべてのメモリ (16GB RAM、16GB スワップ) を使い果たした後にクラッシュしました--理由はわかりません。Stan は明示的な MAP 推定値を必要とせず、約 20 秒で N=1000 のベイジアン分析を完了しました。Stan のマニュアルを正しく読むと、MAP の推定値ではなく、単純にランダムな値から始まります。
私の問題が、PyMC3 に与えたモデルの新しい欠陥によるものなのか、PyMC3 の何らかの問題または制限によるものなのか、それともこれが PyMC3 (または最終的にはベイズ推定)。モデルをさらにベクトル化しようとしましたが、これは役立つかもしれませんが、機能するものを理解できないようであり、ガイダンスを提供するためにオンラインであまり見たことがありません.
モデルの実行に使用したすべてのコードと、使用した人工データは、 https ://drive.google.com/folderview?id=0B8242b1Xh6pzSWFDM2lQbDZwajg&usp=sharing にあります。
モデルは次のとおりです。
floating-point - 数値精度が原因でスタンの基本的な例を再現できない
Stan マニュアル バージョン 2.11 のセクション 15.2-15.3 の例を再現しようとしています。
gpdemo.stan gpdemo.RSigma
しかし、Stan はそれが正定値ではないことを訴えています。
そして実際にはそうではありません:
しかし、問題は他の何よりもむしろ数値精度の問題のようです:
明らかに、この例は、誰かのマシン上で数値的な問題なく実行されます (そうでなければ、インターネット中のブログで再現されるどころか、マニュアルにも記載されないでしょう)。これは非常に単純な例なので、どこかで間違っているのではないかと思います。
価値があるのは、構築するためにより賢明にループすることで、これを機能させることができたということSigma
です。
stan - Stanfit オブジェクトを新しいデータで更新する
一度に 1 つのデータ ポイントで、API 呼び出しを介してデータを生成しています。各ポイントを Stan モデルにフィードし、更新されたモデルを保存して、データ ポイントを破棄したいと考えています。
これはスタンで可能ですか?
もしそうなら、グループレベルのパラメータをどのように扱いますか? たとえば、モデルに J 個のグループ レベル パラメーターがあるが、一度に 1 つのデータ ポイントしか入力していない場合、エラーは発生しませんか?