问题标签 [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:在初始采样运行后,使用 pickle 数据库进行 MCMC 采样非常慢
我厌倦了不得不用 PyMC 重新运行长 MCMC 链,因此使用 PyMC 附带的链保存功能听起来是个好主意。我正在使用pickle
数据库后端来体验基于磁盘保存的 MCMC 工作流,我发现如果我尝试连续两次从带有 pickle 数据库的 PyMC MCMC 模型中采样,第二次sample
调用非常减缓。
第一个sample
调用几乎立即完成,但第二个调用非常缓慢,需要几秒钟才能完成。与此同时,我在第二次调用时查看了磁盘上的 simple.pickle 文件,sample
并注意到它的大小在 20 到 60 兆字节之间快速波动。
我希望第二次(以及所有后续)sample
调用在与第一次大致相同的时间内完成,以便我可以手动监控链的混合属性(是的,我知道我可以使用各种更高级的诊断,但除此之外问题)。
我究竟做错了什么?
PyMC 版本 2.2、Python 2.7.3、Ubuntu 12.10 64 位。
pymc - 如何将 pymc categorical 应用于大量不同的概率
我有一个涉及许多对象的问题,N 每个都可以处于固定数量的状态 j。我们知道一个物体处于每种状态的概率——但是物体之间的概率是不同的。
例如,如果有 j=3 个状态和 N=2 个对象,则概率可以描述为:
对于少量的对象,我可以写:
但是,我有大量的对象...
我要创建的是与随机状态相对应的整数向量,其中每一行对应一个单独的对象。
我试图实现一个集合来做到这一点:
当我尝试在下一步中使用它时,问题就来了:
在上面的 nI 是一个整数向量, stateValue 是一个双精度向量,每个状态一个。问题是这会返回一个双精度数组而不是一个 pymc 对象,因此当我尝试运行模型时它会失败......
python - 如何在 PyMC 中实现一个可以被 MCMC Metropolis 采样的随机变量函数?
如果你有一个随机变量 $X$ 和一个函数 $f$,你可以将 $y=f(X)$ 定义为一个新的随机变量,其概率密度函数如下:
$p(y)=(f^{-1})'(y)p(x)$。有关详细信息,请参见此处。
现在我已经定义了一个随机变量 alpha,在下面的代码中具有指数分布。我想将 log(alpha) 作为新的随机变量添加到我的模型中。我应该如何在我的模型中实现它?
我已经做出了努力,但似乎这是错误的,答案中指出的原因是我使用了随机装饰器而不是确定性装饰器。但是因为后来我想在这个变量上应用 MCMC Metropolis,所以我需要它来统计!为了更清楚地说明,我想在 log(alpha) 上应用高斯建议。所以我需要向 Metropolis 函数提交随机输入。
所以这是我的模型:
python - 来自 PyMC 的 FloatingPointError 从 Dirichlet 分布中采样
在使用装饰器定义“指数随机变量的对数”的随机对象失败pymc.stochastic_from_dist
后,我决定使用. 我尝试实现的模型可在此处获得(第一个模型):
现在,当我尝试使用 MCMC Metropolis 并以正态分布作为建议对日志(alpha)进行采样时(如下图所示作为采样方法),我收到以下错误:
尽管采样没有出错的时间,但采样直方图与本文中的直方图相匹配。我的分层模型是:
我的测试抽样代码是:
当我检查在 distributions.py 的第 978 行中传递给 gamma 分布的 theta 值时,我看到值不是零而是小值!所以我不知道如何防止这个浮点错误?
python - Online Bayesian Learning in PyMC(Updating Posterior Beliefs Repeatedly)
The following model is part of the tutorial of PyMC, named disaster_model.py and can be imported in the main code to be used as a model:
Now one can do a sampling from distributions using MCMC Metropolis Hasting algorithm to get posterior distribution of parameters.
Now my problem is that suppose after this sampling I achieve new data. How can I update my posterior distributions afterwards? Basically how can implement online learning using PyMC?
python - Using pymc diagnostics and posterior summaries on samples not from pymc
I'd like to use the pymc diagnostic and summary functions on samples I have generated without using pymc. As one example, I'd like to use pymc's mc_error routine on my own set of samples.
Some of the pymc diagnostic functions can take an np.array of samples, but, if I understand correctly, others seem to require a trace object. How can I convert my own set of samples into a trace object that pymc can handle? I'd appreciate any pointers.
My samples are currently stored as a dictionary where each key is a name of a variable I am sampling and points to an np.array of samples.
Thanks!
theano - 将单变量先验组装成矩阵以用于 MvNormal
使用 pymc 3 时,是否可以将单变量随机变量组装成一个矩阵,然后将其用作多变量分布的先验?如果是这样,我怎样才能最好地做到这一点?
这是一个具体的例子。我想拿三个 RV 并用它们创建一个三角形矩阵 A:
经过一些操作后,我将使用这个矩阵作为多元正态分布中精度参数的先验。
我认为这可能与 theano 中张量变量的操作有关,所以我也会添加 theano 标记。
感谢您的时间!
编辑1:这是我正在尝试做的一个最小示例:
编辑 2:这是一个测试,表明它ex_tau
似乎在 pymc 之外完成了这项工作
python-2.7 - 绘制二项式 MCMC
我正在努力解决二项式和 pymc 的问题我有一个样本分成几组,我想使用 MCMC 评估从易感状态到感染状态的转换率,并以类似于此处的方式绘制结果
当我编译脚本时,我收到以下消息:
并且没有产生情节.....我该如何解决?
这是模型和启动脚本:
#pymc - 如何在 PyMC3 中构建需要外部包的模型?
我不确定这是 PyMC3 问题还是 Theano 问题。我已经使用 PyMC2 很长时间来将宇宙学与超新星数据相匹配。这需要一些凌乱的积分(参见http://arxiv.org/abs/astron/9905116)
所以我在 python 中使用了一个名为 Cosmolopy 的包来进行集成和其他一些便利功能。虽然这在 PyMC2 上运行良好,但在 PyMC3 中依赖 theano,我不知道是否有使用 Cosmolopy 的方法。
这是我目前对如何在 PyMC3 中构建模型的理解的一些示例代码
这段代码崩溃是因为 Cosmolopy 期望 omega_matter 有一个浮点数,但却收到了一个 theano.TensorVariable 。
所以这个问题有两个方面:
我是否只是在 PyMC3 的语法上遗漏了一些允许我这样做的东西(可能是因为我仍然以某种方式被困在 PyMC2 模型构建上)?
如果不是 1,那么我是否需要找到一种方法来在 theano 中进行积分?
python - pymc3中的后采样
下午 1:23(20 分钟前)嗨,
尝试学习 pymc3(从未学过 pymc2,所以跳入新事物),我怀疑有一个非常简单的示例/伪代码可以用于我正在尝试做的事情。想知道是否有人可以帮助我,因为过去几个小时我没有取得太大进展......
我的问题是以一种相当直接的方式从后部采样。让“x”是一个向量,“t(x)”是该向量的一个函数(R^n --> R^n 映射),而“D”是一些观察到的数据。我想从中采样向量 x
P( x | D ) \propto P( D | x ) P(x)
通常的贝叶斯东西。如何使用 NUTS 执行此操作的示例将非常壮观!我的主要问题似乎是让函数 t(x) 正常工作,并让模型从后验(而不是先验)返回样本。
任何和所有帮助/提示表示赞赏。与此同时,我会继续尝试一些东西。
最好的,
TJ