code: def glm_hierarchical_model(random_seed=123):
      """Sample glm hierarchical model to use in benchmarks"""
      np.random.seed(random_seed)
      data = pd.read_csv(pm.get_data("radon.csv"))
      data["log_radon"] = data["log_radon"].astype(
          pytensor.config.floatX
      )
      county_idx = data.county_code.values
  
      n_counties = len(data.county.unique())
      with pm.Model() as model:
          mu_a = pm.Normal("mu_a", mu=0.0, sigma=100**2)
          sigma_a = pm.HalfCauchy("sigma_a", 5)
          mu_b = pm.Normal("mu_b", mu=0.0, sigma=100**2)
          sigma_b = pm.HalfCauchy("sigma_b", 5)
          a = pm.Normal("a", mu=0, sigma=1, shape=n_counties)
          b = pm.Normal("b", mu=0, sigma=1, shape=n_counties)
          a = mu_a + sigma_a * a
          b = mu_b + sigma_b * b
          eps = pm.HalfCauchy("eps", 5)
          radon_est = a[county_idx] + b[county_idx] * data.floor.values
          pm.Normal(
              "radon_like",
              mu=radon_est,
              sigma=eps,
              observed=data.log_radon,
          )
      return model
  
imports: import time
  import timeit
  import arviz
  import numpy
  import pandas
  import pytensor
  import pytensor.tensor
  import pymc
label_desc: Use image node_id 1 for calling a global function with example usage: glm_hierarchical_model(random_seed) and returns: model