问题标签 [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中定义了它
我也希望它满足以下约束
但是当我运行我的 MCMC 代码时发生的事情MASS
变化非常缓慢,而我希望它在 和 之间以这三个数量级更快地1e+13
变化1e16
。我如何定义我的先验以便在参数空间中进行相当大的更改?
python - 如何在 PyMC3 中定义一个模型,其中一个参数在多个条件下限制为相同的值
我想写一个模型,如下所示。主要思想是我有几个条件(或治疗),所有参数都是独立估计每个条件的,除了对所有条件都相同的 kappa 参数。
当我运行模型时,我收到以下消息。
编辑按照 chris-fonnesbeck 的回答,我尝试了以下方法:
我得到错误:
UserWarning 与起点的优化有关,如果我不使用 pm.find_MAP(),则将其删除。其余的错误仍然存在。
python - statsmodels 与 pymc 中的对数似然
我正在尝试在 Python 中完成我的第一个最大似然估计。其中一个步骤需要我计算模型参数的可能性。我发现了一些可以在这里总结的示例数据:
如果我通过 statsmodels.api 运行一个简单的模型。我从 results.summary() 中得到 -14.601 的值。
查看 OLS 的源代码,这似乎是对数似然的基本计算
当我尝试用 PyMC 实现它时,我得到了不同的结果。这可能是我对 loc 和 scale 的一些错误计算。
在这里,我得到了 -135.29 的值。我觉得我一定是误算了我的 scale 和 loc 值,但这可能是我的实现中的一些其他错误。除了正常的对数似然之外,也许 OLS 正在使用其他一些可能性?一般来说,我对 statsmodels、PyMC 和 MLE 还是很陌生。有谁知道我在这里做错了什么?
pymc - 多级模型中的奇数相关后验轨迹图
我正在用一个简单的多级模型尝试 PyMC3。当同时使用假数据和真实数据时,随机效应分布的轨迹相互移动(见下图),并且似乎是同一轨迹的偏移量。这是 NUTS 的预期伪影还是表明我的模型存在问题?
这是真实数据的跟踪图:
这是模型的IPtyhon 笔记本和用于创建假数据的函数。这是相应的要点。
python - 使用 pymc3 定义随机和确定性变量
我正在尝试使用 pymc3 编写我自己的变量stochastic
和deterministic
变量,但旧的pymc2.3已发布配方解释了我们如何参数化变量不再有效。例如,我尝试使用这种方法,但失败了:direct
我收到以下错误消息:
我想知道如何在pymc3
不使用装饰器和可用pymc
分布的情况下定义自己的先验或可能性?
pymc - PyMC 3 中的狄利克雷过程
我想实现 在 PyMC 3 中为贝叶斯半参数模型实现 Dirichlet 过程(来源:here )中引用的 Dirichlet 过程示例。
pymc.deterministic
在示例中,使用装饰器计算断棒概率:
您将如何在使用 Theano 进行梯度计算的 PyMC 3 中实现这一点?
编辑:我使用以下方法尝试了以下解决方案theano.scan
:
可悲的是,这真的很慢,并且没有获得合成数据的原始参数。
有没有更好的解决方案,这是否正确?
pymc - 折叠采样/单个 Metropolis-Hastings 步骤
我的模型有三个参数,比如theta_1、theta_2和nu。
我想从后部采样theta_1,theta_2 , nu边缘化(可以分析完成),即从p(theta_1, theta_2 | D)而不是p(theta_1, theta_2, nu | D)其中D是数据。之后,我想根据theta_1和theta_2的新值重新采样nu。因此,一次采样扫描将包括以下步骤
- 从p(theta_1, theta_2 | D)绘制theta_1和theta_2(将nu边缘化)
- 从p(nu | theta_1, theta_2, D)绘制nu(nu被边缘化)
换句话说,一个折叠的 Gibbs 采样器。
我将如何使用 PyMC3 来解决这个问题?我认为我应该实现一个单独的阶跃函数,但我不确定如何在这里构建可能性。在 PyMC3 中实现阶跃函数时,如何访问模型规范?
pymc - 定义回归模型时使用大量内存
运行泊松回归模型时出现内存问题。加载数据并为模型做好准备后,python 使用了大约 650 MB 的内存。一旦我创建模型,
内存使用量高达 3 GB。只有 350 个 8 位整数的数据点,所以我不知道什么在使用这么多的内存。
在玩了一会儿之后,我发现向模型添加任何东西都会使其内存达到 3 GB,甚至像这样简单的东西
关于正在发生的事情或我如何看得更深的任何建议?我正在使用新的 iMac、Python 2.7 和最新版本的 PyMC3。谢谢。
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
theano - PyMC3 狄利克雷分布
我在 pymc3 中实现了一个线性回归模型,其中未知的权重向量被限制为概率质量函数,因此被建模为 Dirichlet 分布,如下面的代码所示:
通过运行对后验进行采样后:
我分析了狄利克雷变量的踪迹,发现它们的值不相加(下面是一个例子):
我不熟悉 theano 变量,并且发现很难探索 Dirichlet RV 在 pymc3 中的表达方式......我做错了什么,还是应该将跟踪中返回的值归一化以便它们总和为一个?
快速更新
看起来该函数pm.find_MAP()
采用了一种梯度下降优化。这没有考虑到表示从狄利克雷分布中抽取的向量是概率质量函数(其值应为正且它们的总和应为 1)这一事实所产生的约束。这种约束显然也没有在算法的采样阶段强制执行,并且随着似然分布的精度向零漂移,会导致收敛问题。