 # Complete the PyMC model definition within the 'with pm.Model() as m:' block below. Your output must define a complete Bayesian model with appropriate priors, likelihood, and then sample the posterior using, `pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})`. Do not include any extra commentary or text outside the code. Follow best practices for expert-level Bayesian modeling.
    
# Description: A hierarchical model for the 8-schools data.

    
import pymc as pm
import numpy as np
import arviz as az
import matplotlib.pyplot as plt

# Data
y = np.array([28, 8, -3, 7, -1, 1, 18, 12])
sigma = np.array([15, 10, 16, 11, 9, 11, 10, 18])

with pm.Model() as m:
    
    