I have a large function of several random variables (ep1,ep2,d,s1,l1,s2,l2), which produces as an output a vector like,
a lot of code
return np.asarray([s0s, s0s, s0s, emi])
Then I implement it in the PyMC3 framework,
def f(ep1 = ep1, ep2 = ep2, d = d, s1 = s1, l1 = l1,s2 = s2, l2 = l2):
This function works properly like this,
f(ep1 = 2, ep2 = 4, d = 0.025, s1 = 0.002, l1 = 0.02,s2 = 0.002, l2 = 0.02)
returning an array([-14.25180297, -1.17028161, -2.21212258, 0.96023043]) as output.
But when I try to define the Deterministic function as,
function_pm = pm.Deterministic(‘s0f’, f())
I get this error,
ValueError Traceback (most recent call last)
1 with model:
----> 2 function_pm = pm.Deterministic(‘s0f’, f())
~\miniconda3\envs\bayes\lib\site-packages\pymc3\model.py in Deterministic(name, var, model)
1596 model = modelcontext(model)
→ 1597 var = var.copy(model.name_for(name))
ValueError: order must be one of ‘C’, ‘F’, ‘A’, or ‘K’ (got ‘s0f’)
There is clearly something wrong, since it is assuming that the ValueOrder is the function name.
The funny thing is that if I just return the last element (‘emi’) or the vector ‘s0s’ there is no error. So, the error is in the stacking of s0s and emi. I tried concatenate, hstack, stack and append from numpy, and I also tried some theano equivalents. Nothing seem to work.