问题标签 [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 回答
74 浏览

python - 在参数空间中定义具有跳跃数量级的指数先验

我想为参数定义一个指数先验,如下所示

在此处输入图像描述

因此我在pymc中定义了它

我也希望它满足以下约束

在此处输入图像描述

但是当我运行我的 MCMC 代码时发生的事情MASS变化非常缓慢,而我希望它在 和 之间以这三个数量级更快地1e+13变化1e16。我如何定义我的先验以便在参数空间中进行相当大的更改?

0 投票
2 回答
1271 浏览

python - 如何在 PyMC3 中定义一个模型,其中一个参数在多个条件下限制为相同的值

我想写一个模型,如下所示。主要思想是我有几个条件(或治疗),所有参数都是独立估计每个条件的,除了对所有条件都相同的 kappa 参数。

当我运行模型时,我收到以下消息。

编辑按照 chris-fonnesbeck 的回答,我尝试了以下方法:

我得到错误:

UserWarning 与起点的优化有关,如果我不使用 pm.find_MAP(),则将其删除。其余的错误仍然存​​在。

0 投票
1 回答
2576 浏览

python - statsmodels 与 pymc 中的对数似然

我正在尝试在 Python 中完成我的第一个最大似然估计。其中一个步骤需要我计算模型参数的可能性。我发现了一些可以在这里总结的示例数据:

如果我通过 statsmodels.api 运行一个简单的模型。我从 results.summary() 中得到 -14.601 的值。

查看 OLS 的源代码,这似乎是对数似然的基本计算

当我尝试用 PyMC 实现它时,我得到了不同的结果。这可能是我对 loc 和 scale 的一些错误计算。

在这里,我得到了 -135.29 的值。我觉得我一定是误算了我的 scale 和 loc 值,但这可能是我的实现中的一些其他错误。除了正常的对数似然之外,也许 OLS 正在使用其他一些可能性?一般来说,我对 statsmodels、PyMC 和 MLE 还是很陌生。有谁知道我在这里做错了什么?

0 投票
1 回答
80 浏览

pymc - 多级模型中的奇数相关后验轨迹图

我正在用一个简单的多级模型尝试 PyMC3。当同时使用假数据和真实数据时,随机效应分布的轨迹相互移动(见下图),并且似乎是同一轨迹的偏移量。这是 NUTS 的预期伪影还是表明我的模型存在问题?

这是真实数据的跟踪图:

轨迹图

这是模型的IPtyhon 笔记本和用于创建假数据的函数。这是相应的要点

0 投票
1 回答
2568 浏览

python - 使用 pymc3 定义随机和确定性变量

我正在尝试使用 pymc3 编写我自己的变量stochasticdeterministic变量,但旧的pymc2.3已发布配方解释了我们如何参数化变量不再有效。例如,我尝试使用这种方法,但失败了:direct

我收到以下错误消息:

我想知道如何在pymc3不使用装饰器和可用pymc分布的情况下定义自己的先验或可能性?

0 投票
1 回答
960 浏览

pymc - PyMC 3 中的狄利克雷过程

我想实现 在 PyMC 3 中为贝叶斯半参数模型实现 Dirichlet 过程(来源:here )中引用的 Dirichlet 过程示例。

pymc.deterministic 在示例中,使用装饰器计算断棒概率:

您将如何在使用 Theano 进行梯度计算的 PyMC 3 中实现这一点?

编辑:我使用以下方法尝试了以下解决方案theano.scan

可悲的是,这真的很慢,并且没有获得合成数据的原始参数。

有没有更好的解决方案,这是否正确?

0 投票
1 回答
465 浏览

pymc - 折叠采样/单个 Metropolis-Hastings 步骤

我的模型有三个参数,比如theta_1theta_2nu

我想从后部采样theta_1theta_2 , nu边缘化(可以分析完成),即从p(theta_1, theta_2 | D)而不是p(theta_1, theta_2, nu | D)其中D是数据。之后,我想根据theta_1theta_2的新值重新采样nu。因此,一次采样扫描将包括以下步骤

  1. p(theta_1, theta_2 | D)绘制theta_1theta_2(将nu边缘化)
  2. p(nu | theta_1, theta_2, D)绘制nunu被边缘化)

换句话说,一个折叠的 Gibbs 采样器。

我将如何使用 PyMC3 来解决这个问题?我认为我应该实现一个单独的阶跃函数,但我不确定如何在这里构建可能性。在 PyMC3 中实现阶跃函数时,如何访问模型规范?

0 投票
1 回答
619 浏览

pymc - 定义回归模型时使用大量内存

运行泊松回归模型时出现内存问题。加载数据并为模型做好准备后,python 使用了大约 650 MB 的内存。一旦我创建模型,

内存使用量高达 3 GB。只有 350 个 8 位整数的数据点,所以我不知道什么在使用这么多的内存。

在玩了一会儿之后,我发现向模型添加任何东西都会使其内存达到 3 GB,甚至像这样简单的东西

关于正在发生的事情或我如何看得更深的任何建议?我正在使用新的 iMac、Python 2.7 和最新版本的 PyMC3。谢谢。

0 投票
1 回答
2131 浏览

pymc - 多项逻辑回归 - pymc3

我已经开始尝试 pymc3 并且需要实现多项逻辑回归模型。我研究了 twiecki 的教程,并且了解他对分层回归模型的实现(请参阅https://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/),以及一些基本示例pymc3 中的二元逻辑回归。我还没有看到对多项逻辑回归的任何扩展。使用 pymc3 的 GLM 是否对此提供支持?或者如何在不使用 GLM 的情况下实现这一点?这是我尝试解决问题的 iPython 笔记本的链接,尽管我知道我在这里遗漏了一些重要的东西:http: //nbviewer.ipython.org/github/mvictor212/pymc-multinom-logit/blob/master/ MultinomialLogisticRegression%20-%20Radon%20Level.ipynb

0 投票
0 回答
535 浏览

theano - PyMC3 狄利克雷分布

我在 pymc3 中实现了一个线性回归模型,其中未知的权重向量被限制为概率质量函数,因此被建模为 Dirichlet 分布,如下面的代码所示:

通过运行对后验进行采样后:

我分析了狄利克雷变量的踪迹,发现它们的值不相加(下面是一个例子):

我不熟悉 theano 变量,并且发现很难探索 Dirichlet RV 在 pymc3 中的表达方式......我做错了什么,还是应该将跟踪中返回的值归一化以便它们总和为一个?

快速更新 看起来该函数pm.find_MAP()采用了一种梯度下降优化。这没有考虑到表示从狄利克雷分布中抽取的向量是概率质量函数(其值应为正且它们的总和应为 1)这一事实所产生的约束。这种约束显然也没有在算法的采样阶段强制执行,并且随着似然分布的精度向零漂移,会导致收敛问题。