我查看了以下链接,但没有一个提供我正在寻找的解决方案
https://github.com/pymc-devs/pymc/issues/125
我必须编写一个函数,它给定先验(和其他东西,如数据等)返回一个 pymc 模型。例如
m = pym.Model([fittable_params.values(), rv])
return m
而在调用函数中,当我这样做时,mcmc = pymc.MCMC(model)
它给出了一个很长的错误
Traceback (most recent call last):
File "model_constructor.py", line 81, in <module>
mcmc = pm.MCMC(model)
File "/usr/local/lib/python2.7/dist-packages/pymc-2.3.2-py2.7-linux-i686.egg/pymc/MCMC.py", line 81, in __init__
**kwds)
File "/usr/local/lib/python2.7/dist-packages/pymc-2.3.2-py2.7-linux-i686.egg/pymc/Model.py", line 195, in __init__
Model.__init__(self, input, name, verbose)
File "/usr/local/lib/python2.7/dist-packages/pymc-2.3.2-py2.7-linux-i686.egg/pymc/Model.py", line 98, in __init__
ObjectContainer.__init__(self, input)
File "/usr/local/lib/python2.7/dist-packages/pymc-2.3.2-py2.7-linux-i686.egg/pymc/Container.py", line 605, in __init__
conservative_update(self, input_to_file)
File "/usr/local/lib/python2.7/dist-packages/pymc-2.3.2-py2.7-linux-i686.egg/pymc/Container.py", line 548, in conservative_update
if not hasattr(obj, k):
TypeError: hasattr(): attribute name must be string
另一方面,如果在函数中(返回模型),如果我这样做
m = pm.MCMC([fittable_params.values(), rv])
它运行良好,但该函数应该返回一个模型,以便用户可以在代码的其他部分对模型做任何他想做的事情。