问题标签 [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.

0 投票
3 回答
4485 浏览

anaconda - Anaconda Pymc 安装

尝试通过 conda 安装 pymc 时,我收到以下信息:

C:\Anaconda>conda install -c https://conda.binstar.org/pymc pymc 获取包元数据:...错误:找不到匹配的包:pymc

安装来自 pymc 分发页面:https ://binstar.org/pymc/pymc

我当前的 anaconda 版本是最新的:

C:\Anaconda>conda update --prefix C:\Anaconda anaconda 获取包元数据:..解决包规范:.# 所有请求的包都已安装。

# C:\Anaconda 环境中的包:

#

蟒蛇 1.9.2 np18py27_0

所以作为一个 conda 新手,我不太确定我错过了什么。也许我必须先授权binstar?(我相信没有代理问题。)

非常感谢您的建议!

0 投票
0 回答
848 浏览

python - 解决价格是正确的

黑客概率编程的第 5 章中,作者针对The Price is Right的一个实例提出了以下解决方案,其目标是估计完整展示的价格的后验。

作为该节目的参赛者,您所拥有的只是根据该节目的历史数据估算的展柜全价,以及您自己对展柜中包含的物品的价格的估算。

本书的章节基于这篇文章,解决方案的代码如下所示:

这导致:

在此处输入图像描述

我的问题是:

  1. 这个问题的贝叶斯公式是什么?作者如何使用似然函数来连接先验并获得后验?

  2. 如何pymc解释error potential上面代码中的定义?在统计图形模型文献中,势通常是某个分布因式分解中的一个因子(即乘积项)。potential在这种情况下,指的是什么分布(即什么变量) ?

  3. 由于作者normal_like在代码中使用了 PyMC 函数,是否PyMC假设要最大化这个似然函数?(如果不是,它起什么作用?)。作者似乎将其true_price用作观察数据,并price_estimate用作mu正态似然函数中的 。这是正确的吗?如果是这样,这样做的理由是什么?

0 投票
2 回答
2258 浏览

python - PyMC 中的自定义先验

假设我想在两个变量abPyMC 中放置一个自定义先验,例如:

p(a,b)∝(a+b)^(−5/2)

(有关这种先验选择背后的动机,请参阅此答案

这可以在 PyMC 中完成吗?如果有怎么办?

例如,我想在下面的模型中定义这样ab先验。

更新

按照 John Salvatier 的建议,我尝试了以下操作(请注意,我在 PyMC2 中,虽然我很乐意切换到 PyMC3),但我的问题是:

  1. 我应该导入什么才能正确继承Continuous
  2. 在 PyMC2 中,我还需要坚持 Theano 表示法吗?
  3. 最后,我以后如何告诉我的Beta分布alphabeta从这个多元分布中获得先验?

    导入 pymc.Multivariate.Continuous

    类 CustomPrior(Continuous): """ p(a,b)∝(a+b)^(−5/2)

    /li>
0 投票
2 回答
1495 浏览

python - 在 PyMC 中学习离散 HMM 参数

我正在尝试使用 PyMC 学习简单离散 HMM 的参数。我正在对 HMM 上的Wiki页面中的雨晴模型进行建模。该模型如下所示:

我正在使用以下先验。

最初,我使用此设置创建一个训练集,如下所示。

但是,我无法理解如何使用 PyMC 学习这些参数。我开始如下。

可以在此处找到包含此代码的完整笔记本。

旁白:包含高斯 HMM 代码的要点真的很难理解!(未记录)

更新

根据以下答案,我尝试按如下方式更改我的代码:

下一步将是创建一个模型,然后运行 ​​MCMC 算法。但是,上面编辑的代码也不起作用。它给出了一个ZeroProbability error.

我不确定我是否正确解释了答案。

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 投票
1 回答
1362 浏览

python - 如何使用 PYMC 编写多元法线的分层混合模型

我使用 PyMC 成功实现了 3 个法线的混合(显示在https://drive.google.com/file/d/0Bwnmbh6ueWhqSkUtV1JFZDJwLWc,类似于如何在 PyMC 中模拟 3 个法线的混合?

我的下一步是尝试对多元法线的混合进行编码。

然而,数据还有一个额外的复杂性 - 一个层次结构,具有属于父观察的一组观察。聚类是在父观测值上完成的,而不是在单个观测值本身上完成的。第一步生成代码(60 个父母,每个父母有 50 个观察值),并且工作正常。

但是,当我尝试使用 PyMC 进行采样时,我遇到了介绍问题('错误:将 flib.prec_mvnorm 的第三个参数 'tau' 转换为 C/Fortran 数组失败')

我知道问题不在于模拟观察数据的格式,因为这一步可以正常工作,代替上述:

结果,我认为问题是如何输入平均向量('mean')和协方差矩阵('prec'),我只是不知道如何输入。就像我说的,这适用于正态分布的混合,但多元正态的混合增加了我无法弄清楚的复杂性。

0 投票
1 回答
1498 浏览

python - PyMC 中的多项分布

我是pymc的新手。我已经在 github 上阅读了所需的东西,并且在我遇到这个问题之前做得很好。我想制作一个多项式随机变量的集合,以后可以使用 mcmc 对其进行采样。但我能做的最好的就是

但这不好,因为我希望能够调用rv.valueand rv.random(),否则我将无法从中采样。

count 是一个非 ve 整数列表,每个整数表示该分布的 n 值,例如。一个可能的计数可以是[26, 39, 20, 10]

p_d 是凹陷概率的列表。例如,一个可能的 p_d 可以是[[0.7, 0.3], [0.5, 0.1, 0.4], [0.4, 0.6], [0.8, 0.2]]

for 循环没有用。他们只是表明组件是多项式随机变量,但我认为我不能将组件与 mcmc 一起使用来获得后验分布。我需要一些方法来将 mcmc 与 rv 一起使用。

如果有人可以告诉我一些函数,比如 pymc 中的 numpy.array() (将列表转换为 numpy 数组),它可以将列表转换为我想要的东西,那将是非常好的。(很抱歉,我无法用科学术语表达,但我已尽量让自己清楚)如果有人需要更多信息,请告诉我。

编辑 1

我有几个游戏的数据,例如[8, 8, 10]。它表示当这个游戏玩了 26 次时,P1(玩家 1)采取了 A1(行动 1)8 次,A2 8 次,A3 10 次。

(在不同的游戏中可以有不同的动作数。在这个结果为 的例子中[8, 8, 10],有 3 个动作)

我有大约 200 个这样的数据(以列表/numpy 数组的形式)

我相信多项分布最能描述数据。

所以我写了一个确定性函数,给定一个均匀分布的随机变量tau,在这些动作上生成概率分布,例如,在这种情况下,说[0.16, 0.28, 0.56]

你看,我有 200 个这样的列表,每一个都表示该游戏中动作的概率分布。我还有一个包含 200 个整数(可能不同)的列表,每个整数表示玩游戏的次数(我通过对数据求和获得,例如,有数据的游戏[8, 8, 10,]玩了 26 次)。

现在给定观察到的数据(例如 200 个列表的列表[[8, 8, 10], [0, 0, 0], ....., [12, 3]]),我想绘制 tau 的后验概率分布(我最初假设它是均匀的)

0 投票
1 回答
1317 浏览

python - 从 pymc 中保存的跟踪中绘制图形

我需要使用不同的参数运行不同时间的 MCMC 来检查收敛性。所以我决定保存这些痕迹,以便当我需要知道(出于比较目的)

pymc.MCMC (iter = 10000, burn = 1000, thin = 10)

我不需要重新运行它。(这需要很多时间(我必须为许多不同的参数值做同样的事情))。

我找到了解决方案

因此,跟踪现在保存在名为10000iter1000burn.pickle的数据库中

现在,要加载跟踪,我执行以下操作

当我执行时,print db.trace('tau')[:]我得到相同的输出,但是当我想要绘制图形或获取其他信息时,它失败了

plot() 至少需要 2 个参数(给定 1 个) ,但是当我执行 plot(m) 时(我再次运行采样器的初始情况),它工作正常。

同样db.tau.summary()给出错误“跟踪”对象没有属性“摘要” 当我这样做时它工作正常m.tau.summary()

同样适用于db.logp

我是这个领域的新手。如果语法中某处有任何错误,请纠正我。如果有其他方法可以重新绘制图形并获得模型的对数概率而无需再次运行 mcmc,我将很高兴知道。