#linear-regression #regression #statistics #ols

linregress

ordinary least squared linear regression with some basic statistics

21 releases

0.5.4 Oct 11, 2024
0.5.3 Aug 29, 2023
0.5.2 Jul 4, 2023
0.5.1 Feb 4, 2023
0.1.3 Mar 24, 2019

#13 in Machine learning

Download history 37843/week @ 2024-07-30 47029/week @ 2024-08-06 51503/week @ 2024-08-13 41007/week @ 2024-08-20 50885/week @ 2024-08-27 55727/week @ 2024-09-03 49326/week @ 2024-09-10 48668/week @ 2024-09-17 50432/week @ 2024-09-24 53324/week @ 2024-10-01 49048/week @ 2024-10-08 52883/week @ 2024-10-15 52477/week @ 2024-10-22 48119/week @ 2024-10-29 57563/week @ 2024-11-05 36818/week @ 2024-11-12

207,643 downloads per month
Used in 298 crates (5 directly)

MIT license

77KB
1.5K SLoC

linregress

A Rust library providing an easy to use implementation of ordinary least squared linear regression with some basic statistics.

Documentation

Full API documentation

License

This project is licensed under the MIT License. See LICENSE for details.


lib.rs:

linregress provides an easy to use implementation of ordinary least squared linear regression with some basic statistics. See RegressionModel for details.

The builder FormulaRegressionBuilder is used to construct a model from a table of data and an R-style formula or a list of columns to use. Currently only very simple formulae are supported, see FormulaRegressionBuilder.formula for details.

Example

use linregress::{FormulaRegressionBuilder, RegressionDataBuilder};

let y = vec![1., 2. ,3. , 4., 5.];
let x1 = vec![5., 4., 3., 2., 1.];
let x2 = vec![729.53, 439.0367, 42.054, 1., 0.];
let x3 = vec![258.589, 616.297, 215.061, 498.361, 0.];
let data = vec![("Y", y), ("X1", x1), ("X2", x2), ("X3", x3)];
let data = RegressionDataBuilder::new().build_from(data)?;
let formula = "Y ~ X1 + X2 + X3";
let model = FormulaRegressionBuilder::new()
.data(&data)
.formula(formula)
.fit()?;
let parameters: Vec<_> = model.iter_parameter_pairs().collect();
let pvalues: Vec<_> = model.iter_p_value_pairs().collect();
let standard_errors: Vec<_> = model.iter_se_pairs().collect();
assert_eq!(
parameters,
vec![
("X1", -1.0000000000000004),
("X2", 1.5508427875232655e-15),
("X3", -1.4502288259166107e-15),
]
);
assert_eq!(
standard_errors,
vec![
("X1", 9.22799842631787e-13),
("X2", 4.184801029355531e-15),
("X3", 2.5552590991720465e-15),
]
);
assert_eq!(
pvalues,
vec![
("X1", 5.874726257570879e-13),
("X2", 0.7740647742008093),
("X3", 0.6713674042015161),
]
);

Dependencies

~4.5MB
~90K SLoC