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
File details
Details for the file teg_regression-0.1.0.tar.gz
.
File metadata
- Download URL: teg_regression-0.1.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74b169f8341f04aaaa57ab8713ababe92e859ebf6951a938d55d1395212a9985 |
|
MD5 | a495782c2647fe1bc8077325f6665026 |
|
BLAKE2b-256 | 0f64bb4190c6903b4030ecba255b4849edaf0c0a9c370b42d3c99cd0f9fbcc1c |
File details
Details for the file teg_regression-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: teg_regression-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85f22a967a1168afbef865e4ae5f0be9d10691825a8bacd400c0329299291eac |
|
MD5 | ea0a2a14a44434b5afcc0fd148019247 |
|
BLAKE2b-256 | fdeef18f0de17dad36a72af994804a4a8088a4d5a2726873f2d1a08bc5178a2b |