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

PyMCは、MCMCを使用してベイジアン推論を実行するためのPythonライブラリです。これは、JAGSおよびBUGSに相当するPythonです。

3
例:バイナリ結果にglmnetを使用したLASSO回帰
私は興味のある結果が二分されglmnetているLASSO回帰の使用に手を出し始めています。以下に小さな模擬データフレームを作成しました。 age <- c(4, 8, 7, 12, 6, 9, 10, 14, 7) gender <- c(1, 0, 1, 1, 1, 0, 1, 0, 0) bmi_p <- c(0.86, 0.45, 0.99, 0.84, 0.85, 0.67, 0.91, 0.29, 0.88) m_edu <- c(0, 1, 1, 2, 2, 3, 2, 0, 1) p_edu <- c(0, 2, 2, …
77 r  self-study  lasso  regression  interpretation  anova  statistical-significance  survey  conditional-probability  independence  naive-bayes  graphical-model  r  time-series  forecasting  arima  r  forecasting  exponential-smoothing  bootstrap  outliers  r  regression  poisson-distribution  zero-inflation  genetic-algorithms  machine-learning  feature-selection  cart  categorical-data  interpretation  descriptive-statistics  variance  multivariate-analysis  covariance-matrix  r  data-visualization  generalized-linear-model  binomial  proportion  pca  matlab  svd  time-series  correlation  spss  arima  chi-squared  curve-fitting  text-mining  zipf  probability  categorical-data  distance  group-differences  bhattacharyya  regression  variance  mean  data-visualization  variance  clustering  r  standard-error  association-measure  somers-d  normal-distribution  integral  numerical-integration  bayesian  clustering  python  pymc  nonparametric-bayes  machine-learning  svm  kernel-trick  hyperparameter  poisson-distribution  mean  continuous-data  univariate  missing-data  dag  python  likelihood  dirichlet-distribution  r  anova  hypothesis-testing  statistical-significance  p-value  rating  data-imputation  censoring  threshold 

1
pymcを使用したベイジアンネットワーク推論(初心者の混乱)
現在、コースラでダフネ・コラーのPGMコースを受講しています。その点で、一般にベイジアンネットワークを、観測データの一部である変数の原因と結果の有向グラフとしてモデル化します。しかし、PyMCのチュートリアルと例では、PGMまたは少なくとも私が混乱しているのと同じようにモデル化されていないことが一般的にわかります。PyMCでは、観測された実世界変数の親は、多くの場合、変数のモデル化に使用する分布のパラメーターです。 今、私の質問は本当に実用的なものです。データが観測される3つの変数(A、B、C)があると仮定します(これらはすべて、それのためにすべて連続変数であると仮定します)。ある分野の知識から、AとBがCを引き起こすと言うことができます。したがって、ここにはBNがあります-A、Bは親であり、Cは子です。BN方程式からP(A、B、C)= P(C | A、B)* P(A)* P(B) AとBはmuとsigmaを含む正規分布であると言えますが、P(C | A、B)をモデル化するにはどうすればよいですか?私が学びたい一般的な考え方は、BNを照会できるように、PyMCを使用してこのBNをどのように学習するかです。または、何らかの方法でモデルのパラメーターを使用してBNを増強する必要がありますか? この問題はpymcを使用して解決できますか?または、いくつかの基本的な間違いがありましたか? 助けていただければ幸いです!

1
列車待ち時間のベイズモデリング:モデル定義
これは、常連のキャンプから来た誰かがベイジアンデータ分析を行うための私の最初の試みです。A. GelmanによるBayesian Data Analysisからいくつかのチュートリアルといくつかの章を読みました。 最初に多かれ少なかれ独立したデータ分析の例として選択したのは、列車の待ち時間です。私は自分自身に尋ねました:待ち時間の分布は何ですか? データセットはブログで提供され、PyMCの外部とは少し異なって分析されました。 私の目標は、これらの19のデータエントリから、予想される列車の待ち時間を見積もることです。 私が作成したモデルは次のとおりです。 μ 〜N(μ^、σ^)μ∼N(μ^,σ^)\mu \sim N(\hat\mu,\hat\sigma) σ〜| N(0 、σ^)|σ∼|N(0,σ^)|\sigma \sim |N(0,\hat\sigma)| λ 〜Γ (μ 、σ)λ∼Γ(μ,σ)\lambda \sim \Gamma(\mu,\sigma) ρ 〜Po i s s o n (λ )ρ∼Poisson(λ)\rho \sim Poisson(\lambda) どこμは、データが意味され、σは 1000年を掛けたデータの標準偏差です。μ^μ^\hat\muσ^σ^\hat\sigma ρρ\rhoμμ\muσσ\sigmaσσ\sigma たくさん質問があります このモデルはタスクに適していますか(モデルを作成する方法はいくつかありますか?)? 私は初心者の間違いをしましたか? モデルを簡略化できますか(私は単純なものを複雑にする傾向があります)? ρρ\rho フィッティングされたポアソン分布からいくつかのサンプルを描画して、サンプルを表示するにはどうすればよいですか? 5000メトロポリスのステップの後の事後は、次のようになります。 μμ\muσσ\sigmaρρ\rho より確率的なプログラミングを理解するのに役立つコメントやコメントに感謝します。試してみる価値のあるもっと古典的な例があるかもしれませんか? これが、PyMC3を使用してPythonで記述したコードです。データファイルはここにあります。 import matplotlib.pyplot as …
12 bayesian  pymc 

1
PyMC3でのベイジアンモデルの選択
私のデータでベイジアンモデルを実行するためにPyMC3を使用しています。 私はベイジアンモデリングに不慣れですが、このサイトのいくつかのブログ投稿、Wikipedia、およびQAによると、ベイズ係数とBIC基準を使用して、データを最もよく表すモデル(生成するモデル)を選択できるようにする有効なアプローチのようです私のデータ)。 ベイズ係数を計算するには、比較するモデルの相対的な尤度が必要です。少し混乱するかもしれませんが、可能性を得るには2つの方法があると思います(間違っている場合は修正してください)。 モデルが単純な場合の代数的方法:ウィキペディアのベイズ因子の例のページを参照 数値的な方法:これは、MCMCアルゴリズムでPyMC3を実行する方法です。 PyMC3で尤度にアクセスしてモデルを比較するにはどうすればよいですか?私model.logpは、ドキュメントによると、「対数確率密度関数」である方法を見つけました。それを使用して可能性を取得できますか? おまけの質問:2つのモデルを比較すると、両方の尤度の比率が計算されます。複数のモデルを比較したい場合はどうなりますか? PyMC3の具体的な例は非常に役立ちます。

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
PyMC初心者:適合モデルから実際にサンプリングする方法
私は非常に単純なモデルを試しています。精度がわかっていると想定し、平均を求めたいだけの場合に法線をフィッティングします。以下のコードは、正常に正しく適合しているようです。しかし、フィッティング後、モデルからサンプリングしたい、つまりdata変数に似た新しいデータを生成したい。trace("mean")平均変数のサンプルを取得するために使用できることを知っています。しかし、どうすればモデル自体から新しいサンプルを取得できますか? 私はドキュメント、例えばhttp://pymc-devs.github.io/pymc/database.html#accessing-sampled-dataを見てきました。鉱山災害などのかなりの数の例と、確率的プログラミングのノートブックからのいくつかも見てきましたが、これについては触れられていません。私(多かれ少なかれMCMCの初心者)は、フィットしたモデルからのサンプリングがポイントであると期待していました!何が欠けていますか? from pymc import * data = np.array([-1, 0, 4, 0, 2, -2, 1, 0, 0, 2, 1, -3, -1, 0, 0, 1, 0, 1]) mean = Uniform("mean", -4, 4) precision = 2.0**-2 obs = Normal("obs", mean, precision, value=data, observed=True) model = Model( {"mean": mean, "obs": obs}) mcmc = …
11 mcmc  pymc 

3
MCMCおよびPyMCによる2ガウス混合モデルの推論
問題 単純な2ガウス混合母集団のモデルパラメーターを近似します。ベイジアン手法をめぐる誇大宣伝を踏まえ、この問題についてベイジアン推論が従来のフィッティング手法よりも優れたツールであるかどうかを理解したいと思います。 これまでのところ、MCMCはこのおもちゃの例ではパフォーマンスが非常に低くなっていますが、おそらく見落としているだけかもしれません。コードを見てみましょう。 道具 私はpython(2.7)+ scipyスタック、lmfit 0.8およびPyMC 2.3を使用します。 分析を再現するためのノートはここにあります データを生成する 最初にデータを生成してみましょう: from scipy.stats import distributions # Sample parameters nsamples = 1000 mu1_true = 0.3 mu2_true = 0.55 sig1_true = 0.08 sig2_true = 0.12 a_true = 0.4 # Samples generation np.random.seed(3) # for repeatability s1 = distributions.norm.rvs(mu1_true, sig1_true, size=round(a_true*nsamples)) s2 = …

2
ノンパラメトリッククラスタリングのPyMC:ガウス混合のパラメーターを推定するディリクレプロセスがクラスター化に失敗する
問題のセットアップ 私がPyMCに適用したい最初のおもちゃの問題の1つは、ノンパラメトリッククラスタリングです。いくつかのデータを指定して、ガウス混合としてモデル化し、クラスターの数と各クラスターの平均と共分散を学習します。この方法について私が知っていることのほとんどは、2007年頃のマイケルジョーダンとイーワイテによるビデオ講義(スパースが大流行する前)と、Fonnesbeck博士とE. Chen博士のチュートリアル[fn1]、[ fn2]。しかし、問題はよく研究されており、信頼できる実装がいくつかあります[fn3]。 このおもちゃの問題では、1次元ガウスから10回の描画を生成し、から40回の描画を生成します。以下に見られるように、どのサンプルがどの混合成分からのものであるかを簡単に見分けられるように、ドローをシャッフルしませんでした。N(μ = 4 、σ = 2 )N(μ=0,σ=1)N(μ=0,σ=1)\mathcal{N}(\mu=0, \sigma=1)N(μ=4,σ=2)N(μ=4,σ=2)\mathcal{N}(\mu=4, \sigma=2) 各データサンプルをに対してモデル化しここで、はこの番目のデータポイントのクラスターを示します。。ここでは、使用される切り捨てられたディリクレプロセスの長さです。私にとって、です。iは= 1 、。。。、50 、Z iは I Z I ∈ [ 1 、。。。、N D P ] N D P N D P = 50yi∼N(μzi,σzi)yi∼N(μzi,σzi)y_i \sim \mathcal{N}(\mu_{z_i}, \sigma_{z_i})i=1,...,50i=1,...,50i=1,...,50ziziz_iiiizi∈[1,...,NDP]zi∈[1,...,NDP]z_i \in [1,...,N_{DP}]NDPNDPN_{DP}NDP=50NDP=50N_{DP}=50 ディリクレプロセスインフラストラクチャを拡張すると、各クラスターIDはカテゴリ確率変数からのドローであり、その確率質量関数はスティック破壊コンストラクトによって与えられます: with for a濃度パラメータ。スティックブレイキングは、最初にに依存する iidベータ分布ドローを取得することにより、合計が1になる -longベクトル構築します。[fn1]を参照してください。そして、データに無知であることを知らせたいので、[fn1]に従い、 0.3、100)と仮定します。、Z I〜C A …

2
PyMCの2つの正規分布の近似モデル
私はソフトウェアエンジニアなので、始める前に私を許さなければならないより多くの統計を学ぼうとしているので、これは深刻な新しい領域です... 私はPyMCを学び、いくつかの本当に(本当に)単純な例に取り組んできました。私が作業を開始できない(そして関連する例を見つけることができない)1つの問題は、2つの正規分布から生成されたデータにモデルを適合させることです。 1000個の値があるとします。500から発生Normal(mean=100, stddev=20)し、別の500から生成されましたNormal(mean=200, stddev=20)。 モデルをそれらに適合させたい場合、つまり、PyMCを使用して2つの平均と単一標準偏差を決定します。私はそれが... mean1 = Uniform('mean1', lower=0.0, upper=200.0) mean2 = Uniform('mean2', lower=0.0, upper=200.0) precision = Gamma('precision', alpha=0.1, beta=0.1) data = read_data_from_file_or_whatever() @deterministic(plot=False) def mean(m1=mean1, m2=mean2): # but what goes here? process = Normal('process', mu=mean, tau=precision, value=data, observed=True) つまり、生成プロセスは通常ですが、muは2つの値のいずれかです。私はちょうど値はから来ているかどうかの間で「決定」を表す方法を知らないm1かをm2。 多分私はこれをモデリングするために間違ったアプローチを完全に取っていますか?誰かが私に例を指摘できますか?私はバグとジャグを読むことができるので、何でも本当に大丈夫です。
10 modeling  python  pymc 

2
確率的プログラミングによるスイッチポイント検出(pymc)
私は現在、ハッカーの確率的プログラミングとベイジアン手法の「本」を読んでいます。私はいくつかの章を読み、最初の章について考えていました。pymcの最初の例は、テキストメッセージ内の魔女の検出で構成されています。この例では、スイッチポイントが発生していることを示すランダム変数が示されています。MCMCステップの後、事後分布 が与えられます。τττ\tauττ\tau まず、このグラフからわかることは、スイッチポイントが45日目に発生した確率はほぼ50%であるということです。スイッチポイントがない場合はどうなりますか?スイッチポイントがあると想定してそれを見つけようとするのではなく、実際にスイッチポイントがあるかどうかを検出したいと思います。 著者は、「スイッチポイントが発生したのか」という質問に「変化がなかった場合、または時間の経過とともに変化が​​緩やかだった場合、事後分布は より広がっていただろう」と回答しています。しかし、どのように適切な方法でこれに答えることができますか。たとえば、スイッチポイントが発生した確率は90%であり、45日目に発生した確率は50%です。ττ\tau モデルを変更する必要がありますか?または、これは現在のモデルで答えることができますか?

2
確率的プログラミングと「従来の」ML
私はPymcのgithubリポジトリを閲覧していて、このノートブックを見つけました。 変分推論:ベイジアンニューラルネットワーク 著者は、ベイジアン/確率的プログラミングの長所を称賛しますが、次に続けます: 残念ながら、分類や(非線形)回帰などの従来のML問題の場合、確率的プログラミングは、アンサンブル学習などのよりアルゴリズム的なアプローチ(ランダムフォレストや勾配ブースト回帰ツリーなど)に対して(精度とスケーラビリティに関して)2番目のフィドルを実行することがよくあります。 。 誰かが説明してください: このステートメントが一般的に当てはまる場合 このステートメントが真実である理由

1
「後部正中面」のプロット
この質問で部分的に説明したモデルをスタックオーバーフローで再現する一環として、事後分布のプロットを取得します。(空間)モデルは、一部の物件の販売価格を、物件が高価(1)であるか安価(0)であるかに応じて、ベルヌーイ分布として記述します。方程式では: yi∼Bernoulli(pi)yi∼Bernoulli(pi)y_{i} \sim \text{Bernoulli}(p_{i}) pi∼logit−1(b0+b1LivingArea/1000+b2Age+w(s))pi∼logit−1(b0+b1LivingArea/1000+b2Age+w(s))p_{i} \sim \text{logit}^{-1}(b_{0} + b_{1}\text{LivingArea}/1000 + b_{2}\text{Age} + w({\bf{s}})) w(s)∼MVN(0,Σ)w(s)∼MVN(0,Σ)w({\bf{s}}) \sim \text{MVN}({\bf{0}}, {\bf{\Sigma}}) どこ yiyiy_{i} バイナリの結果1または0です。 pipip_{i} 安かったり高かったりする確率です w(s)w(s)w({\bf{s}}) 空間確率変数です。 ss\bf{s} その位置を表します。それぞれのこれすべて i={1,...,70}i={1,...,70}i = \{1, ..., 70\} データセットには70のプロパティがあるためです。 ΣΣ\bf{\Sigma}データポイントの地理的位置に基づく共分散行列です。このモデルに興味がある場合は、ここにデータセットがあります。 取得したいプロットは、次の等高線プロットです。 この図は、「潜伏プロセスの後部正中面のイメージプロットとして説明されています。 w(s)w(s)w({\bf{s}})、バイナリ空間モデル」。本はこれも言います: 図5.8は、潜在の後方平均表面の等高線を重ねた画像プロットを示しています w(s)w(s)w({\bf{s}}) 処理する。 ただし、データセットには70組のポイントしかありません。等高線図を作成するには、推定する必要があると思いますw(s)w(s)w({\bf{s}})70 * 70ポイントで。だから、私の質問です:この後部正中面をどのように生成しますか?これまでのところ、(PyMCを使用して)関連するすべてのパラメーターの事後分布のサンプルがあり、予測できることがわかっています。y∗y∗y^*事後予測分布を使用して新しいポイントで。しかし、私は値を予測する方法がわかりませんw(s)w(s)w({\bf{s}}) 新しい時点で s∗s∗s^*。多分私は間違っていて、プロットは予測ではなく補間によって構築されました。 更新: まず、これはの事後分布の中央値です w(s)w(s)w({\bf{s}})プロパティがある各場所で。これは、MCMCトレースに基づいていますwww。 そして、これは動径基底関数を使用した補間(等高線図付き)です。 (コードに興味がある場合はお知らせください) ご覧のとおり、プロットには大きな違いがあります。いくつかの質問: …

1
ベータ分布での異常値の検出
私は値の大きなサンプルを持っていると言う[0,1][0,1][0,1]。基礎となるBeta(α,β)Beta(α,β)\text{Beta}(\alpha, \beta)分布を推定したいと思います。サンプルの大部分は、この想定されるBeta(α,β)Beta(α,β)\text{Beta}(\alpha, \beta)分布からのものですが、残りは、αα\alphaおよび推定で無視したい外れ値ですββ\beta。 これについて進める良い方法は何ですか? なる標準:Inliers={x∈[Q1−1.5IQR,Q3+1.5IQR]}Inliers={x∈[Q1−1.5IQR,Q3+1.5IQR]}\text{Inliers} = \left\{x \in [Q1 - 1.5\, \text{IQR}, Q3 + 1.5 \,\text{IQR}] \right\}箱ひげ図で使用される式は、悪い近似ですか? これを解決するためのより原則的な方法は何でしょうか?この種の問題でうまく機能する、αα\alphaと特定の事前分布はありますββ\betaか?

1
発生率の階層ベイズモデリング
Kevin Murphyの本は、古典的な階層ベイズ問題(元はで説明Johnson and Albert, 1999, p24)について説明しています。 都市のがん発生率を推定しようとしているとします。各都市では、個体数をサンプリングN Iとがん患者の数を測定xはI〜ビン(N I、θ I)、θ iは、市内の真の癌率です。NNNN私NiN_iバツ私〜ビン(N私、θ私)xi∼Bin(Ni,θi)x_i \sim \text{Bin}(N_i, \theta_i)θ私θi\theta_i 我々は推定したいデータの乏しい都市はデータが豊富な都市から統計的強度を借りて可能にしながらのを。θ私θi\theta_i そのためには、彼のモデルは、以下のように、最終的なモデルが見えるので、すべての都市が同じ前を共有するように:θ私〜ベータ(a 、b )θi∼Beta(a,b)\theta_i \sim \text{Beta}(a,b) p (D、θ 、η| N)= p (η)∏i = 1Nビン(x私| N私、θ私)ベータ(θ私| η)p(D,θ,η|N)=p(η)∏i=1NBin(xi|Ni,θi)Beta(θi|η)p(\mathcal{D}, \theta, \eta|N)=p(\eta)\prod\limits^N_{i=1}\text{Bin}(x_i|N_i, \theta_i)\text{Beta}(\theta_i|\eta) ここで、です。η=(a,b)η=(a,b)\eta = (a,b) このモデルについての重要な部分はもちろんである(I引用)、「その我々推論私たちは定数にそれをクランプした場合、以降、データからθが、私は条件付きで独立していること、そしてそこに意志ますそれらの間の情報の流れはありません。」η=(a,b)η=(a,b)\eta=(a,b)θiθi\theta_i 私はこれをモデル化しようとしていますPyMC、しかし限り、私は理解して、私はのための先行必要とB(私はこれがあると信じていたp (η )上記)。このモデルの前に何が良いでしょうか?aaabbbp(η)p(η)p(\eta) それが役立つ場合、私が今持っているコードは次のとおりです: bins = dict() ps = dict() for i in …

1
比率の違いに関する階層ベイズ分析
なぜ階層的なのか?:私はこの問題を調査してみましたが、私が理解しているところによると、これは「階層的な」問題です。なぜなら、あなたはその集団から直接観察するのではなく、集団からの観察について観察しているからです。リファレンス:http : //www.econ.umn.edu/~bajari/iosp07/rossi1.pdf なぜベイジアンなのか?:また、各セルに十分な観測値が割り当てられている「実験計画」には漸近/頻出解が存在する可能性があるため、ベイジアンとしてタグ付けしましたが、実際の目的では、実世界/非実験データセット(または最小のもの)はまばらに移入されています 集計データは多数ありますが、個々のセルが空白であるか、観測値が少ない場合があります。 抽象的モデル: Uを単位母集団とする。。。u NのそれぞれにAまたはBのいずれかの処理Tを適用でき、それぞれから1または0の別名の成功と失敗のiid観測を観測します。ましょうP I TのためのI ∈ { 1 ... Nは}オブジェクトから観察する確率であるI処置下Tの成功をもたらします。なお、P Iu1,u2,u3...uNu1,u2,u3...uN{u_1, u_2, u_3 ... u_N}TTTAAABBBpiTpiTp_{iT}i∈{1...N}i∈{1...N}i \in \{1...N\}iiiTTTpiApiAp_{iA}と相関している可能性があります。piBpiBp_{iB} 分析を実行可能にするために、(a)分布とp Bはそれぞれベータ分布などの特定の分布のファミリーのインスタンスであると想定し、(b)ハイパーパラメーターのいくつかの以前の分布を選択します。pApAp_ApBpBp_B モデルの例 マジック8ボールの大きなバッグを持っています。各8ボールを振ると、「はい」または「いいえ」が表示されます。また、ボールを上下逆さまにしたり、上下逆さまに振ったりすることもできます(Magic 8 Ballが上下逆さまに動作すると仮定します...)。ボールの向きが完全に「はい」か「いいえ」で結果の確率を変更することがあり(つまり、最初にあなたがいることを全く信じていないと相関しているのp のi Bを)。piApiAp_{iA}piBpiBp_{iB} 質問: 誰かが集団から無作為にのユニットをサンプリングし、各ユニットについて、処理Aの下で任意の数の観測値と処理Bの下で任意の数の観測値を取得して記録しました。(実際には、私たちのデータセットでは、ほとんどのユニットは1つの処理でのみ観測されます)nnnAAABBB このデータから、次の質問に答える必要があります。 母集団からランダムに新しい単位を取得する場合、p x Aとp x Bの同時事後分布を(分析的または確率的に)どうやって計算できますか?(主に、予想される比率の差を決定できるようにするため、Δ = p x A − p x B)uxuxu_xpxApxAp_{xA}pxBpxBp_{xB}Δ=pxA−pxBΔ=pxA−pxB\Delta=p_{xA}-p_{xB} 特定のユニットの、Y ∈ { 1 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.