- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
相当简单的问题:我应该如何使用@pm.stochastic
?我读过一些博客文章,声称 @pm.stochastic
期望对数值为负:
@pm.stochastic(observed=True)
def loglike(value=data):
# some calculations that generate a numeric result
return -np.log(result)
我最近尝试过这个,但发现结果非常糟糕。由于我还注意到有些人使用 np.log 而不是 -np.log,所以我尝试了一下,效果更好。 @pm.stochastic
真正期待什么?我猜想由于一个非常流行的示例使用诸如 np.log(1/(1+t_1-t_0))
之类的内容而需要的符号存在一些困惑,该示例被编写为 -np.log(1+t_1-t_0)
另一个问题:这个装饰器用 value
参数做什么?据我了解,我们从需要输入可能性的先验的一些建议值开始,@pm.stochastic的想法基本上是产生一些数字来将该可能性与生成的数字进行比较采样过程中的前一次迭代。可能性应该接收 value
参数和先验的一些值,但我不确定这是否是 value
所做的全部,因为这是唯一必需的参数,但我可以写:
@pm.stochastic(observed=True)
def loglike(value=[1]):
data = [3,5,1] # some data
# some calculations that generate a numeric result
return np.log(result)
据我所知,这会产生与以前相同的结果。也许,它以这种方式工作是因为我将 observed=True
添加到装饰器中。如果我在默认情况下使用 observed=False
的随机变量尝试此操作,则 value
将在每次迭代中更改,试图获得更好的可能性。
最佳答案
@pm.stochastic
是一个装饰器,因此它需要一个函数。使用它的最简单方法是给它一个函数,其中包含 value
作为其参数之一,并返回对数似然。
您应该使用@pm.stochastic
装饰器为模型中的参数定义自定义先验。您应该使用 @pm.observed
装饰器来定义数据的自定义可能性。这两个装饰器都会创建一个 pm.Stochastic
对象,该对象的名称来自它所装饰的函数,并具有所有熟悉的方法和属性(这里是 a nice article on Python decorators )。
示例:
先验具有三角分布的参数a
:
@pm.stochastic
def a(value=.5):
if 0 <= value < 1:
return np.log(1.-value)
else:
return -np.inf
这里使用value=.5
作为参数的初始值,将其更改为value=1
会引发异常,因为它超出了支持范围的分布。
可能性b
是以a
为中心的正态分布,具有固定精度:
@pm.observed
def b(value=[.2,.3], mu=a):
return pm.normal_like(value, mu, 100.)
这里用value=[.2,.3]
来表示观察到的数据。
关于python - 我应该如何在 PyMC 中使用 @pm.stochastic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703950/
我尝试移植简单的生存模型 from here (the first one in introduction)从 PyMC 2 到 PyMC 3。但是,我没有找到任何等效于“观察到”的装饰器,并且我尝试
我使用了基于 Clojure 的“圣公会”,我认为这对我不利。糟糕的文档和太小的社区无法寻求帮助。此外,我仍然无法熟悉基于 Scheme 的语言。所以我想将语言更改为基于 Python 的语言。 也许
我想对我在不使用 pymc 的情况下生成的示例使用 pymc 诊断和摘要功能。例如,我想在我自己的一组示例中使用 pymc 的 mc_error 例程。 一些 pymc 诊断函数可以采用 np.arr
我正在尝试在PyMC3中采样多个链。在PyMC2中,我将执行以下操作: for i in range(N): model.sample(iter=iter, burn=burn, thin =
有关如何使用PyMC将两个正态分布拟合到数据的信息,请参见a question on CrossValidated。 Cam.Davidson.Pilon的答案是使用伯努利分布将数据分配给两个法线之一
我正在尝试使用最大后验估计来估计泊松过程的速率,其中速率随时间变化。这是一个速率线性变化的简化示例 (λ = ax+b): import numpy as np import pymc # Obser
我正在用一个简单的多级模型尝试 PyMC3。当同时使用假数据和真实数据时,随机效应分布的轨迹会相互移动(见下图),并且似乎是同一轨迹的偏移量。这是 NUTS 的预期产物还是表明我的模型存在问题? 这是
我试图在通过 PyMC 的 MCMC 方法拟合变量时设置约束 例如,我在 PyMC 中定义了以下随机模型 import pymc as pm a=pm.Uniform('a',lower=0.,upp
尝试通过 conda 安装 pymc 时,我收到以下信息: C:\Anaconda>conda install -c https://conda.binstar.org/pymc pymc 正在获取包
如何在 PyMC3 中定义自定义似然?在 PyMC2 中,我可以使用 @pymc.potential .我尝试使用 pymc.Potential然而,在 PyMC3 中,似乎 bool 运算不能应用于
我正在尝试从随机 Petri 网模型中估计速率。我不明白为什么,但我得到了零概率错误,即使在给定我为速率定义的初始值的情况下,将数据数据与预期的观察次数完全对应。 例如,以下比率 [0.01, 2,
我正在尝试从 Infer.NET 移植一个模型,但我正在努力如何制作在 pymc3 中观察到的确定性变量? M,L ~ 伯努利 # doesn't work ... Deterministic("U
我已经开始试用 pymc3 并且需要实现多项逻辑回归模型。我研究了 twiecki 的教程,并且了解他对层次回归模型的实现(请参阅 https://twiecki.github.io/blog/201
我正在尝试使用 PyMC 实现一个非常简单的大数定律示例。目标是生成不同大小样本的许多样本平均值。例如,在下面的代码中,我重复采集 5 个样本组 (samples_to_average = 5),计算
这是 PyMC: Parameter estimation in a Markov system 的后续内容 我有一个由每个时间步的位置和速度定义的系统。系统的行为定义为: vel = vel + d
型号 我有以下统计模型: r_i ~ N(r | mu_i, sigma) mu_i = w . Q_i w ~ N(w | phi, Sigma) prior(phi, Sigma) = Norma
我正在尝试将负二项式混合物与 PyMC 拟合。看来我做错了什么,因为预测看起来与输入数据并不相似。问题可能出在负二项式参数的先验上。有什么建议吗? from sklearn.cluster i
我有三个关于装饰器的问题,我无法找到答案: Q1)PyMC 中装饰器的参数(@Deterministic,@Stochastic)表示什么? Q2) @pymc.stochastic(dtype=in
我正在使用an example of linear regression from bayesian methods for hackers但无法将其扩展到我的用途。 我对一个随机变量进行了观察,对该
我正在尝试拟合共享相同截距的多条线。 import numpy as np import pymc # Observations a_actual = np.array([[2., 5., 7.]])
我是一名优秀的程序员,十分优秀!