Questions tagged «pymc»

PyMC是一个Python库,用于使用MCMC执行贝叶斯推理。它是等效于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进行贝叶斯网络推断(初学者的困惑)
我目前正在Daphne Koller在Coursera上参加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)?我想学习的一般想法是如何使用PyMC学习此BN,以便可以查询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) ρ∼Poisson(λ)ρ∼Poisson(λ)\rho \sim Poisson(\lambda) 其中μ^μ^\hat\mu是数据平均值,σ^σ^\hat\sigma是数据标准偏差乘以1000。 我使用泊松分布将预期的等待时间建模为ρρ\rho。此分布的速率参数是使用Gamma分布建模的,因为它是与Poisson分布的共轭分布。超先验μμ\mu和σσ\sigma分别使用正态分布和半正态分布建模。使标准偏差σσ\sigma尽可能宽,以使其尽可能不被置信。 我有很多问题 这个模型对任务是否合理(几种可能的建模方法?)? 我有没有犯任何新手错误? 是否可以简化模型(我倾向于使简单的事情复杂化)? 如何验证rate参数()的后验是否确实适合数据?ρρ\rho 如何从拟合的泊松分布中抽取一些样本以查看样本? 在经过5000个Metropolis步骤后,后继者看起来像这样: 我也可以发布源代码。在模型拟合阶段,我使用NUTS 执行参数和的步骤。然后在第二步中对速率参数进行Metropolis操作。最后,我使用内置工具绘制轨迹。μμ\muσσ\sigmaρρ\rho 对于任何能够使我掌握更多概率编程的言论和评论,我将不胜感激。可能还有更多值得尝试的经典示例吗? 这是我使用PyMC3在Python中编写的代码。数据文件可以在这里找到。 import matplotlib.pyplot as plt import pandas as pd import numpy as np import pymc3 from scipy import …
12 bayesian  pymc 

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 = …
12 mcmc  pymc 

1
PyMC3中的贝叶斯模型选择
我正在使用PyMC3在数据上运行贝叶斯模型。 我是贝叶斯建模的新手,但是根据一些博客文章,该站点的Wikipedia和QA所述,使用贝叶斯因子和BIC准则来选择最能代表我的数据的模型似乎是一种有效的方法(我的数据)。 要计算贝叶斯因子,我需要要比较的模型的相对可能性。这可能会让我感到困惑,但是我认为有两种方法可以获取可能性(如果我错了,请纠正我): 模型简单时的代数方式:请参阅Wikipedia示例贝叶斯因子页面 数字方式:这就是PyMC3与MCMC算法的区别 如何获得可能性并比较PyMC3中的模型?我发现model.logp根据doc是“对数概率密度函数”的方法。我可以用它来获得可能性吗? 奖励问题:比较两个模型时,会计算两个似然比。如果要比较多个模型会怎样? 一个具体的PyMC3示例将非常有帮助!

2
为什么对MCMC采样器有反对使用Jeffreys或基于熵的先验的建议?
Stan的开发人员在其Wiki页面上指出: 我们不喜欢的一些原理:不变性,杰弗里斯,熵 相反,我看到了很多正态分布建议。到目前为止,我使用了不依赖于采样贝叶斯方法,并且是那种高兴地明白了为什么是二项式可能性的不错选择。θ 〜贝塔( α = 12,β= 12)θ〜贝塔(α=1个2,β=1个2)\theta \sim \text{Beta}\left(\alpha=\frac{1}{2},\beta=\frac{1}{2}\right)
11 bayesian  mcmc  prior  pymc  stan 

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:估计高斯混合参数的Dirichlet过程无法聚类
问题设定 我想将PyMC应用到的第一个玩具问题之一是非参数聚类:给定一些数据,将其建模为高斯混合,并学习聚类的数目以及每个聚类的均值和协方差。我对这种方法的大部分了解来自迈克尔·乔丹(Michael Jordan)和Yee Whye Teh(大约在2007年之前)的视频讲座(在稀疏成为流行之前),以及最近两天阅读Fonnesbeck博士和E. Chen的教程[fn1],[ fn2]。但是问题已得到充分研究,并且具有一些可靠的实现方式[fn3]。 在这个玩具问题中,我从一维高斯生成十次抽奖,并从。正如您在下面看到的那样,我没有对抽奖进行混洗,以便于分辨哪个样品来自哪个混合成分。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) 我对每个数据样本进行,,其中表示该第个数据点的聚类:。是使用的截短Dirichlet进程的长度:对我来说,。我= 1 ,。。。,50 ž 我我ž 我 ∈ [ 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 扩展Dirichlet流程基础结构,每个集群ID都是来自分类随机变量的图形,其随机变量的质量函数由结构给出:带有的a浓度参数。折断构造通过首先获得依赖于 Beta分布的 iid Beta分布绘制,构造必须为1 的长向量,请参见[fn1]。并且由于我想通过数据告知我对了解,因此我遵循[fn1]并假定 0.3,100。ž 我〜Ç 一吨ë …

2
PyMC中两个正态分布的拟合模型
由于我是一名试图学习更多统计信息的软件工程师,因此我什至在开始之前就必须原谅我,所以这是一个严重的问题。 我一直在学习PyMC,并通过一些(非常)简单的示例进行研究。我无法使用(并且无法找到任何相关示例)的一个问题是将模型拟合到由两个正态分布生成的数据。 假设我有1000个值;从a生成Normal(mean=100, stddev=20)500个,从a生成另一个500个Normal(mean=200, stddev=20)。 如果我想对它们拟合模型,即使用PyMC确定两个均值和单个标准差。我知道这有点像... 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是两个值之一。我只是不知道如何表示值来自m1还是之间的“决定” m2。 也许我只是完全采用了错误的方法来对此建模?谁能给我指出一个例子?我可以读BUGS和JAGS,所以真的没事。
10 modeling  python  pymc 

2
通过概率编程(pymc)进行开关点检测
我目前正在阅读《概率编程和贝叶斯黑客方法》一书。我已经阅读了几章,并且在第一章中进行思考,其中pymc的第一个示例包括检测文本消息中的巫婆点。在该示例中,用于指示切换点何时发生的随机变量用ττ\tau。MCMC步骤后, ττ\tau 给出: 首先,从该图可以了解到,在第45天发生转换点的可能性接近50%。如果没有转换点,该怎么办?我想确定是否确实存在一个切换点,而不是假设有一个切换点然后尝试找到它。 作者通过“没有发生变化,或者随着时间的推移变化是逐渐变化的,……的后验分布”来回答“是否发生了切换点”问题。 ττ\tau 本来可以散布的。”但是您如何以可预测性来回答这个问题,例如,发生切换点的机率是90%,而在第45天发生机率的机率是50%。 是否需要更改型号?还是可以用当前模型来回答?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.