Open
Description
Code:
import numpy as np
import arviz as a
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# PyMC Imports
import pymc as pm4 # PyMC 4.0
# Aesara and Theano imports
import aesara.tensor as at # used by PyMC 4.0
import aesara
data = pd.read_csv(pm4.get_data("radon.csv"))
county_names = data.county.unique()
data["log_radon"] = data["log_radon"].astype(aasara.config.floatX)
county_idx, counties = pd.factorize(data.county)
coords = {
"county": counties,
"obs_id": np.arange(len(county_idx)),
}
def build_model(pm, **kwargs):
with pm.Model(coords=coords) as hierarchical_model:
mu_a = pm.Normal("mu_a", mu=0.0, sigma=10)
sigma_a = pm.HalfNormal("sigma_a", 5.0)
mu_b = pm.Normal("mu_b", mu=0.0, sigma=10)
sigma_b = pm.HalfNormal("sigma_b", 5.0)
a = pm.Normal("a", dims="county") * sigma_a + mu_a
b = pm.Normal("b", dims="county") * sigma_b + mu_b
eps = pm.HalfNormal("eps", 5.0)
radon_est = a[county_idx] + b[county_idx] * data.floor.values
radon_like = pm.Normal(
"radon_like", mu=radon_est, sigma=eps, observed=data.log_radon,
dims="obs_id"
)
return hierarchical_model
model_pymc4 = build_model(pm4)
with model_pymc4:
idata_pymc4 = pm4.sample()
Samples fine but displays warning:
/Users/twiecki/miniforge3/envs/pymc4b5/lib/python3.10/site-packages/scipy/stats/_continuous_distns.py:624: RuntimeWarning: overflow encountered in _beta_ppf
return _boost._beta_ppf(q, a, b)