问题标签 [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 - 使用 PYMC3 进行回归
我在这里发布了一个 IPython 笔记本http://nbviewer.ipython.org/gist/dartdog/9008026
我通过标准的 Statsmodels OLS 工作,然后通过 Pandas 提供的数据与 PYMC3 类似,顺便说一句,这部分工作得很好。
我看不到如何从 PYMC3 中获取更多标准参数?这些示例似乎只是使用 OLS 来绘制基本回归线。看来PYMC3模型数据应该可以给出回归线的参数了吧?除了可能的痕迹,即最高概率线是什么?
欢迎对 Alpha、beta 和 sigma 的解释进行任何进一步的解释!
另外如何使用 PYMC3 模型来估计 y 的未来值给定一个新的 x 即预测具有一定的概率?
最后,PYMC3 有一个新的 GLM 包装器,我尝试过它似乎搞砸了?(不过很可能是我)
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 也是一个有用的开始。
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 不再存在。我也不确定是否应该在运行跟踪之前找到开始。我应该如何更改我的实现以正确运行?
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 并弄清楚如何把它和那个放在一起?
无论如何,任何有关如何解决问题的建议都将不胜感激。
这是我的代码:
python - PyMC 的并行化
有人可以就如何并行化PyMC MCMC
代码给出一些一般性说明。我正在尝试按照此处LASSO
给出的示例运行回归。我在某处读到默认情况下会进行并行采样,但是我还需要使用类似的东西来使其工作吗?Parallel Python
这是一些我希望能够在我的机器上并行化的参考代码。
python - Pymc3:非常缓慢且停滞不前
NUTS 采样器可能会变慢或失速有什么原因吗?我使用http://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/作为一些分层线性回归工作的基础。我尝试从 find_MAP() 开始,但在 2000 次迭代中的 100 次后它仍然停滞不前
我的代码是
提前谢谢了
statistics - 使用 PyMC 设置具有对数似然和对数正态先验的 MCMC
我是 pyMC 的新手,我仍然无法使用 pyMC 构建我的 MCMC 的结构。我想建立一个链,我很困惑如何一起定义我的参数和对数似然函数。我的卡方函数由下式给出:
其中和分别是观测数据和对应误差,是具有四个自由参数的模型,参数是非线性的。
X
和的先验Y
是统一的,例如:
但对于M
和C
给出如下:
其中的平均值C
是通过计算的
对于M
和C
,先验应该如下所示:
该参数z
也是C
先验常数。我想知道如何定义我的可能性,并且应该将其称为@Deterministic variable
?我是否以正确的方式将M
和定义C
为先验信息?
如果有人给我一些提示,告诉我如何将这些参数与给定的先验结合起来,我将不胜感激。
python - 具有测量不确定性的 PyMC 稳健线性回归
我使用 x 和 y 中测量误差的数据的最小二乘回归,并使用减少的卡方(均方加权偏差:mswd)作为拟合的度量。然而,使用减少卡方的一些假设可能没有得到满足,我想转向使用 PyMC 的 mcmc/贝叶斯方法。我在网上搜索过,但似乎找不到我要找的东西,大多数例子都假设数据不确定性是高斯的,但在这里我测量了 x 和 y 的不确定性。
看来我应该能够在 PyMC2 或 PyMC3 中使用 glm 做到这一点。
这是绘制的典型数据集:
以及与之相关的数据:
我正在寻找人们这样做的任何示例和参考资料。提前致谢。
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,我无法发布)相当无趣 - 快速收敛,并且在与输入数据不对应的数字处出现尖峰。我很好奇我所采取的方法是否存在根本性的错误。应如何修改以下代码以提供正确/预期的结果?
python - 如何在 PyMC3 中定义自定义先验
我想知道是否可以在 PyMC3 中定义一个自定义先验(以及如何去做)。从这里看来,在 PyMC2 中比较容易做到(无需修改源代码),但在 PyMC3 中并不那么容易(或者我不明白一些东西)。我正在尝试复制在 BUGS 中实现的“做贝叶斯数据分析”一书中的先验:
先验没有太多意义,它只是一个示例,说明如何定义自定义先验和 BUGS 的多功能性。
我尝试实现上述自定义先验是:
编辑
我想我需要类似的东西:
唯一的问题是我对 theta1 和 theta2 的所有后验样本都得到了相同的值,我猜我的自定义先验或先验和可能性的组合存在一些问题。可以在此示例中找到自定义先验的成功定义