Hi, I am new to pymc package. I come across the following tutorial:
The example is from: www.map.ox.ac.uk/media/PDF/Patil_et_al_2010.pdf ......... import pymc import numpy as np n = 5*np.ones(4,dtype=int) x = np.array([-.86,-.3,-.05,.73]) alpha = pymc.Normal('alpha',mu=0,tau=.01) beta = pymc.Normal('beta',mu=0,tau=.01) @pymc.deterministic def theta(a=alpha, b=beta): """theta = logit^{-1}(a+b)""" return pymc.invlogit(a+b*x) d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\ observed=True) ....... import pymc import pymc.Matplot import mymodel S = pymc.MCMC(mymodel, db='pickle') S.sample(iter=10000, burn=5000, thin=2) pymc.Matplot.plot(S) import matplotlib.pyplot as plt plt.show() /////// Through the above code runs and plots, I would like to know more detail about function theta. I have tried the following modified code: import pymc import numpy as np n = 5*np.ones(4,dtype=int) x = np.array([-.86,-.3,-.05,.73]) alpha = pymc.Normal('alpha',mu=0,tau=.01) beta = pymc.Normal('beta',mu=0,tau=.01) @pymc.deterministic def theta(a=alpha, b=beta): """theta = logit^{-1}(a+b)""" return pymc.invlogit(a+b*x) p=theta(alpha, beta) print 'p=', p ////////////// It has this error: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) C:\Users\rj\pyprj\pymc_mymodel0.py in <module>() 13 return pymc.invlogit(a+b*x) 14 ---> 15 p=theta(alpha, beta) 16 print 'p=', p C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\CommonDeterministics.pyc in __call__(self, *args, **kwargs) 989 {'self': self, 'args': args, 'kwargs': kwargs}, 990 trace=False, --> 991 plot=False) 992 Variable.__call__ = UnboundMethodType(__call__, None, Variable) 993 C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\PyMCObjects.pyc in __init__(self, eval, doc, name, parents, dtype, trace, cache_depth, plot, verbose, jacobians, jacobian_formats) 441 trace=trace, 442 plot=plot, --> 443 verbose=verbose) 444 445 # self._value.force_compute() C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\Node.pyc in __init__(self, doc, name, parents, cache_depth, trace, dtype, plot, verbose) 212 self.extended_children = set() 213 --> 214 Node.__init__(self, doc, name, parents, cache_depth, verbose=verbose) 215 216 if self.dtype is None: C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\Node.pyc in __init__(self, doc, name, parents, cache_depth, verbose) 127 128 # Initialize --> 129 self.parents = parents 130 131 def _get_parents(self): C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\Node.pyc in _set_parents(self, new_parents) 145 146 # Get new lazy function --> 147 self.gen_lazy_function() 148 149 parents = property( C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\PyMCObjects.pyc in gen_lazy_function(self) 452 cache_depth=self._cache_depth) 453 --> 454 self._value.force_compute() 455 456 self._jacobians = {} C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\LazyFunction.pyd in pymc.LazyFunction.LazyFunction.force_compute (pymc\LazyFunction.c:2409)() C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\pymc\CommonDeterministics.pyc in eval_fun(self, args, kwargs) 981 982 def eval_fun(self, args=args, kwargs=kwargs): --> 983 return self(*args, **kwargs) 984 return pm.Deterministic(eval_fun, 985 'A Deterministic returning the value of %s(*%s, **%s)' % ( TypeError: 'numpy.ndarray' object is not callable /////////////// >From function syntactically, it seems OK for this function calling(random variables alpha and beta as parameters of theta. p=theta(alpha, beta) Do you know what is wrong with my code and idea (call theta by my code, not a random model like: d = pymc.Binomial('d', n=n, p=theta, value=np.array([0.,1.,3.,5.]),\ observed=True) Thanks, -- https://mail.python.org/mailman/listinfo/python-list