Get started¶
Installation¶
From source
$ git clone https://git.physics.byu.edu/yonatank/profile_likelihood.git
$ cd profile_likelihood
$ pip install -e . # Install the package
$ python -m pytest . # Run test
Basic usage¶
As an example, we want to run profile likelihood calculation to sum of exponential model
\[f\left(\vec{\theta}; t\right) = \exp(-\theta_1 t) + \exp(-\theta_2 t),\]
with t = [1.0, 1.2, 2.0]
and data y = [0.50, 0.40, 0.15]
.
import numpy as np
from profile_likelihood import profile_likelihood
tdata = np.array([1.0, 1.2, 2.0]).reshape((-1, 1)) # Sampling time
ydata = np.array([0.50, 0.40, 0.15]) # Mock data
def residuals(theta):
"""The function, representing the model, that will be used in the
optimization process. This function takes an array of parameter and return
an array of the residuals.
"""
pred = np.sum(np.exp(-theta * tdata), axis=1) # Model that gives predictions
return ydata - pred # Return the residual vector.
best_fit = np.array([1.0, 2.0]) # Best-fit parameter
nparams = len(best_fit) # Number of parameters
npred = 3 # Number of predictions
# Create likelihood object
likelihood = profile_likelihood(residuals, nparams, npred)
# Run computation
likelihood.compute(best_fit)
# Access results
likelihood.results
For more examples, see here.