Profile Likelihood
Profile likelihood toolbox
Installation
Using pip
pip install profile_likelihood
From source
git clone https://git.physics.byu.edu/yonatank/profile_likelihood.git
pip install ./profile_likelihood # Install the package
Theory
In the problem of fitting a theoretical model
$f\left(t_m, \vec{\theta}\right)$ to the $M$ experimentally
determined data points $y_m$ at times $t_m$, by assuming that the
experimental errors for the data points are independent and Gaussian
distributed with standard deviation of $\sigma$, the probability
that a given model produced the observed data points is
P\left(\vec{y}\middle|\vec{\theta}\right) =
\prod_{m=1}^N \frac{1}{\sqrt{2\pi}\sigma}
e^{-\left(f(t_m,\vec{\theta}) - y_m\right)^2/2\sigma^2}.
The likelihood function of this model,
$L\left(\vec{\theta}\middle|\vec{y}\right)$, is the probability of
the occurrence of the outcomes $\vec{y}$ given a set of parameters
$\vec{\theta}$ of the model,
$P\left(\vec{y}\middle|\vec{\theta}\right)$. Using the equation
above, we can write
L\left(\vec{\theta}\middle|\vec{y}\right) \propto
\exp\left[ -C\left(\vec{\theta}\right) \right],
where $C\left(\vec{\theta}\right)$ is the cost function, given by
C\left(\vec{\theta}\right) = \frac{1}{2} \sum_m
\left(\frac{y_m - f\left(t_m, \vec{\theta}\right)}
{\sigma_m} \right)^2
Suppose the model $f\left(t_m, \vec{\theta}\right)$ has $N$
parameters, written as $\{ \theta_0, \cdots, \theta_{N-1} \}$. The
profile likelihood of the model for parameter $\theta_j$ is the
possible maximum likelihood given the parameter $\theta_j$. The
profile likelihood for parameter $\theta_j$ is calculated by setting
$\theta_j$ to a fixed value, then maximizing the likelihood function
(by minimizing the cost function) over the other parameters of the
model. We repeat this computation across a range of $\theta_j$,
$\left(\theta_j^{\min}, \theta_j^{\max}\right)$.
Basic usage
As an example, we want to run profile likelihood calculation to sum of exponential model
f(\vec{\phi}; t) = \exp(-\phi_0*t) + \exp(-\phi_1*t),
with t = [0.5, 1.1, 3.0] and data y = [1.089, 0.717, 0.332].
We further want to constrain the parameters to be positive, which suggest to
work with $\theta = \log{\phi}$ instead.
import numpy as np
from profile_likelihood import profile_likelihood
tdata = np.array([0.5, 1.1, 3.0]).reshape((-1, 1)) # Sampling time
ydata = np.array([1.089, 0.717, 0.332]) # 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.
"""
phi = np.exp(theta) # Undo the log transformation
pred = np.sum(np.exp(-phi * tdata), axis=1) # Model that gives predictions
return ydata - pred # Return the residual vector.
best_fit = np.array([-1.0, 1.0]) # Best-fit parameter
nparams = len(best_fit) # Number of parameters
npred = 3 # Number of predictions
# Create likelihood object
pl = profile_likelihood(residuals, nparams, npred)
# Run computation
pl.compute(best_fit)
# Access results
pl.results
For more examples, see here.
List of frequently used methods
- profile_likelihood.compute
- profile_likelihood.save_results
- profile_likelihood.save_best_results
- profile_likelihood.load_results
- profile_likelihood.plot_likelihoods
- profile_likelihood.plot_paths
- profile_likelihood.plot_likelihoods_and_paths
Contact
Yonatan Kurniawan (kurniawanyo@outlook.com)
Metadata
Release files for profile-likelihood 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| profile_likelihood-0.6.1.tar.gz | 9.3 MB | Without provenance | Details |
Release files / profile_likelihood-0.6.1.tar.gz
| Download URL | profile_likelihood-0.6.1.tar.gz |
|---|---|
| Size | 9.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d039c7a1b59dc3156d965e8c11477a75797c0655e284b47a8b60f687d70ab2f4
|
|
BLAKE2b-256 checksum How to use checksums |
c371ccb44c5568a32f495348815f9c5c20319120bf61b99e3d5eef3ddde64d0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.47.0 importlib-metadata/3.10.0 keyring/17.0.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.4
|
Security for profile-likelihood 0.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.