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

python - 如何在 PyMC 中定义通用确定性函数

在我的模型中,我需要使用复杂的 python 函数从一组父变量中获取确定性变量的值。

有可能这样做吗?

以下是一个 pyMC3 代码,它显示了我在简化情况下尝试做的事情。

当我运行此代码时,在 y_hat 阶段出现错误,因为int()函数内部的FindFromGrid(x,w,z)函数需要整数而不是 FreeRV。

从预先计算的网格中查找y_hat很重要,因为我的 y_hat 真实模型没有要表达的分析形式。

我之前曾尝试使用 OpenBUGS,但在这里我发现在 OpenBUGS 中无法做到这一点。PyMC 有可能吗?

更新

基于 pyMC github 页面中的示例,我发现我需要将以下装饰器添加到我的FindFromGrid(x,w,z)函数中。

这似乎解决了上述问题。但我不能再使用 NUTS 采样器了,因为它需要渐变。

大都会似乎没有融合。

在这种情况下,我应该使用哪种步骤方法?

0 投票
1 回答
1188 浏览

bayesian - 使用 pymc3 拟合学生的 t 分布

不确定我是在做一些愚蠢的事情还是 pymc3 有错误,但是尝试将 T 分布拟合到正常值我得到了自由度数(0.18 到 0.25,我期望值很高,至少 4-5)。当然,如果我尝试具有合理数量的自由度(例如 3 或 5)的 T 分布,我会得到同样的错误。

你能建议一些修复(改变先验,抽样方法)吗?

0 投票
3 回答
936 浏览

pymc - 带有 pymc 的参数向量的非线性回归

我目前使用 scipy.optimize.minimize 和 scipy.optimize.leastsq 对我的数据集执行非线性回归。我想使用 PyMC(3) 来研究拟合过程中涉及的所有参数的后验。我在 SO 上遇到了这个先前的答案。

这是一个很好的例子,我看到的大多数其他例子都是线性回归。但是,该示例并不完全适合我的目的。我的模型具有可变数量的参数,我将拟合其中的一个子集。该子集通常在 1 到 20 个参数的范围内,但有时更多。使用 scipy 最小化器,这些不同的参数以 1D np.ndarray,p 的形式传递给成本函数,例如

在上面给出的链接中,@pymc.deterministic 装饰的高斯函数具有关键字参数。这对我来说是不切实际的,因为同一个代码块需要处理不同(和相当大)数量的参数。有没有办法提供参数向量?我还必须为每个参数提供一个先验列表。但是,我有每个参数 [(min, max)...] 的下限和上限列表,所以这不是问题。

0 投票
1 回答
1027 浏览

pymc - pymc3中的狄利克雷与二项式

我在使用 pymc3 从 Dirichlet/多项式分布中采样时遇到问题。我尝试创建一个简单的测试用例,使用 n=2 的 Dirichlet/Multinomial 重新创建 Beta/Binomial,但我无法让它工作。

下面我有一些适用于二项式但不适用于多项式的代码。一个明显的区别是多项式模型受到更多约束:即开始时,二项式模型中的评分设置为 10,而多项式模型中的评分设置为 [10,10]。pymc3 Dirichlet 代码确实说“只有第一个k-1元素x是预期的”,但在我的代码中似乎只有形状 2 的数组有效。

输出显示num_friendsrating在二项式情况下被采样,但不是在多项式情况下。friends_ratings正在两者中进行采样。谢谢!

哦,还会Dirichlet('d', np.array([1,1]))因“浮点错误 8”而崩溃。仅当传入两个值为 1 的整数时,它似乎才会失败。np.array([1.,1.])有效。

输出:

0 投票
1 回答
1225 浏览

matplotlib - pymc3 - 如何将 HDI 添加到 traceplot?

是否有内置方法可以将最高密度间隔添加到 pymc3 中的跟踪图?

我想直接在我的跟踪图中显示 HDI,最好是带有标签。基本上,我想制作一个后验分布图,类似于“做贝叶斯数据分析”一书中的那些: 在此处输入图像描述

我不想重新发明可能已经在 pymc3 中实现的东西。

0 投票
1 回答
1272 浏览

pymc - pymc3:njobs>1 与 GPU 的并行计算

我正在尝试通过并行化加速 pymc3 采样,但我只看到了适度的好处。

我能够在 i7 MacBook Pro 上将总运行时间从 25 分钟 (njobs=1) 减少到 13 分钟 (njobs=6)。由于 pymc 实际开始采样大约需要 4 分钟,因此增加幅度相对较小。

问题是 - 有没有人成功地将 GPU 与 pymc3 一起使用,对于需要 6-8 分钟采样的模型,我可以获得多少好处?(我的 MacBook 有 nvidia GT 750M 2Gb)

0 投票
2 回答
2975 浏览

pymc - 如何在 PyMC3 中对多个链进行采样

我正在尝试在 PyMC3 中对多个链进行采样。在 PyMC2 我会做这样的事情:

我应该如何在 PyMC3 中做同样的事情?我看到'sample'方法中有一个'njobs'参数,但是当我为它设置一个值时它会抛出一个错误。我想使用采样链来获得“pymc.gelman_rubin”输出。

0 投票
1 回答
4034 浏览

pymc - pymc3 中的自定义可能性

如何在 PyMC3 中定义自定义可能性?在 PyMC2 中,我可以使用@pymc.potential. 我尝试pymc.Potential在 PyMC3 中使用,但是,布尔运算似乎无法应用于参数(当我这样做时出现这样的错误)例如,以下代码不起作用:

我不可能将可能性内的所有比较都更改为 Theano 语法(即 theano.tensor.{lt,le,eq,neq,gt,ge})。无论如何要使用定义类似于 PyMC2 的似然函数吗?

0 投票
1 回答
1577 浏览

linear-regression - 使用 PyMC3 的贝叶斯套索

我正在尝试在 PyMC3 上重现本教程的结果(请参阅 LASSO 回归)。正如对此 reddit线程所评论的那样,前两个系数的混合并不好,因为变量是相关的。

我尝试在 PyMC3 中实现它,但在使用哈密顿采样器时它没有按预期工作。我只能让它与 Metropolis 采样器一起工作,它可以达到与 PyMC2 相同的结果。

我不知道这是否与拉普拉斯算子达到峰值(0 处的不连续导数)这一事实有关,但它与高斯先验非常吻合。我尝试使用或不使用 MAP 初始化,结果始终相同。

这是我的代码:

这是我得到的错误:

我做错了什么还是 NUTS 采样器不应该在这样的情况下工作?

0 投票
1 回答
1127 浏览

pymc - 在 PyMC3 中使用复似然

我正在尝试使用具有复杂似然函数的 PyMC3:

第一个问题:这可能吗?

这是我使用Thomas Wiecki 的帖子作为指南的尝试:

这会产生以下关于 y_est 表达式的消息:

TypeError: ('Bad input argument to theano function with name ":42" at index 0(0-based)', '期望一个类似数组的对象,但找到了一个变量:也许你正试图在一个 (可能共享)变量而不是数字数组?')

我已经克服了各种其他障碍才能走到这一步,这就是我卡住的地方。那么,如果我的第一个问题的答案是“是”,那么我是否走在正确的轨道上?任何指导都会有所帮助!

注意这是我发现的一个类似问题,还有另一个

免责声明:我对此很陌生。我之前唯一的经验是成功重现 Thomas 帖子中的线性回归示例。我还成功运行了 Theano 测试套件,所以我知道它可以工作。