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

标签 python bayesian pymc3 poisson

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

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

代码:

with pm.Model() as model:

    lambda_1 = pm.Exponential('lambda_1', alpha) # create stochastic    variable
    lambda_2 = pm.Exponential('lambda_2', alpha) #create stochastic variable

    tau = pm.DiscreteUniform("tau", lower=0, upper=size)
    print("Random output:", tau.random(), tau.random(), tau.random())


    def lambda_ (tau=tau, lambda_1 = lambda_1, lambda_2 = lambda_2):
       out = np.zeros(size)
       out[:tau] = lambda_1
       out[tau:] = lambda_2

       return out

   observation = pm.Poisson("obs", lambda_, lambda_value = textfile,    observed=True)

   model = pm.Model(observation, lambda_1, lambda_2, tau)

错误:

File "", line 1, in
runfile('/home/saul/pythonWork/textmessageAnalysis.py', wdir='/home/saul/pythonWork')

File "/home/saul/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 786, in runfile execfile(filename, namespace)

File "/home/saul/anaconda3/lib/python3.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace)

File "/home/saul/pythonWork/textmessageAnalysis.py", line 51, in observation = pm.Poisson("obs", lambda_, lambda_value = textfile, observed=True)

File "/home/saul/.local/lib/python3.7/site-packages/pymc3/distributions/distribution.py", line 31, in new raise TypeError("No model on context stack, which is needed to "

TypeError: No model on context stack, which is needed to instantiate distributions. Add variable inside a 'with model:' block, or use the '.dist' syntax for a standalone distribution.

最佳答案

我解决了这个问题。该问题主要是由于 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)

关于python - PyMC3 在 Possion 模型创建期间生成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002314/

相关文章:

python - 为什么Behavior 记录的与 Django 的手动集成不起作用?

jquery - 如何创建增量加载网页

python - Python 上的不规则字符串解析

algorithm - EM算法的贝叶斯信息准则计算

python - 如何在 PyMC3 中随时间更新观察结果?

python - 如何使用 theano.op 在 pymc3 中编写自定义确定性或随机性?

python - 将 PyMC3 traceplot 子图保存到图像文件

python - 如何在 matplotlib 中绘制半误差线?

nlp - 简单的情绪分析

python - PyMC3 高斯混合模型