Expand description
§normality
A Rust crate for assessing the normality of a data sample. It provides several common statistical tests to determine if a set of data is likely drawn from a normal distribution.
All test implementations are generic and can work with f32
or f64
data types. The implementations are ported from well-established algorithms found in popular R packages.
§Implemented Tests
- Shapiro-Wilk Test: One of the most powerful tests for normality.
- Lilliefors (Kolmogorov-Smirnov) Test: A modification of the K-S test for when population mean and variance are unknown.
- Anderson-Darling Test: Gives more weight to the tails of the distribution.
- Jarque-Bera Test: Tests whether the sample skewness and kurtosis match a normal distribution.
- Pearson Chi-squared Test: A goodness-of-fit test that compares observed and expected frequencies.
- Cramer-von Mises Test: An alternative EDF goodness-of-fit test.
- D’Agostino’s K-squared Test: Tests for normality based on sample skewness.
§Installation
Either run cargo add normality
or add the crate to your Cargo.toml
:
[dependencies]
normality = "1.0.0"
§Example Usage
use normality::{shapiro_wilk, Error};
fn main() -> Result<(), Error> {
// Sample data that is likely from a normal distribution
let data = vec![-1.1, -0.8, -0.5, -0.2, 0.0, 0.2, 0.5, 0.8, 1.1, 1.3];
// Perform the Shapiro-Wilk test
let result = shapiro_wilk(&data)?;
println!("Shapiro-Wilk Test Results:");
println!(" W-statistic: {:.4}", result.statistic);
println!(" p-value: {:.4}", result.p_value);
// Interpretation: A high p-value (e.g., > 0.05) suggests that the data
// does not significantly deviate from a normal distribution.
if result.p_value > 0.05 {
println!("Conclusion: The sample is likely from a normal distribution.");
} else {
println!("Conclusion: The sample is not likely from a normal distribution.");
}
Ok(())
}
§Accuracy
The accuracy of the implemented tests has been verified against their R equivalents. Running the integration tests for this crate requires a local installation of R and for the Rscript
executable to be available in the system’s PATH.
§License
This project is licensed under the MIT License.
Structs§
- Computation
- A generic data structure to hold the results of a normality test.
Enums§
- Error
- Represents errors that can occur during a normality test computation.
Traits§
- Float
- A convenience trait combining bounds frequently used for floating-point computations.
Functions§
- anderson_
darling - Performs the Anderson-Darling test for normality.
- dagostino_
k_ squared - Performs D’Agostino’s K-squared test for skewness to assess normality.
- jarque_
bera - Performs the Jarque-Bera test for normality.
- lilliefors
- Performs the Lilliefors (Kolmogorov-Smirnov) test for normality.
- pearson_
chi_ squared - Performs the Pearson chi-squared test for normality.
- shapiro_
wilk - Performs the Shapiro-Wilk test for normality on a given sample of data.