diff --git a/posterior_database/models/info/earn_height.info.json b/posterior_database/models/info/earn_height.info.json index 344e740f..1d4456a6 100644 --- a/posterior_database/models/info/earn_height.info.json +++ b/posterior_database/models/info/earn_height.info.json @@ -11,6 +11,10 @@ "stan": { "model_code": "models/stan/earn_height.stan", "stan_version": ">=2.26.0" + }, + "pymc": { + "model_code": "models/pymc/earn_height.py", + "pymc_version": ">=5.16.2" } }, "references": "gelman2006data", diff --git a/posterior_database/models/pymc/earn_height.py b/posterior_database/models/pymc/earn_height.py new file mode 100644 index 00000000..45fb92d6 --- /dev/null +++ b/posterior_database/models/pymc/earn_height.py @@ -0,0 +1,23 @@ +import numpy as np +import pymc as pm + +def model(data): + + # Define PyMC Model + coords = { + 'obs_idx': np.arange(data["N"]), + 'feature': ['intercept', 'height'] + } + + with pm.Model(coords=coords) as earn_height: + N = pm.Data("N", data["N"]) + earn = pm.Data('earn', data['earn'], dims=['obs_idx']) + height = pm.Data('height', data['height'], dims=['obs_idx']) + + beta = pm.Flat('beta', dims=['feature']) + mu = beta[0] + beta[1] * height + + sigma = pm.HalfFlat('sigma') + earn_hat = pm.Normal('earn_hat', mu=mu, sigma=sigma, observed=earn, dims=['obs_idx']) + + return earn_height \ No newline at end of file