hypors 0.2.2

Hypothesis Testing with Polars
Documentation
# HypoRS: A Statistical Hypothesis Testing Library


`hypors` is a Rust library designed for performing a variety of hypothesis tests, including t-tests, z-tests, proportion tests, ANOVA, Chi-square tests, and Mann-Whitney tests. This library leverages the `polars` crate for efficient data manipulation and the `statrs` crate for statistical distributions.

Rust Crate: https://crates.io/crates/hypors

PyPI Package: Work in Progress

## Features


### Hypothesis Tests


Hypothesis testing is available for this suite of common distributions.

- **T-Tests**: One-sample, two-sample paired, and two-sample independent t-tests.
- **Z-Tests**: One-sample, two-sample paired, and two-sample independent z-tests.
- **Proportion Tests**: One-sample and two-sample proportion tests.
- **ANOVA**: One-way ANOVA for comparing means across multiple groups.
- **Chi-Square Tests**: Chi-square test for independence and goodness-of-fit tests.
- **Mann-Whitney U Test**: Non-parametric test for comparing two independent samples.

### Sample Size Calculation


All parametrized distributions have respective modules to calculate minimum sample size required with customizable parameters for alpha and statistical power.


### **Additional Features**:

  - Customizable tail type (left, right, and two-tailed).
  - Customizable alpha value for all tests.
  - Confidence interval calculations for all tests.
  - p-value is generated along with each statistic.
  - Null and alternate hypotheses strings are also generated.

## Installation


To use this library in your Rust project, add the following to your `Cargo.toml`:

```toml
[dependencies]
hypors = "0.2.2" 
serde = "1.0.210"
statrs = "0.17.1"
polars = "0.43.1"
```

## Example Usage


### Rust


Here are some examples of running tests with Rust.

#### T - Test


```rust
use polars::prelude::*;
use hypors::{t::t_test, common::TailType};

let data = Series::new("sample", &[1.2, 2.3, 1.9, 2.5, 2.8]);
let population_mean = 2.0;
let tail = TailType::Two;
let alpha = 0.05;

let result = t_test(&data, population_mean, tail, alpha).unwrap();
println!("Test Statistic: {}", result.test_statistic);
println!("p-value: {}", result.p_value);
println!("Confidence Interval: {}", result.confidence_interval);
println!("Null Hypothesis: {}", result.null_hypothesis);
println!("Alternate Hypothesis: {}", result.alt_hypothesis);
println!("Reject Null Hypothesis?: {}", result.reject_null);
```

#### Chi Square Test


```rust
use polars::prelude::*;
use hypors::{chi_square::independence};

let observed = vec![10, 20, 30]; // Observed frequencies
let expected = vec![15, 15, 30]; // Expected frequencies

let result = independece(&observed, &expected).unwrap();
println!("Chi-Square Statistic: {}", result.test_statistic);
println!("p-value: {}", result.p_value);
println!("Null Hypothesis: {}", result.null_hypothesis);
println!("Alternate Hypothesis: {}", result.alt_hypothesis);
println!("Reject Null Hypothesis?: {}", result.reject_null);
```

### Python


Work in Progress

## Future Plans


The next step for `hypors` is to add Python bindings to make it accessible to the Python community. This work is currently in progress. Stay tuned for updates!

## Contributing

Contributions are always welcome! If you have suggestions for improvements, bug fixes, or new features, please feel free to open an issue or submit a pull request.

## License

This project is licensed under the MIT License.