| # stats/inference/likelihood.py | |
| import numpy as np | |
| def relative_log_likelihood( | |
| *, | |
| data, | |
| mu, | |
| sigma, | |
| sigma_hat, | |
| ): | |
| """ | |
| Relative log-likelihood for Normal model. | |
| ℓ(μ,σ) − ℓ(μ̂,σ̂) | |
| """ | |
| n = len(data) | |
| xbar = np.mean(data) | |
| return n * ( | |
| np.log(sigma_hat / sigma) | |
| + 0.5 * ( | |
| 1 | |
| - (np.mean(data**2) - 2 * mu * xbar + mu**2) / sigma**2 | |
| ) | |
| ) | |
| def relative_likelihood( | |
| *, | |
| data, | |
| mu, | |
| sigma, | |
| sigma_hat, | |
| ): | |
| return np.exp( | |
| relative_log_likelihood( | |
| data=data, | |
| mu=mu, | |
| sigma=sigma, | |
| sigma_hat=sigma_hat, | |
| ) | |
| ) | |