Source code for hierarc.Util.likelihood_util

import numpy as np
from scipy.stats import truncnorm


[docs] def log_likelihood_cov(data, model, cov_error): """Log likelihood of the data given a model. :param data: data vector :param model: model vector :param cov_error: inverse covariance matrix :return: log likelihood """ delta = data - model return -delta.dot(cov_error.dot(delta)) / 2.0
[docs] def cov_error_create(error_independent, error_covariance): """Generates an error covariance matrix from a set of independent uncertainties combined with a fully covariant term. :param error_independent: array of Gaussian 1-sigma uncertainties :param error_covariance: float, shared covariant error among all data points. So if all data points are off by 1-sigma, then the log likelihood is 1-sigma :return: error covariance matrix """ error_covariance_array = np.ones_like(error_independent) * error_covariance error = np.outer(error_covariance_array, error_covariance_array) + np.diag( error_independent**2 ) return np.linalg.inv(error)
[docs] def get_truncated_normal(mean=0, sd=1, low=0, upp=10, size=1): """ :param mean: mean of normal distribution :param sd: standard deviation :param low: lower bound :param upp: upper bound :return: float, draw of distribution """ return truncnorm((low - mean) / sd, (upp - mean) / sd, loc=mean, scale=sd).rvs(size)