Linear regression, with F-tests, AIC, and linear constraints.
Project description
Linear regression, with p-values and AIC for the full model, p-values per coefficient, and tests of linear constraints on regression coefficients. The formulas are based on Bingham & Fry.
The module uses only the modules numpy and math (built-in).
Basic usage
By default, do not add an explicit intercept to the predictors. The intercept will be appended as an additional predictor, unless the argument explicit_intercept is given and set to True (for if you want to define constraints involving the intercept).
Example, using simulated data:
import numpy as np
import teg_regression
nObs = 300
nPred = 5
fix_coeffs = {0: 1, 3: 2} # Set to empty dict to simulate the null model.
X, y = teg_regression.sim_data(nObs, nPred, fix_coeffs=fix_coeffs, fix_intercept=20)
O = teg_regression.run_regression(X, y)
The function returns a dictionary O with statistical values and prints out (unless report=False is set as an argument):
Test of the model:
F(5,294) = 0.849, p = 0.516
AIC constrained - free = -1.28e+03 (negative supports constraints).
Tests per coefficient.
Predictor 0: b = 0.00522, F(1,294) = 0.00842, p = 0.927
Predictor 1: b = 0.00324, F(1,294) = 0.00373, p = 0.951
Predictor 2: b = -0.0759, F(1,294) = 1.88, p = 0.172
Predictor 3: b = -0.093, F(1,294) = 2.69, p = 0.102
Predictor 4: b = 0.0182, F(1,294) = 0.115, p = 0.735
Intercept: b = 20.6, F(1,294) = 1.04e+05, p = 1.11e-16
Linear constraints
Linear constraints specify hypotheses in terms of weighted sums of the coefficients, to be tested against the free model. E.g., assuming we have four predictors, the matrix equation
[1 0 0 0] [0]
[0 1 0 0] * betas = [0]
[0 0 1 0] [0]
would constrain the first three predictors to be zero.
Similarly,
[1 -1 0 0] * betas = 0
Would constrain the first and second predictor to be equal.
The Constraints argument, specifying the desired hypothesis, is a dictionary with the "coefficients" matrix, as a 2D array, and the "constants" vector, also as an array. The example below shows the Constraints setup to set two specific predictor-coefficients to 0.
pred_to_test = [1, 2]
Constraints = {}
Constraints['coefficients'] = np.array([[0 for a in range(X.shape[1])] for newrow in range(2)]).reshape(2, X.shape[1])
Constraints['coefficients'][0][pred_to_test[0]] = 1
Constraints['coefficients'][1][pred_to_test[1]] = 1
Constraints['constants'] = np.array([0, 0])
O = teg_regression.run_regression(X, y, Constraints)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for teg_regression-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bbef5d0811d67befd43dcfab6aa59ca18a90c6dc4f91295e36dbbccb67a6b41 |
|
MD5 | 4905b166751a93b3fdc242132d17dcbf |
|
BLAKE2b-256 | 11c7a4e3ac4d73f8054f2b8efe1642ae38bab4f13bdfc57b430c2ba51564eb72 |