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

python - 尝试按照 PyMC3 上的教程进行操作,结果是:“'Model' object has no attribute TransformedVar”

我一直在尝试遵循 PYMC3 https://pymc-devs.github.io/pymc3/getting_started/上的教程,但是当我进入以下代码部分时,我遇到了错误......

第一个错误是“无法导入名称logtransform”。第二个错误(如果我不尝试加载logtransform)是“'Model' object has no attribute TransformedVar”。

我在 Windows 7 上的 IPython Notebook 中运行它,我尝试卸载并重新安装 PyMC3 无济于事。

0 投票
4 回答
2905 浏览

python - PyMC2 和 PyMC3 给出不同的结果...?

我试图让一个简单的 PyMC2 模型在 PyMC3 中工作。我已经让模型运行,但模型对变量给出了非常不同的 MAP 估计。这是我的 PyMC2 模型:

这似乎按预期工作。我在弄清楚如何在 PyMC3 中使用等效的 pymc.Lambda 对象时遇到了各种各样的麻烦。我最终遇到了确定性对象。以下是我的代码:

我遇到的问题是我使用 PyMC2 对 theta 的 MAP 估计值约为 0.68(正确),而 PyMC3 给出的估计值约为 0.26(不正确)。我怀疑这与我定义确定性函数的方式有关。PyMC3 不允许我使用 lambda 函数,所以我只需要内联编写表达式。当我尝试使用 lambda theta=theta:... 我得到这个错误:

和Theano有什么关系??任何建议将不胜感激!

0 投票
1 回答
822 浏览

python - 在pymc3中重写用于动态系统中参数估计的pymc脚本

我想使用 pymc3 来估计 Hodgkin Huxley 神经元模型中的未知参数和状态。我在 pymc 中的代码基于http://healthyalgorithms.com/2010/10/19/mcmc-in-python-how-to-stick-a-statistical-model-on-a-system-dynamics-model- in-pymc/并且执行得相当好。

在 pymc3 中,我无法使用 Lambda 技巧。这是我的尝试之一:

我在这些论坛上看到的唯一另一个例子是:PyMC3 中的简单动态模型

但是,这无助于回答我的问题,因为那里提出的解决方案都不起作用。我的解决方案也不起作用 - 我没有收到错误,但是当我运行脚本时,采样似乎永远不会开始。无论如何,我的解决方案似乎效率低下,因为我必须运行 python for 循环来定义所有确定性分布。我不确定 pymc3 是否能够识别我将它们全部放入纯 python 列表的方式。如果我的函数 HH() 可以返回一个 numpy 数组或某种 theano 对象,那可能会有所帮助。但我不知道如何实现它。

0 投票
1 回答
4095 浏览

python - 如何在pymc3中设置伯努利分布参数

我有一个使用以下内容在 pymc3 中描述的模型:

但是,我Y的 s 不是正态分布的,而是二进制的(所以,我认为是伯努利)。我不知道如何将NormalY 的分布更改为Bernoulli虽然,因为我不知道Y_obs在这种情况下参数是什么。

0 投票
3 回答
1571 浏览

mcmc - 如何先截断正常:将 pymc2 转换为 pymc3

在 pymc3 中,如何配置截断的正常先验?在 pymc2 中它非常简单(如下),但在 pymc3 中似乎不再有可用的截断正态分布。

Pymc2:

Pymc3:?

0 投票
0 回答
304 浏览

python - 负二项式模型找不到采样的起始位置

当观察到的数据是离散的时,我在运行 PYMC3 模型时遇到了困难。奇怪的是,如果观察到的数据包含值零 (0.),则模型将运行。

我读过其他建议使用 start = pm.find_MAP(fmin=scipy.optimize.fmin_powell)但不能解决问题的帖子。

请参阅iPython 笔记本

代码和错误如下。

我得到的错误是:

0 投票
1 回答
1098 浏览

pymc3 - PyMC3中的分层建模分类变量交互

我正在尝试使用 PyMC3 来实现具有分类变量及其交互的层次模型。在 R 中,公式将采用以下形式:

但是,在教程https://pymc-devs.github.io/pymc3/GLM-hierarchical/#partial-pooling-hierarchical-regression-aka-the-best-of-both-worlds他们明确说 glm 没有还不能很好地使用分层建模。

那么我将如何添加 x1:x2 项?它会是具有两个分类父项(x1 和 x2)的分类变量吗?

0 投票
2 回答
8762 浏览

python - 从 pymc3 中的推断参数生成预测

我遇到了一个常见问题,我想知道是否有人可以提供帮助。我经常想在两种模式下使用 pymc3:训练(即实际运行对参数的推断)和评估(即使用推断的参数来生成预测)。

一般来说,我想要一个后验预测,而不仅仅是逐点估计(这是贝叶斯框架的一部分好处,不是吗?)。当您的训练数据固定时,这通常通过将类似形式的模拟变量添加到观察变量来完成。例如,

但是如果我的数据发生变化怎么办?假设我想根据新数据生成预测,但不重新进行推理。理想情况下,我有一个类似predict_posterior(X1_new, X2_new, 'Y_sim', trace=trace)甚至predict_point(X1_new, X2_new, 'Y_sim', vals=trace[-1])可以简单地通过 theano 计算图运行新数据的函数。

我想我的部分问题与 pymc3 如何实现 theano 计算图有关。我注意到该函数model.Y_sim.eval似乎与我想要的相似,但它需要Y_sim作为输入并且似乎只是返回你给它的任何东西。

我想这个过程非常普遍,但我似乎找不到任何方法来做到这一点。任何帮助是极大的赞赏。(另请注意,我在 pymc2 中有一个技巧可以做到这一点;由于 theano,在 pymc3 中更难。)

0 投票
1 回答
476 浏览

python-3.4 - 使用 pymc3/theano 进行贝叶斯寿命估计

我正在尝试估计以下模型

在此处输入图像描述

我提供统一在此处输入图像描述 的先验并编码可能性在此处输入图像描述。后者来自本文,内容如下:

在此处输入图像描述

在 theano/pymc3 实现中,我正在计算 rhsfirst_term和中的第一项和第二项second_term。最后logp对整个样本求和。

Theano 自己产生了一些输出,但是当我将其集成到 pymc3 模型中时,会出现以下错误:

TypeError: ('Bad input argument to theano function with name "<ipython-input-90-a5304bf41c50>:27" at index 0(0-based)', 'Expected an array-like object, but found a Variable: maybe you are trying to call a function on a (possibly shared) variable instead of a numeric array?')

我认为问题在于如何向 theano 提供 pymc3 变量。

我的第一个猜测是修改logpreturn(get_ll(X, p.eval(), theta.eval()))但随后 theano 抱怨p_interval图表中一些神秘的缺失。有什么线索吗?

0 投票
1 回答
1476 浏览

python - pymc3:具有确定性开关点功能的灾难示例

我正在尝试使用开关点的确定性函数而不是使用 theano 的 switch 函数来重现煤矿开采示例。代码:

但是这段代码会出现错误:

-------------------------------------------------- ------------------------- KeyError Traceback(最近一次调用最后一次) c:\program files\git\theano\theano\tensor\type.py在 dtype_specs(self) 266 'complex64': (complex, 'theano_complex64', 'NPY_COMPLEX64') --> 267 }[self.dtype] 268 除了 KeyError:

键错误:'对象'

在处理上述异常的过程中,又出现了一个异常:

TypeError Traceback (最近一次调用最后) c:\program files\git\theano\theano\tensor\basic.py in constant_or_value(x, rtype, name, ndim, dtype) 407 rval = rtype( --> 408 TensorType(dtype =x_.dtype,可广播=bcastable),409 x_.copy(),

c:\program files\git\theano\theano\tensor\type.py in init (self, dtype, broadcastable, name, sparse_grad) 49 self.broadcastable = tuple(bool(b) for b in broadcastable) ---> 50 self.dtype_specs() # 错误检查在那里完成 51 self.name = name

c:\program files\git\theano\theano\tensor\type.py in dtype_specs(self) 269 raise TypeError("Unsupported dtype for %s: %s" --> 270 % ( self.class.name , self .第271章

TypeError:TensorType 不支持的 dtype:对象

在处理上述异常的过程中,又出现了一个异常:

TypeError Traceback (最近一次调用最后一次) c:\program files\git\theano\theano\tensor\basic.py in as_tensor_variable(x, name, ndim) 201 try: --> 202 return constant(x, name=name, ndim=ndim) 203 除了类型错误:

c:\program files\git\theano\theano\tensor\basic.py in constant(x, name, ndim, dtype) 421 ret = constant_or_value(x, rtype=TensorConstant, name=name, ndim=ndim, -->第422章 423

c:\program files\git\theano\theano\tensor\basic.py in constant_or_value(x, rtype, name, ndim, dtype) 416 except Exception: --> 417 raise TypeError("Could not convert %s to TensorType" %x,类型(x))418

TypeError: ('Could not convert FromFunctionOp{rate1} to TensorType', )

在处理上述异常的过程中,又出现了一个异常:

AsTensorError Traceback (最近一次调用最后一次) in () 14 mu2 = pymc3.Exponential('mu2',lam=1.) 15 #rate1 = pymc3.switch(switchpoint >= np.arange(len(data)), mu1, mu2) ---> 16 个灾难=pymc3.Poisson('disasters',mu=rate1,observed = data)

C:\Users\User\Anaconda3\lib\site-packages\pymc3\distributions\distribution.py in new (cls, name, *args, **kwargs) 19 if isinstance(name, str): 20 data = kwargs. pop('observed', None) ---> 21 dist = cls.dist(*args, **kwargs) 22 return model.Var(name, dist, data) 23 elif name is None:

C:\Users\User\Anaconda3\lib\site-packages\pymc3\distributions\distribution.py in dist(cls, *args, **kwargs) 32 def dist(cls, *args, **kwargs): 33 dist =对象。(cls)---> 34 dist。init (*args, **kwargs) 35 返回 dist 36

C:\Users\User\Anaconda3\lib\site-packages\pymc3\distributions\discrete.py init (self, mu, *args, **kwargs) 185 super(Poisson, self)。init (*args, **kwargs) 186 self.mu = mu --> 187 self.mode = floor(mu).astype('int32') 188 189 def random(self, point=None, size=None, 重复=无):

c:\program files\git\theano\theano\gof\op.py in call (self, *inputs, **kwargs) 598 """ 599 return_list = kwargs.pop('return_list', False) --> 600 node = self.make_node(*inputs, **kwargs) 601 602 if config.compute_test_value != 'off':

c:\program files\git\theano\theano\tensor\elemwise.py 在 make_node(self, *inputs) 540 中使用 DimShuffle。541 """ --> 542 输入 = 列表(映射(as_tensor_variable,输入)) 543 阴影 = self.scalar_op.make_node(544 *[get_scalar_type(dtype=i.type.dtype).make_variable()

c:\program files\git\theano\theano\tensor\basic.py in as_tensor_variable(x, name, ndim) 206 例外:207 str_x = repr(x) --> 208 raise AsTensorError("Cannot convert %s to TensorType" % str_x, type(x)) 209 210 # 这个有不同的名字,因为 _as_tensor_variable 是

AsTensorError: ('无法将 FromFunctionOp{rate1} 转换为 TensorType', )

我如何处理这个?

第二件事 - 当我像这样使用 pymc3.switch 函数时:

接下来尝试采样:

我收到一个错误:

作为一个简单的分析师,我是否应该学习所有关于 theano 的知识才能解决我的统计问题?具有渐变功能的新 mcmc 采样器是否只是促使我从 pymc2 切换到 pymc3 的一件事?