I’m trying to recreate the serial dilution example in Chapter 19.1 of BDA3. I’ve included the data here. My initial setup ignores the dilution error. I just want to get a model running at this point.
The setup is straight forward (I believe) with most parameters having a flat or half flat prior. I’m having trouble expressing the mean and variance in a way consistent with the pymc3 API. Here is what I have done so far:
import pandas as pd
import numpy as np
import pymc3 as pm
df = pd.read_csv('dilution_data.csv')
y = df.concentration.values
x = df.dilution.values
with pm.Model() as model:
beta = pm.HalfFlat('beta', shape = 4)
alpha = pm.Uniform('alpha',0,1)
sigma = pm.HalfFlat('sigma')
g = beta[0] + beta[1]/(1+(x/beta[2])**beta[3])
Y = pm.Normal('y',mu =g ,sd = (g/30)**(2*alpha)*sigma, observed = y)
trace = pm.sample(2000, tune = 1000)
I am thrown the following error
MissingInputError: Input 0 of the graph (indices start from 0), used to compute Elemwise{exp,no_inplace}(beta_log__), was not provided and not given a value. Use the Theano flag exception_verbosity='high', for more information on this error.
A couple of questions:
-
Have I set up the model correctly? Probably not because I am thrown an error.
-
What is causing the error?
Thanks