Python PyMC3在Possion模型创建期间生成错误

Python PyMC3在Possion模型创建期间生成错误,python,bayesian,pymc3,poisson,Python,Bayesian,Pymc3,Poisson,我编写了简单的泊松模型创建代码。但是PyMC3产生了一个错误,需要在模型中添加一个额外的变量 这个模型看起来不错。但我不确定出了什么问题 代码: 错误: 文件“”,第1行,在 运行文件('/home/saul/pythonWork/textmessageAnalysis.py',wdir='/home/saul/pythonWork') 文件“/home/saul/anaconda3/lib/python3.7/site packages/spyder_kernels/customize/spy

我编写了简单的泊松模型创建代码。但是PyMC3产生了一个错误,需要在模型中添加一个额外的变量

这个模型看起来不错。但我不确定出了什么问题

代码:

错误:

文件“”,第1行,在
运行文件('/home/saul/pythonWork/textmessageAnalysis.py',wdir='/home/saul/pythonWork')

文件“/home/saul/anaconda3/lib/python3.7/site packages/spyder_kernels/customize/spydercurustomize.py”,第786行,在runfile中 execfile(文件名、命名空间)

文件“/home/saul/anaconda3/lib/python3.7/site packages/spyder_kernels/customize/spydercurustomize.py”,第110行,在execfile中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“/home/saul/pythonWork/textmessageAnalysis.py”,第51行,在 观测值=pm.Poisson(“obs”,lambda_,lambda_值=文本文件,观测值=真)

文件“/home/saul/.local/lib/python3.7/site packages/pymc3/distributions/distribution.py”,第31行,在新建 raise TypeError(“上下文堆栈上没有模型,这是需要的”

TypeError:上下文堆栈上没有模型,这是实例化分发版所需的。请在“with model:”块中添加变量,或对独立分发版使用“.dist”语法


我解决了这个问题。这个问题主要是因为PyMC3的性质与PyMC非常不同

更新的代码如下

n_data_points = size   
idx = np.arange(n_data_points)
with model:
    lambda_ = pm.math.switch(tau >= idx, lambda_1, lambda_2)            


with model:
    obs = pm.Poisson("obs", lambda_, observed=textfile)
print(obs.tag.test_value)

model = pm.Model([obs, lambda_1, lambda_2, tau])
print(model)

我解决了这个问题。这个问题主要是因为PyMC3的性质与PyMC非常不同

更新的代码如下

n_data_points = size   
idx = np.arange(n_data_points)
with model:
    lambda_ = pm.math.switch(tau >= idx, lambda_1, lambda_2)            


with model:
    obs = pm.Poisson("obs", lambda_, observed=textfile)
print(obs.tag.test_value)

model = pm.Model([obs, lambda_1, lambda_2, tau])
print(model)

您的模型不好,有太多的错误,无法在回答中简要说明。请尝试阅读一些PyMC3简介教程(例如)然后将您的模型基于那里的代码作为模板。谢谢您的回复。该模型非常简单,在PyMC中工作。问题是在PyMC3中,它会产生上述错误。我将阅读教程。但我认为有人遇到了相同的错误,可以帮我。可能只是复制粘贴错误,但行抛出了错误不像其他行那样缩进,这将使它不再位于
with
上下文中,这就是错误所说的。所有声明的
pm.RandomVariable
对象都需要附加到
pm.Model
,这是
with
上下文提供的。此外,您不需要另一个
pm.Model()
最后;和
观察到的
应该是你观察到的值,而不是
布尔值
。还有更多…你最好从一些有用的东西开始,然后用它来做。你的模型不好,有太多错误,无法在回答中简洁地解决所有这些错误。请尝试使用一些PyMC3 intro教程(例如)然后将您的模型基于那里的代码作为模板。谢谢您的回复。该模型非常简单,在PyMC中工作。问题是在PyMC3中,它会产生上述错误。我将阅读教程。但我认为有人遇到了相同的错误,可以帮我。可能只是复制粘贴错误,但行抛出了错误不像其他行那样缩进,这将使它不再位于
with
上下文中,这就是错误所说的。所有声明的
pm.RandomVariable
对象都需要附加到
pm.Model
,这是
with
上下文提供的。此外,您不需要另一个
pm.Model()
最后;和
观察值
应该是你的观察值,而不是
布尔值
。还有更多…你最好从有用的东西开始,然后再去玩。