问题标签 [pymc]
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 库的问题
我正在尝试运行以下代码:
并不断收到此错误:
文件“/Library/Python/2.7/site-packages/pymc-2.3-py2.7-macosx-10.8-intel.egg/pymc/utils.py”,第 14 行,来自 . import flib ImportError: numpy.core.multiarray 导入失败
我的库安装版本有问题吗?
python - pymc 3.0 预测后验分布
我正在将一个非常简单的示例从 pymc 2.3 转换为 pymc 3.0,并且似乎无法弄清楚如何从预测后验分布中采样(或获取 MAP)。按照文档中的建议(7.3 模型检查和诊断:拟合优度),我可以使用 pymc 2.3 通过添加未观察到的随机变量从该分布中采样。这是笔记本的链接。一切似乎运作良好。
但是,当我尝试在pymc 3.0中执行此操作时,会发生两件奇怪的事情。
- MAP 值甚至不接近,好像未观察到的随机性正在影响最小化,而未观察到的随机性的 MAP 值是错误的?
- NUTS 采样器不会改变未观察到的随机变量的值,因此轨迹只是单个值 10。
当然,如果观察到的随机变量不存在,这个值是有意义的。在 pymc 3.0 中,为预测后验找到 MAP 值并从中采样有何变化?
更新:
这是一个最小的示例,说明了我做错了什么:
我想我自己已经部分回答了这个问题。首先是抽样。据我所知,NUTS 采样器无法处理离散变量。然而,Metropolis 采样器肯定可以处理离散变量(已在 issue #235 中解决),HamiltonianMC 采样器似乎也可以处理离散变量。
然而,离散随机指标的 MAP 估计注定是糟糕的。即使您指定使用所有变量(不是默认值)。因为离散随机对数概率函数返回任何离散随机的底的对数概率,所以无论使用哪个 scipy 最小化函数,都会陷入局部最优。最小化只会优化连续随机变量,同时保持离散变量固定,因为离散变量中的任何小步骤都不会导致对数概率的提高。我不确定这是否是一个错误,或者只是当您同时具有离散变量和连续变量时查找 MAP 估计值的基本限制。
更新 2:
如果您使用多个步骤,采样效果会更好。对于上述模型,您可以使用。
modeling - PyMC:来自独立分布的两个值的总和
我正在尝试使用 pymc 从观察中学习潜在变量。一个简化的版本如下:
我想学习两个隐藏参数$\lambda_0, \lambda_1$,
而有两个分布 $X_0, X_1$ 分别使用这些参数:
$X_0 \sim Expon(\lambda_0)$, $X_1 \sim Expon(\lambda_1)$。
我没有对 $X_i$ 的观察。相反,我观察到这些变量的线性组合:$x_0^{(0)} + x_1^{(1)} + x_1^{(1)} = 6$, $x_0^{(1)} = 2$ .
我最初的方法是这样的,但我认为它不起作用:
你能帮我做这个玩具例子吗?
python - 使用 PyMC3 进行多图像处理
我有一个图像处理问题,我想我可以用它来尝试更多地了解 PyMC3。我花了很多时间摆弄非线性求解器和蛮力方法,到目前为止,没有什么能让我开心。
我遇到的问题涉及一种复杂的方法,用于共同注册同一场景的两个图像,但以不同的方式记录。考虑尝试将常规黑白可见图像与热红外图像匹配。或者,从医学成像的角度来看,尝试将 MRI 数据与 X 射线数据相匹配。
为了简单起见,我可以用以下函数表示我的数据处理工作流程:
该函数将两个图像和一个模型参数向量作为输入。内部发生了一些复杂的数字运算。完成后,将返回一个标量,指示模型(仅由参数向量定义)对齐两个图像的程度。源图像如何变形或两个图像如何比较的细节现在是黑盒子。最后,我最终想要的主要结果是与模型相对应的扭曲图像,从而产生最佳匹配。但是现在当我还在玩我的算法时,我想我可以通过可视化一些简单的测试用例图像的模型参数的后验分布来学到很多东西。我最初认为 PyMC 会让这一切变得简单,但是一旦我开始研究实际的实现细节,我就有点困惑了。
我查看了 Thomas Wiecki 最近的PyMC3 演示文稿,还阅读了Cam Davidson-Pilon的大部分优秀在线书籍。到目前为止,在我看来,PyMC3 与 PyMC2 相比的伟大新特性(部分)是一种时髦的模型规范语法和自动使用Theano来加速处理。
在我到目前为止看到的示例中,看起来数据模型现在通常使用新的语法系统完全指定。但就我而言,我有这个更复杂的功能。
以下是我的问题:
有人可以指出一个现有的 PyMC 示例,该示例涉及作为用户函数实现的黑盒数据模型吗?PyMC2 或 PyMC3 都很棒!
一旦我弄清楚如何使用 PyMC3 进行这项工作,我是否能够在我的 Python 数据模型函数中实现 Theano 的优势?
python - PyMC:马尔可夫系统中的参数估计
一个简单的马尔可夫链
假设我们想要估计一个系统的参数,以便我们可以在给定时间步 t 的状态的情况下预测系统在时间步 t+1 的状态。PyMC 应该能够轻松处理这个问题。
让我们的玩具系统由一维世界中的移动物体组成。状态是对象的位置。我们要估计潜在变量,即物体的速度。下一个状态取决于前一个状态和潜变量速度。
我们假设我们的观察中有一些噪音(但这在这里无关紧要)。
问题是:如何对下一个状态对当前状态的依赖进行建模。我可以为转换函数提供一个参数 idx 来访问时间 t 的位置,然后预测时间 t+1 的位置。
但是,索引似乎是一个不适合索引的数组。可能有更好的方法来访问以前的状态。
python - PyMC:分层隐马尔可夫模型
我有一个系统,它由每个时间步的位置和速度定义。系统的行为定义为:
所以,这是我的 PyMC 模型。估计vel
,pos
也是最重要的damping
。
这就是我运行采样的方式:
的值damping
由先验支配。即使我将之前的内容更改为 Uniform 或其他内容,情况仍然如此。
我究竟做错了什么?它与前面的示例非常相似,只是多了一层。
此问题的完整 IPython 笔记本可在此处获得:http: //nbviewer.ipython.org/github/sotte/random_stuff/blob/master/PyMC%20-%20HMM%20Dynamic%20System.ipynb
[编辑:一些说明和采样代码。]
[EDIT2:@Chris 的回答没有帮助。我无法使用AdaptiveMetropolis
,因为 *_states 似乎不是模型的一部分。]
hidden-markov-models - PyMC:如何描述状态空间模型?
我曾经使用 C 编写我的 MCMC。但我想尝试一下 PyMC。
假设 X_n 是其动力学遵循马尔可夫链的基础状态,而 Y_n 是观察到的数据。尤其是,
Y_n 具有泊松分布,其均值取决于 X_n 和多维未知参数 theta X_n | X_{n-1} 的分布取决于 theta
我应该如何使用 PyMC 描述这个模型?
另一个问题:我可以找到 theta 但不是 X_n 的共轭先验。是否可以指定使用共轭先验更新哪些后验以及使用 MCMC 更新哪些后验?
pymc - PyMC 中的 Beta 分布线性模型
在这里而不是在旧的 Google Groups 上回答应该是一个问题,我一直在寻找在 PyMC 中参数化一个 Beta 分布的线性模型,Chris Fonnesbeck 建议如下:
“只是 beta 的重新参数化,其中 \alpha = \mu \phi 和 \beta = (1-\mu) \phi。所以,你所需要的只是:new_beta = Lambda('new_beta', lambda x=x , mu=mu, phi=phi: beta_like(x, mu*phi, (1-mu)*phi))"
这很好 - 我的下一个问题是在哪里插入线性模型组件,我认为它应该在 \mu 上,例如:
$$\mu = \exp(b_0+b_1x)$$
并具有伽马分布的 \phi:
这个对吗?注意,我们在这里使用 PyMC2
谢谢亚伦
python - pymc 中的通用混合模型
我有一个带有多个驼峰的分布。我想尝试为每个驼峰、高斯、指数、weibuill 等拟合几种不同类型的分布。但是,就目前而言,我似乎必须为每个组合手动定义一个随机类。我想做的是
这样的委托可以吗?有没有标准的方法来做到这一点?阻止上述情况的主要事情是我想不出任何方法将变量集组合在一起。