import pymc3 as pm import numpy as np import matplotlib.pyplot as plt %load_ext autoreload %autoreload 2 %matplotlib inline %config InlineBackend.figure_format = 'retina'
# Data k_known = 30 theta_known = 5 alpha_known = k_known beta_known = 1 / theta_known data_sample_size = 5 data = np.random.gamma(shape=k_known, scale=theta_known, size=data_sample_size) data
full_distribution = np.random.gamma(k_known, theta_known, size=10000) plt.hist(full_distribution)
with pm.Model() as buck_problem: k = pm.HalfCauchy("k", 100 ** 2) # theta = pm.HalfCauchy('theta', 100**2) beta = pm.HalfCauchy("beta", 100 ** 2) likelihood = pm.Gamma("like", alpha=k, beta=beta, observed=data) theta = pm.Deterministic("theta", 1 / beta)
with buck_problem: trace = pm.sample(10000)
with buck_problem: pm.traceplot(trace[1000:])
with buck_problem: pm.plot_posterior(trace[1000:])
plt.scatter(trace["k"], trace["theta"])
import seaborn as sns
sns.jointplot(trace["k"], trace["theta"])