pub fn ecdf(data: &[f64]) -> Option<(Vec<f64>, Vec<f64>)>Expand description
A point on the empirical CDF.
Computes the ECDF: F_n(x) = (number of observations ≤ x) / n.
§Returns
Tuple of (sorted unique values, cumulative probabilities). Returns
None if the data is empty or contains non-finite values.
§Examples
use u_analytics::distribution::ecdf;
let data = [3.0, 1.0, 2.0, 1.0, 4.0];
let (vals, probs) = ecdf(&data).unwrap();
assert_eq!(vals, vec![1.0, 2.0, 3.0, 4.0]);
assert!((probs[0] - 0.4).abs() < 1e-10); // 2 values ≤ 1.0
assert!((probs[3] - 1.0).abs() < 1e-10);