问题标签 [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.
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 采样器了,因为它需要渐变。
大都会似乎没有融合。
在这种情况下,我应该使用哪种步骤方法?
bayesian - 使用 pymc3 拟合学生的 t 分布
不确定我是在做一些愚蠢的事情还是 pymc3 有错误,但是尝试将 T 分布拟合到正常值我得到了自由度数(0.18 到 0.25,我期望值很高,至少 4-5)。当然,如果我尝试具有合理数量的自由度(例如 3 或 5)的 T 分布,我会得到同样的错误。
你能建议一些修复(改变先验,抽样方法)吗?
pymc - 带有 pymc 的参数向量的非线性回归
我目前使用 scipy.optimize.minimize 和 scipy.optimize.leastsq 对我的数据集执行非线性回归。我想使用 PyMC(3) 来研究拟合过程中涉及的所有参数的后验。我在 SO 上遇到了这个先前的答案。
这是一个很好的例子,我看到的大多数其他例子都是线性回归。但是,该示例并不完全适合我的目的。我的模型具有可变数量的参数,我将拟合其中的一个子集。该子集通常在 1 到 20 个参数的范围内,但有时更多。使用 scipy 最小化器,这些不同的参数以 1D np.ndarray,p 的形式传递给成本函数,例如
在上面给出的链接中,@pymc.deterministic 装饰的高斯函数具有关键字参数。这对我来说是不切实际的,因为同一个代码块需要处理不同(和相当大)数量的参数。有没有办法提供参数向量?我还必须为每个参数提供一个先验列表。但是,我有每个参数 [(min, max)...] 的下限和上限列表,所以这不是问题。
pymc - pymc3中的狄利克雷与二项式
我在使用 pymc3 从 Dirichlet/多项式分布中采样时遇到问题。我尝试创建一个简单的测试用例,使用 n=2 的 Dirichlet/Multinomial 重新创建 Beta/Binomial,但我无法让它工作。
下面我有一些适用于二项式但不适用于多项式的代码。一个明显的区别是多项式模型受到更多约束:即开始时,二项式模型中的评分设置为 10,而多项式模型中的评分设置为 [10,10]。pymc3 Dirichlet 代码确实说“只有第一个k-1
元素x
是预期的”,但在我的代码中似乎只有形状 2 的数组有效。
输出显示num_friends
并rating
在二项式情况下被采样,但不是在多项式情况下。friends_ratings
正在两者中进行采样。谢谢!
哦,还会Dirichlet('d', np.array([1,1]))
因“浮点错误 8”而崩溃。仅当传入两个值为 1 的整数时,它似乎才会失败。np.array([1.,1.])
有效。
输出:
matplotlib - pymc3 - 如何将 HDI 添加到 traceplot?
是否有内置方法可以将最高密度间隔添加到 pymc3 中的跟踪图?
我想直接在我的跟踪图中显示 HDI,最好是带有标签。基本上,我想制作一个后验分布图,类似于“做贝叶斯数据分析”一书中的那些:
我不想重新发明可能已经在 pymc3 中实现的东西。
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)
pymc - 如何在 PyMC3 中对多个链进行采样
我正在尝试在 PyMC3 中对多个链进行采样。在 PyMC2 我会做这样的事情:
我应该如何在 PyMC3 中做同样的事情?我看到'sample'方法中有一个'njobs'参数,但是当我为它设置一个值时它会抛出一个错误。我想使用采样链来获得“pymc.gelman_rubin”输出。
pymc - pymc3 中的自定义可能性
如何在 PyMC3 中定义自定义可能性?在 PyMC2 中,我可以使用@pymc.potential
. 我尝试pymc.Potential
在 PyMC3 中使用,但是,布尔运算似乎无法应用于参数(当我这样做时出现这样的错误)。例如,以下代码不起作用:
我不可能将可能性内的所有比较都更改为 Theano 语法(即 theano.tensor.{lt,le,eq,neq,gt,ge})。无论如何要使用定义类似于 PyMC2 的似然函数吗?
pymc - 在 PyMC3 中使用复似然
我正在尝试使用具有复杂似然函数的 PyMC3:
第一个问题:这可能吗?
这是我使用Thomas Wiecki 的帖子作为指南的尝试:
这会产生以下关于 y_est 表达式的消息:
TypeError: ('Bad input argument to theano function with name ":42" at index 0(0-based)', '期望一个类似数组的对象,但找到了一个变量:也许你正试图在一个 (可能共享)变量而不是数字数组?')
我已经克服了各种其他障碍才能走到这一步,这就是我卡住的地方。那么,如果我的第一个问题的答案是“是”,那么我是否走在正确的轨道上?任何指导都会有所帮助!
注意这是我发现的一个类似问题,还有另一个。
免责声明:我对此很陌生。我之前唯一的经验是成功重现 Thomas 帖子中的线性回归示例。我还成功运行了 Theano 测试套件,所以我知道它可以工作。