Skip to main content

use_stats/
lib.rs

1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_average;
5pub use use_correlation;
6pub use use_distribution;
7pub use use_percentile;
8pub use use_standard_deviation;
9pub use use_variance;
10pub use use_z_score;
11
12pub mod prelude;
13
14#[cfg(test)]
15mod tests {
16    use super::prelude::{
17        arithmetic_mean, covariance, median, normalize, pearson_correlation,
18        population_standard_deviation, population_variance, quartiles, range, z_score,
19    };
20
21    #[test]
22    fn facade_exposes_common_statistics_helpers() {
23        let values = [2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0];
24        let x = [1.0, 2.0, 3.0, 4.0, 5.0];
25        let y = [2.0, 4.0, 6.0, 8.0, 10.0];
26
27        assert_eq!(arithmetic_mean(&values).expect("mean should compute"), 5.0);
28        assert_eq!(
29            population_variance(&values).expect("variance should compute"),
30            4.0
31        );
32        assert_eq!(
33            population_standard_deviation(&values).expect("standard deviation should compute"),
34            2.0
35        );
36        assert_eq!(median(&values).expect("median should compute"), 4.5);
37        assert_eq!(range(&values).expect("range should compute"), 7.0);
38        assert_eq!(covariance(&x, &y).expect("covariance should compute"), 4.0);
39        assert!(
40            (pearson_correlation(&x, &y).expect("correlation should compute") - 1.0).abs()
41                < 1.0e-12
42        );
43        assert_eq!(
44            z_score(80.0, 70.0, 5.0).expect("z-score should compute"),
45            2.0
46        );
47        assert_eq!(
48            normalize(&[1.0, 2.0, 3.0])
49                .expect("normalization should compute")
50                .len(),
51            3
52        );
53
54        let summary = quartiles(&values).expect("quartiles should compute");
55        assert_eq!(summary.lower, 4.0);
56        assert_eq!(summary.median, 4.5);
57        assert_eq!(summary.upper, 5.5);
58    }
59}