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

python - 使用 PYMC3 进行回归

我在这里发布了一个 IPython 笔记本http://nbviewer.ipython.org/gist/dartdog/9008026

我通过标准的 Statsmodels OLS 工作,然后通过 Pandas 提供的数据与 PYMC3 类似,顺便说一句,这部分工作得很好。

我看不到如何从 PYMC3 中获取更多标准参数?这些示例似乎只是使用 OLS 来绘制基本回归线。看来PYMC3模型数据应该可以给出回归线的参数了吧?除了可能的痕迹,即最高概率​​线是什么?

欢迎对 Alpha、beta 和 sigma 的解释进行任何进一步的解释!

另外如何使用 PYMC3 模型来估计 y 的未来值给定一个新的 x 即预测具有一定的概率?

最后,PYMC3 有一个新的 GLM 包装器,我尝试过它似乎搞砸了?(不过很可能是我)

0 投票
1 回答
577 浏览

python - 调试 pymc 概率计算

我试图通过复制此处给出的混合高斯示例来模拟指数混合。代码如下。我知道这里的推理有一些时髦的方面,但我的问题更多是关于如何在这样的模型中调试计算。

这个想法是它是三个指数的混合,比例参数取自 Gamma 分配给scales. 但是,在ElemwiseCategoricalStep. 通过查看 ,您可以看到指数分量的观测值分配最初是不同的initial_assignments,并且您可以看到所有观测值都分配给所有交互上的第零分量,因为它set(tr['exp'].flatten())仅包含 0。

p我认为这是因为在表达式array([logp(v * self.sh) for v in self.values])中分配给的所有值ElemwiseCategoricalStep.astep都是负无穷大。我想知道为什么会这样以及如何纠正它,但更重要的是,我想知道可以使用哪些工具来调试这种事情。有什么办法让我逐步计算,logp(v * self.sh)看看结果是如何确定的?如果我尝试使用 pdb 来执行此操作,我想我会在outputs = self.fn()in受到阻碍theano.compile.function_module.Function.__call__,我想我无法进入,因为它是一个本机函数。

即使知道如何为给定的一组模型参数计算 pdf 也是一个有用的开始。

0 投票
3 回答
1859 浏览

python - 将 pyMC2 贝叶斯 A/B 测试示例移植到 pyMC3

我正在努力学习 pyMC 3 并且遇到了一些麻烦。由于 pyMC3 的教程有限,我正在使用Bayesian Methods for Hackers。我试图在贝叶斯 A/B 测试示例中将 pyMC 2 代码移植到 pyMC 3,但没有成功。据我所知,该模型根本没有考虑到观察结果。

我不得不对示例进行一些更改,因为 pyMC 3 完全不同,所以应该如下所示: import pymc as pm

相反看起来像:

为冗长的帖子道歉,但在我的改编中,有一些小的变化,例如手动生成观察结果,因为 pm.rbernoulli 不再存在。我也不确定是否应该在运行跟踪之前找到开始。我应该如何更改我的实现以正确运行?

0 投票
1 回答
496 浏览

pymc - PyMC 3 中的确定性变量和 Fortran Scipy 函数

我正在尝试构建一个简单的 PyMC 3 模型,在该模型中,我估计潜在二元高斯密度中的两个切点和一个相关参数,为(多项式)计数向量产生四个预测概率。(我希望这最终会成为一个更大模型的一部分,在这个模型中,这些参数和其他参数是针对许多潜在的多元高斯密度进行估计的。)

因此,我想将切点 cx 和 cy 建模为正常随机变量,并将相关参数 rho 建模为缩放的 Beta 随机变量(作为旁注,我很想听到处理 rho 的更好方法 - PyMC 3截断了正常的随机变量,例如?)。我想使用函数 mvnun 来计算给定 cx、cy 和 rho 值的预测概率。函数 mvnun 是 scipy.stats.mvn 的一部分,它是一段编译的 Fortran 代码,有两个函数用于计算非常准确的多元正态 CDF 值。

如果我尝试将 rho 粘贴在相关矩阵 S 中,或者如果我将 cx 或 cy 放入指示积分限制的数组中,我会得到:

如果我对 cx、cy 和/或 rho 使用固定数值,mvnun 就可以正常工作(在“with model:”块内或外)。我一直在四处寻找,试图弄清楚为什么 PyMC RVs 会导致这个错误,但我很难过。我收集到 cx、cy 和 rho 是 theano TensorVariables,但我无法弄清楚关于 theano TensorVariables 的什么(如果有的话)会导致这些问题。

尝试使用 PyMC RV 作为参数调用 Fortran 函数是否存在根本问题?还是我的代码在某些方面存在缺陷?两个都?完全不同的东西?

我是 PyMC 的新手,我安装 PyMC 3 时认为它是当前版本(我发誓说几周前我安装它时没有 alpha 版本)。也许我应该安装 2.3 并弄清楚如何把它和那个放在一起?

无论如何,任何有关如何解决问题的建议都将不胜感激。

这是我的代码:

0 投票
2 回答
4737 浏览

python - PyMC 的并行化

有人可以就如何并行化PyMC MCMC代码给出一些一般性说明。我正在尝试按照此处LASSO给出的示例运行回归。我在某处读到默认情况下会进行并行采样,但是我还需要使用类似的东西来使其工作吗?Parallel Python

这是一些我希望能够在我的机器上并行化的参考代码。

0 投票
1 回答
1708 浏览

python - Pymc3:非常缓慢且停滞不前

NUTS 采样器可能会变慢或失速有什么原因吗?我使用http://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/作为一些分层线性回归工作的基础。我尝试从 find_MAP() 开始,但在 2000 次迭代中的 100 次后它仍然停滞不前

我的代码是

提前谢谢了

0 投票
1 回答
1098 浏览

statistics - 使用 PyMC 设置具有对数似然和对数正态先验的 MCMC

我是 pyMC 的新手,我仍然无法使用 pyMC 构建我的 MCMC 的结构。我想建立一个链,我很困惑如何一起定义我的参数和对数似然函数。我的卡方函数由下式给出:

在此处输入图像描述

其中在此处输入图像描述在此处输入图像描述分别是观测数据和对应误差,在此处输入图像描述是具有四个自由参数的模型,参数是非线性的。

X和的先验Y是统一的,例如:

但对于MC给出如下:

在此处输入图像描述

其中的平均值C是通过计算的

在此处输入图像描述

在此处输入图像描述

对于MC,先验应该如下所示:

该参数z也是C先验常数。我想知道如何定义我的可能性在此处输入图像描述,并且应该将其称为@Deterministic variable?我是否以正确的方式将M和定义C为先验信息?

如果有人给我一些提示,告诉我如何将这些参数与给定的先验结合起来,我将不胜感激。

0 投票
0 回答
1108 浏览

python - 具有测量不确定性的 PyMC 稳健线性回归

我使用 x 和 y 中测量误差的数据的最小二乘回归,并使用减少的卡方(均方加权偏差:mswd)作为拟合的度量。然而,使用减少卡方的一些假设可能没有得到满足,我想转向使用 PyMC 的 mcmc/贝叶斯方法。我在网上搜索过,但似乎找不到我要找的东西,大多数例子都假设数据不确定性是高斯的,但在这里我测量了 x 和 y 的不确定性。

看来我应该能够在 PyMC2 或 PyMC3 中使用 glm 做到这一点。

这是绘制的典型数据集:

在此处输入图像描述

以及与之相关的数据:

我正在寻找人们这样做的任何示例和参考资料。提前致谢。

0 投票
2 回答
5087 浏览

python - pymc3 :多个观察值

我有一些我想估计参数的观测数据,我认为这将是一个尝试 PYMC3 的好机会。

我的数据结构为一系列记录。每条记录都包含一对与固定的一小时时段相关的观察结果。一项观察是在给定小时内发生的事件总数。另一个观察是该时间段内的成功次数。因此,例如,一个数据点可能会指定在给定的 1 小时内,总共有 1000 个事件,在这 1000 个事件中,有 100 个是成功的。在另一个时间段内,总共可能有 1000000 个事件,其中 120000 个是成功的。观察值的方差不是恒定的,取决于事件的总数,我想控制和建模的部分原因是这种影响。

我这样做的第一步是估计潜在的成功率。我准备了下面的代码,旨在通过使用 scipy 生成两组“观察到的”数据来模拟这种情况。但是,它不能正常工作。
我期望它找到的是:

  • loss_lambda_factor 大约为 0.1
  • total_lambda(和 total_lambda_mu)大约为 120。

相反,该模型收敛得非常快,但结果却出人意料。

  • total_lambda 和 total_lambda_mu 分别是 5e5 附近的尖峰。
  • loss_lambda_factor 大约为 0。

跟踪图(由于声誉低于 10,我无法发布)相当无趣 - 快速收敛,并且在与输入数据不对应的数字处出现尖峰。我很好奇我所采取的方法是否存在根本性的错误。应如何修改以下代码以提供正确/预期的结果?

0 投票
1 回答
2078 浏览

python - 如何在 PyMC3 中定义自定义先验

我想知道是否可以在 PyMC3 中定义一个自定义先验(以及如何去做)。从这里看来,在 PyMC2 中比较容易做到(无需修改源代码),但在 PyMC3 中并不那么容易(或者我不明白一些东西)。我正在尝试复制在 BUGS 中实现的“做贝叶斯数据分析”一书中的先验:

先验没有太多意义,它只是一个示例,说明如何定义自定义先验和 BUGS 的多功能性。

我尝试实现上述自定义先验是:

编辑

遵循chris-fonnesbeck的回答

我想我需要类似的东西:

唯一的问题是我对 theta1 和 theta2 的所有后验样本都得到了相同的值,我猜我的自定义先验或先验和可能性的组合存在一些问题。可以在此示例中找到自定义先验的成功定义