Source code for boulliau.regression

"""
These regression methods are modified from Rodrigo Luger's regression methods
in Everest: https://github.com/rodluger/everest
"""
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)
import numpy as np

__all__ = ['regression_coeffs', 'regression_model']


[docs]def regression_coeffs(X, Y, errors): """ Compute linear regression coefficients for basis vectors in the columns of matrix ``X``. Parameters ---------- X : `~numpy.ndarray` Design matrix of regressors Y : `~numpy.ndarray` Data to fit ``X`` to errors : `~numpy.ndarray` Uncertainties on each element of ``Y`` Returns ------- C : `~numpy.ndarray` Regression coefficients for each column of ``X`` """ K_inv = np.diag(1. / errors ** 2) A = np.dot(np.dot(X.T, K_inv), X) B = np.dot(np.dot(X.T, K_inv), Y) C = np.linalg.solve(A, B) return C
[docs]def regression_model(C, X): """ Compute linear regression model given the regression coefficients. Parameters ---------- C : `~numpy.ndarray` Regression coefficients for each column of ``X`` X : `~numpy.ndarray` Design matrix of regressors Returns ------- M : `~numpy.ndarray` """ return np.dot(C, X.T)