【问题标题】:PyMC throwing Error or Crashing When Trying to SamplePyMC 在尝试采样时抛出错误或崩溃
【发布时间】:2015-07-25 19:14:02
【问题描述】:

我正在尝试模拟一个过程,其中在二项式过程中使用的试验次数 n 是由非齐次泊松过程生成的。我目前正在使用 PyMC 来拟合其中的泊松部分(例如 here,没有整个封顶部分),但我不知道如何将它与二项式集成。我怎样才能使用泊松过程生成的东西并将其用于拟合二项式过程?或者有没有更好的方法使用类似的方法来做到这一点?

这是我尝试过的:

import pymc as pm
import numpy as np

t = np.arange(5)

a = pm.Uniform(name='a', value=1., lower=0, upper=10)
b = pm.Uniform(name='b', value=1., lower=0, upper=10)

@pm.deterministic
def linear(a=a, b=b):
    return a * t + b

N_A = pm.Poisson(mu=linear, name='N_A')
C = pm.Beta('C', 1, 1)
obs_A = pm.Binomial('obs_A', N_A, C, observed=True, value=np.array([0,1,4,3,7])

mcmc = pm.MCMC([obs_A, C, N_A, a, b])
mcmc.sample(10000,5000)

当我尝试提取样本时,它会抛出错误

pymc.Node.ZeroProbability: Stochastic obs_A's value is outside its support, or it forbids its parents' current values.

我确定我的表述不正确,但我不确定如何。

【问题讨论】:

    标签: python pymc


    【解决方案1】:

    出现错误是因为自动生成的N_A的初始值(试验次数)小于pm.Binomial中指定的一些观察值,即观察到这样一个数字的概率为零,初始值必须被拒绝。一种解决方案是明确地为N_A 提供可接受的初始值:

    x = np.array([0,1,4,3,7])
    N_A = pm.Poisson(mu=linear, name='N_A', value=x)
    

    供参考:https://github.com/pymc-devs/pymc/issues/12:

    这是模型规格错误的问题,而不是错误。这意味着似然的初始参数值与数据不兼容——您需要指定兼容的初始值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多