diff --git a/src/compute/mod.rs b/src/compute/mod.rs index 6aa9b32..abe5eaf 100644 --- a/src/compute/mod.rs +++ b/src/compute/mod.rs @@ -1,3 +1,16 @@ +//! Algorithms and statistical utilities built on top of the core matrices. +//! +//! This module groups together machine‑learning models and statistical helper +//! functions. For quick access to basic statistics see [`stats`](crate::compute::stats), while +//! [`models`](crate::compute::models) contains small learning algorithms. +//! +//! ``` +//! use rustframe::compute::stats; +//! use rustframe::matrix::Matrix; +//! +//! let m = Matrix::from_vec(vec![1.0, 2.0, 3.0], 3, 1); +//! assert_eq!(stats::mean(&m), 2.0); +//! ``` pub mod models; pub mod stats; diff --git a/src/compute/stats/correlation.rs b/src/compute/stats/correlation.rs index ac9ee19..3e2aa9f 100644 --- a/src/compute/stats/correlation.rs +++ b/src/compute/stats/correlation.rs @@ -1,3 +1,16 @@ +//! Covariance and correlation helpers. +//! +//! This module provides routines for measuring the relationship between +//! columns or rows of matrices. +//! +//! ``` +//! use rustframe::compute::stats::correlation; +//! use rustframe::matrix::Matrix; +//! +//! let x = Matrix::from_vec(vec![1.0, 2.0, 3.0, 4.0], 2, 2); +//! let cov = correlation::covariance(&x, &x); +//! assert!((cov - 1.25).abs() < 1e-8); +//! ``` use crate::compute::stats::{mean, mean_horizontal, mean_vertical, stddev}; use crate::matrix::{Axis, Matrix, SeriesOps}; diff --git a/src/compute/stats/descriptive.rs b/src/compute/stats/descriptive.rs index 71510ff..686f195 100644 --- a/src/compute/stats/descriptive.rs +++ b/src/compute/stats/descriptive.rs @@ -1,3 +1,15 @@ +//! Descriptive statistics for matrices. +//! +//! Provides means, variances, medians and other aggregations computed either +//! across the whole matrix or along a specific axis. +//! +//! ``` +//! use rustframe::compute::stats::descriptive; +//! use rustframe::matrix::Matrix; +//! +//! let m = Matrix::from_vec(vec![1.0, 2.0, 3.0, 4.0], 2, 2); +//! assert_eq!(descriptive::mean(&m), 2.5); +//! ``` use crate::matrix::{Axis, Matrix, SeriesOps}; pub fn mean(x: &Matrix) -> f64 { diff --git a/src/compute/stats/distributions.rs b/src/compute/stats/distributions.rs index 63534d5..25fbdc1 100644 --- a/src/compute/stats/distributions.rs +++ b/src/compute/stats/distributions.rs @@ -1,3 +1,16 @@ +//! Probability distribution functions applied element-wise to matrices. +//! +//! Includes approximations for the normal, uniform and gamma distributions as +//! well as the error function. +//! +//! ``` +//! use rustframe::compute::stats::distributions; +//! use rustframe::matrix::Matrix; +//! +//! let x = Matrix::from_vec(vec![0.0], 1, 1); +//! let pdf = distributions::normal_pdf(x.clone(), 0.0, 1.0); +//! assert!((pdf.get(0,0) - 0.3989).abs() < 1e-3); +//! ``` use crate::matrix::{Matrix, SeriesOps}; use std::f64::consts::PI; diff --git a/src/compute/stats/inferential.rs b/src/compute/stats/inferential.rs index 8a6f28a..b635c37 100644 --- a/src/compute/stats/inferential.rs +++ b/src/compute/stats/inferential.rs @@ -1,3 +1,14 @@ +//! Basic inferential statistics such as t‑tests and chi‑square tests. +//! +//! ``` +//! use rustframe::compute::stats::inferential; +//! use rustframe::matrix::Matrix; +//! +//! let a = Matrix::from_vec(vec![1.0, 2.0], 2, 1); +//! let b = Matrix::from_vec(vec![1.1, 1.9], 2, 1); +//! let (t, _p) = inferential::t_test(&a, &b); +//! assert!(t.abs() < 1.0); +//! ``` use crate::matrix::{Matrix, SeriesOps}; use crate::compute::stats::{gamma_cdf, mean, sample_variance}; diff --git a/src/compute/stats/mod.rs b/src/compute/stats/mod.rs index ef7e420..405cf6c 100644 --- a/src/compute/stats/mod.rs +++ b/src/compute/stats/mod.rs @@ -1,3 +1,16 @@ +//! Statistical routines for matrices. +//! +//! Functions are grouped into submodules for descriptive statistics, +//! correlations, probability distributions and basic inferential tests. +//! +//! ``` +//! use rustframe::compute::stats; +//! use rustframe::matrix::Matrix; +//! +//! let m = Matrix::from_vec(vec![1.0, 2.0, 3.0, 4.0], 2, 2); +//! let cov = stats::covariance(&m, &m); +//! assert!((cov - 1.25).abs() < 1e-8); +//! ``` pub mod correlation; pub mod descriptive; pub mod distributions;