タグ付けされた質問 「stan」

Stanは、単純なギブスサンプリング(BUGS)の代わりにNo-Uターンサンプリング(NUTS)アルゴリズムを使用するベイズ推定用のソフトウェアです。

5
機械学習で階層/ネストされたデータを処理する方法
例で問題を説明します。いくつかの属性(年齢、性別、国、地域、都市)を与えられた個人の収入を予測するとします。あなたはそのようなトレーニングデータセットを持っています train <- data.frame(CountryID=c(1,1,1,1, 2,2,2,2, 3,3,3,3), RegionID=c(1,1,1,2, 3,3,4,4, 5,5,5,5), CityID=c(1,1,2,3, 4,5,6,6, 7,7,7,8), Age=c(23,48,62,63, 25,41,45,19, 37,41,31,50), Gender=factor(c("M","F","M","F", "M","F","M","F", "F","F","F","M")), Income=c(31,42,71,65, 50,51,101,38, 47,50,55,23)) train CountryID RegionID CityID Age Gender Income 1 1 1 1 23 M 31 2 1 1 1 48 F 42 3 1 1 2 62 M 71 4 …
29 regression  machine-learning  multilevel-analysis  correlation  dataset  spatial  paired-comparisons  cross-correlation  clustering  aic  bic  dependent-variable  k-means  mean  standard-error  measurement-error  errors-in-variables  regression  multiple-regression  pca  linear-model  dimensionality-reduction  machine-learning  neural-networks  deep-learning  conv-neural-network  computer-vision  clustering  spss  r  weighted-data  wilcoxon-signed-rank  bayesian  hierarchical-bayesian  bugs  stan  distributions  categorical-data  variance  ecology  r  survival  regression  r-squared  descriptive-statistics  cross-section  maximum-likelihood  factor-analysis  likert  r  multiple-imputation  propensity-scores  distributions  t-test  logit  probit  z-test  confidence-interval  poisson-distribution  deep-learning  conv-neural-network  residual-networks  r  survey  wilcoxon-mann-whitney  ranking  kruskal-wallis  bias  loss-functions  frequentist  decision-theory  risk  machine-learning  distributions  normal-distribution  multivariate-analysis  inference  dataset  factor-analysis  survey  multilevel-analysis  clinical-trials 

2
医療関係者の信頼できる間隔を要約する方法
スタンおよびフロントエンドパッケージを使用するrstanarmかbrms、以前のような混合モデルで行ったように、ベイジアン方式でデータを簡単に分析できますlme。Kruschke-Gelman-Wagenmakers-etcの本や記事のほとんどを私の机に置いていますが、これらは、ベイジアンの怒りのSkyllaとメディカルレビュアーのCharybdisの間で引き裂かれた、医療聴衆のために結果を要約する方法を教えてくれません( 「拡散的なものではなく、重要なものが必要です」)。 例:胃の頻度(1 /分)は3つのグループで測定されます。健康なコントロールが基準です。参加者ごとにいくつかの測定値がありますので、頻繁に使用する次の混合モデルを使用しましたlme。 summary(lme(freq_min~ group, random = ~1|study_id, data = mo)) わずかに編集された結果: Fixed effects: freq_min ~ group Value Std.Error DF t-value p-value (Intercept) 2.712 0.0804 70 33.7 0.0000 groupno_symptoms 0.353 0.1180 27 3.0 0.0058 groupwith_symptoms 0.195 0.1174 27 1.7 0.1086 簡単にするために、2 * stdエラーを95%CIとして使用します。 頻繁な文脈では、私はこれを次のように要約したでしょう。 対照群では、推定頻度は2.7 /分でした(ここにCIを追加することもできますが、絶対CIと差分CIによって生じる混乱のために、これを避けることがあります)。 no_symptomsグループでは、頻度は0.4 /分、CI(0.11〜0.59)/分、p = …

1
スタン・
ここからダウンロードできるStanドキュメントを調べていました。Gelman-Rubin診断の実装に特に興味がありました。元の論文Gelman&Rubin(1992)は、潜在的な縮尺率(PSRF)を次のように定義しています。 ましょうであるサンプリング番目のマルコフ連鎖、および全体的な存在であるとするサンプリング独立チェーン。ましょうから平均する番目の鎖、及び全体平均です。定義、 ここで そして、定義Xi,1,…,Xi,NXi,1,…,Xi,NX_{i,1}, \dots , X_{i,N}iiiMMMX¯i⋅X¯i⋅\bar{X}_{i\cdot}ˉ X ⋅ ⋅ W = 1iiiX¯⋅⋅X¯⋅⋅\bar{X}_{\cdot \cdot}s 2 m =1W=1M∑m=1Ms2m,W=1M∑m=1Msm2,W = \dfrac{1}{M} \sum_{m=1}^{M} {s^2_m}, B B = Ns2m=1N−1∑t=1N(X¯mt−X¯m⋅)2.sm2=1N−1∑t=1N(X¯mt−X¯m⋅)2.s^2_m = \dfrac{1}{N-1} \sum_{t=1}^{N} (\bar{X}_{m t} - \bar{X}_{m \cdot})^2\,. BBB B=NM−1∑m=1M(X¯m⋅−X¯⋅⋅)2.B=NM−1∑m=1M(X¯m⋅−X¯⋅⋅)2.B = \dfrac{N}{M-1} \sum_{m=1}^{M} (\bar{X}_{m \cdot} - \bar{X}_{\cdot \cdot})^2 \,. 定義 PSRFはで推定されここで ここで、。√V^=(N−1N)W+(M+1MN)B.V^=(N−1N)W+(M+1MN)B.\hat{V} = \left(\dfrac{N-1}{N} \right)W …

2
スタンで定義された事前分布のないパラメーター
スタンとを使うことを学び始めたところrstanです。JAGS / BUGSがどのように機能するかについていつも混乱していない限り、描画するモデルのすべてのパラメーターに対して何らかの事前分布を常に定義する必要があると考えました。ただし、Stanのドキュメントに基づいてこれを行う必要はないようです。ここに彼らが提供するサンプルモデルがあります。 data { int<lower=0> J; // number of schools real y[J]; // estimated treatment effects real<lower=0> sigma[J]; // s.e. of effect estimates } parameters { real theta[J]; real mu; real<lower=0> tau; } model { theta ~ normal(mu, tau); y ~ normal(theta, sigma); } 事前定義muもされtauていません。JAGSモデルの一部をStanに変換する際に、事前定義されていない多くのパラメーターまたはほとんどのパラメーターを残しておけば、機能することがわかりました。 問題は、事前定義が定義されていないパラメーターがある場合、スタンが何をしているのか理解できないことです。デフォルトは均一分布のようなものですか?これはHMCの特別なプロパティの1つですか?すべてのパラメーターに事前定義済みの定義を必要としませんか?

1
ハミルトニアンモンテカルロおよび離散パラメーター空間
私はちょうどスタンでモデルの構築を始めました。このツールに慣れるために、私はベイジアンデータ分析(第2版)のいくつかの演習を行っています。ウォーターバック運動想定し、そのデータと、(N 、θ )は不明。ハミルトニアンモンテカルロは離散パラメーターを許可しないため、Nを実ε [ 72 、∞ )として宣言し、関数を使用して実数値の二項分布をコード化しました。n∼binomial(N,θ)n∼binomial(N,θ)n \sim \text{binomial}(N, \theta)(N,θ)(N,θ)(N, \theta)NNN∈[72,∞)∈[72,∞)\in [72, \infty)lbeta 結果のヒストグラムは、事後密度を直接計算して見つけたものとほぼ同じに見えます。ただし、これらの結果を一般的に信頼してはいけない微妙な理由があるのではないかと心配しています。の実数値推論は非整数値に正の確率を割り当てるため、実際には分数ウォーターバックは存在しないため、これらの値は不可能であることがわかります。一方、結果は良好であるように見えるため、この場合、単純化は推論に影響を与えないように見えます。NNN この方法でモデリングするための指針や経験則はありますか?それとも、個別のパラメーターを実際の悪い慣行に「促進」するこの方法はありますか?

2
MCMCサンプラーにJeffreysまたはエントロピーベースの事前分布を使用することに対する推奨事項があるのはなぜですか?
上の彼らのwikiページ、スタン状態の開発者: 私たちが好きではないいくつかの原則:不変性、ジェフリーズ、エントロピー 代わりに、正規の配布に関する推奨事項がたくさんあります。これまでのところ、サンプリングに依存しないベイズ法を使用しており、は、二項尤度の良い選択でした。θ∼Beta(α=12,β=12)θ∼Beta(α=12,β=12)\theta \sim \text{Beta}\left(\alpha=\frac{1}{2},\beta=\frac{1}{2}\right)
11 bayesian  mcmc  prior  pymc  stan 

2
BUGS / JAGS / STANでプロポーションをモデリングするにはどうすればよいですか?
私は、応答が比例であるモデルを構築しようとしています(これは、実際に党が選挙区で獲得する投票のシェアです)。その分布は正規ではないため、ベータ分布でモデル化することにしました。私はいくつかの予測因子も持っています。 しかし、私はそれをBUGS / JAGS / STANで書く方法がわかりません(JAGSが私の最良の選択でしょうが、それは本当に重要ではありません)。私の問題は、予測子によってパラメーターの合計を作成することですが、それを使って何ができるでしょうか コードは(JAG構文では)このようなものにy_hatなりyますが、およびパラメーターを「リンク」する方法がわかりません。 for (i in 1:n) { y[i] ~ dbeta(alpha, beta) y_hat[i] <- a + b * x[i] } (y_hatは、パラメーターと予測子のクロス積であり、したがって決定論的な関係です。aそしてb、私xが予測しようとする係数であり、予測子です)。 あなたの提案をありがとう!

1
スタンで以前の分布をプロットする方法は?
以前の分布のプロットを得るために、データなしでスタンモデルを実行しようとしました。ただし、これは可能ではないようです。サンプルが含まれていないモデルに関するエラーメッセージが表示されます。では、以前のディストリビューションを入手する方法はありますか?サンプラーなしでスタンを実行することは可能でしょうか?
10 prior  stan 


1
rstanまたは私のグリッド近似は正しくありません:ベイズ推定における分位点推定値の競合を決定する
私は、ベイズは人口規模推定達成するためのモデル持っているNNNと検出の確率θθ\thetaのみ観測されたオブジェクトの観測された数に基づいて、二項分布でのyyy: p(N,θ|y)∝Bin(y|N,θ)Np(N,θ|y)∝Bin(y|N,θ)N p(N,\theta|y)\propto \frac{ \text{Bin}(y|N,\theta)}{N} のために {N|N∈Z∧N≥max(y)}×(0,1){N|N∈Z∧N≥max(y)}×(0,1) \left\{N|N\in\mathbb{Z}\land N\ge \max(y)\right\}\times(0,1) 。簡単にするために、NNNは各y_iに対して同じ未知の値に固定されていると仮定しyiyiy_iます。この例では、y=53,57,66,67,73y=53,57,66,67,73y=53,57,66,67,73です。 このモデルをで推定するrstanと、事後のグリッド近似から得られた結果とは異なります。理由を突き止めようとしています。(興味を持った読者は、この質問は、後続の私の答えにあることを見つけるかもしれないここに。) rstan 近似 参考までに、これはrstanコードです。 raftery.model <- " data{ int I; int y[I]; } parameters{ real<lower=max(y)> N; simplex[2] theta; } transformed parameters{ } model{ vector[I] Pr_y; for(i in 1:I){ Pr_y[i] <- binomial_coefficient_log(N, y[i]) +multiply_log(y[i], theta[1]) +multiply_log((N-y[i]), theta[2]); } increment_log_prob(sum(Pr_y)); increment_log_prob(-log(N)); …

1
全体の平均勾配を推定せずにランダム勾配を推定することは適切ですか?
さまざまな都市の個人(グループ化変数)がいくつかの予測変数にどのように応答するかに違いがあるかどうかを推定しようとしています。したがって、実際には、各都市のについて学ぶことに興味があります。しかし、これらの推定値がいくつかのグループ平均に向かって「縮小」されるように、ランダムな勾配を使用したいと思います。ββ\beta 私が使用して私のモデルを適合していますstan_glmerから、stanarm同じように入力を受け付けるパッケージglmerからlme4。 それで、質問#1。グランドスロープを気にしない場合は、次のようにモデルを指定してもかまいません。 stan_glmer(Y ~ (V1 + V2 + V3|city)) または、最初に「固定効果」としてV1、V2、V3を含める必要がありますか?例えば stan_glmer(Y ~ V1 + V2 + V3 + (V1 + V2 + V3|city)) 2番目に、2番目のモデルが正しいオプションである場合(これは多少疑わしいです)、出力をどのように解釈すればよいですか?都市1のV1の勾配の推定値を取得するには、全体のを都市1の\ beta_ {v1}に追加しますか?その場合のエラーをどのように説明しますか?βv1βv1\beta_{v1}βv1βv1\beta_{v1} ありがとう!

1
データ補完のためのグアシアのプロセス
私は最近、ゲルマンらのガウスプロセスに出くわしました。(2013)、そして私は時系列データの補完に使用するためのそれらの潜在的なアプリケーションについてもっと学びたいと思っています。対象となるデータは、フォトプレチスモグラム(PPG、人の指の先に取り付けられ、血液量の変化を測定する光学センサー)を使用して収集された個人の心拍数の単一の可変時系列です。 問題は、乱雑なデータの特定のセクションがあることです。これらのアーティファクトを処理するために既存の編集戦略が開発されましたが、それらは主にEKGセンサーから収集されたデータに基づいて最適化されました。PPGの低速波形は、取得したデータへのアプリケーションを時々少し不格好にします。 簡単に言うと、データの手動編集を改善するために作成したR Shiny Appからの適切な信号に囲まれた孤立した乱雑なセクションの例を次に示します。 薄い灰色の線は、元の信号を表します(2kHから100Hzにダウンサンプリング)。赤い点が付いた黒い実線は、時間の経過とともにプロットされた心拍間隔(連続する心拍の間の秒単位の時間)のプロットです。心拍間隔は、これらのデータの分析における主要な変数になります。 たとえば、個人の心拍間隔を使用して、心拍変動を評価できます。残念ながら、ほとんどの編集戦略はばらつきを抑える傾向があります。さらに、これらのアーティファクトが存在する可能性が高い場合(参加者の移動のため)、特定のタスクがあります。つまり、これらの乱雑なセクションに削除のマークを付けて、ランダムに欠落しているものとして扱うことができませんでした。 利点は、心拍数の特性について多くのことを知っていることです。たとえば、成人の安静時の範囲は通常60〜100 BPMです。また、心拍数は呼吸周期の関数として変化することもわかっています。呼吸周期は、それ自体、静止している可能性のある周波数の範囲がわかっています。最後に、心拍数の変動に影響を与える低周波サイクルがあることを知っています(心拍数に対する交感神経と副交感神経の影響の組み合わせによって影響を受けると考えられています)。 上記の「悪いデータ」の比較的小さなセクションは、実際には私の主要な関心事ではありません。私は、このような孤立したケースでうまく機能するように見える、ある程度正確な季節補間アプローチを開発しました。 悪い信号と良い信号が定期的に混在しているデータセクションを処理するときに、さらに問題が発生します。 私がゲルマンらから理解しているように。(2013)、ガウス過程に対していくつかの異なる共分散関数を指定することが可能であるようです。これらの共分散関数は、観測されたデータと、成人(または子供)の心拍出量と呼吸出力の測定値について、かなりよく知られている事前分布によって通知されます。 たとえば、いくつかの心拍数が観測されたとします(fHRfHRf_{HR})、その平均心拍数に支配されるガウス過程を次のように指定することができます(これらのモデルを適用しようとするのは今回が初めてなので、ここで計算が終わっているかどうかをお知らせください)。 g1(T )∽ G P(0 、k1)g1(t)∽GP(0,k1)g_1(t) \backsim GP(0, k_1) どこ k1(t 、t』)=σ21e x p ( −2 s iん2(π(t −t』)fHRHz)2l21)k1(t,t′)=σ12exp(−2sin2(π(t−t′)fHRHz)2l12)k_1(t, t') = \sigma_1^2exp\Bigg(-\frac{2sin^2(\frac{\pi(t-t')f_{HR}}{Hz})}{2l_1^2}\Bigg) ここで、はサンプリングレート、は時間のインデックスです。HzHzHzttt 例に基づくGelman et al。(2013)彼らのテキストで提供して、この共分散関数を修正して特定の期間にわたる変動を可能にすることは可能であるようです。私にとっては、呼吸サイクル内および上記の低周波心拍変動サイクル内での推定値の変動を考慮したいと思います。fHRfHRf_{HR} 私の理解する最初の目標を達成するには、呼吸速度()のガウスプロセスと共分散関数、および共分散関数に両方のプロセスの機能を組み込んだガウスプロセスを指定する必要があります。fRfRf_R g2(T )∽ G P(0 、k2)g2(t)∽GP(0,k2)g_2(t) \backsim GP(0, k_2) どこ k2(t 、t』)=σ22e …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.