问题标签 [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 上的教程进行操作,结果是:“'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 无济于事。
python - PyMC2 和 PyMC3 给出不同的结果...?
我试图让一个简单的 PyMC2 模型在 PyMC3 中工作。我已经让模型运行,但模型对变量给出了非常不同的 MAP 估计。这是我的 PyMC2 模型:
这似乎按预期工作。我在弄清楚如何在 PyMC3 中使用等效的 pymc.Lambda 对象时遇到了各种各样的麻烦。我最终遇到了确定性对象。以下是我的代码:
我遇到的问题是我使用 PyMC2 对 theta 的 MAP 估计值约为 0.68(正确),而 PyMC3 给出的估计值约为 0.26(不正确)。我怀疑这与我定义确定性函数的方式有关。PyMC3 不允许我使用 lambda 函数,所以我只需要内联编写表达式。当我尝试使用 lambda theta=theta:... 我得到这个错误:
和Theano有什么关系??任何建议将不胜感激!
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 对象,那可能会有所帮助。但我不知道如何实现它。
python - 如何在pymc3中设置伯努利分布参数
我有一个使用以下内容在 pymc3 中描述的模型:
但是,我Y
的 s 不是正态分布的,而是二进制的(所以,我认为是伯努利)。我不知道如何将Normal
Y 的分布更改为Bernoulli
虽然,因为我不知道Y_obs
在这种情况下参数是什么。
mcmc - 如何先截断正常:将 pymc2 转换为 pymc3
在 pymc3 中,如何配置截断的正常先验?在 pymc2 中它非常简单(如下),但在 pymc3 中似乎不再有可用的截断正态分布。
Pymc2:
Pymc3:?
python - 负二项式模型找不到采样的起始位置
当观察到的数据是离散的时,我在运行 PYMC3 模型时遇到了困难。奇怪的是,如果观察到的数据包含值零 (0.),则模型将运行。
我读过其他建议使用
start = pm.find_MAP(fmin=scipy.optimize.fmin_powell)
但不能解决问题的帖子。
请参阅iPython 笔记本
代码和错误如下。
我得到的错误是:
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)的分类变量吗?
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 中更难。)
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 变量。
我的第一个猜测是修改logp
,return(get_ll(X, p.eval(), theta.eval()))
但随后 theano 抱怨p_interval
图表中一些神秘的缺失。有什么线索吗?
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 的一件事?