Expand description
§watermill
watermill
is crate for Blazingly fast, generic and serializable online statistics.
§Quickstart
Let’s compute the online median and then serialize it:
use watermill::quantile::Quantile;
use watermill::stats::Univariate;
let data = vec![9., 7., 3., 2., 6., 1., 8., 5., 4.];
let mut running_median: Quantile<f64> = Quantile::new(0.5_f64).unwrap();
for x in data.iter() {
running_median.update(*x as f64); // update the current statistics
println!("The actual median value is: {}", running_median.get());
}
assert_eq!(running_median.get(), 5.0);
// Convert the statistic to a JSON string.
let serialized = serde_json::to_string(&running_median).unwrap();
// Convert the JSON string back to a statistic.
let deserialized: Quantile<f64> = serde_json::from_str(&serialized).unwrap();
§Installation
Add the following line to your cargo.toml
:
[dependencies]
watermill = "0.1.0"
§Statistics available
Statistics | Revertable ? |
---|---|
Mean | ✅ |
Variance | ✅ |
Sum | ✅ |
Min | ✅ |
Max | ✅ |
Count | ❌ |
Quantile | ✅ |
Peak to peak | ✅ |
Exponentially weighted mean | ❌ |
Exponentially weighted variance | ❌ |
Interquartile range | ✅ |
Kurtosis | ❌ |
Skewness | ❌ |
Covariance | ❌ |
§Inspiration
The stats
module of the river
library in Python
greatly inspired this crate.