Improve quantile tests
This commit is contained in:
parent
0de183127e
commit
1e7a852862
|
@ -41,3 +41,4 @@ bencher = "0.1"
|
||||||
rand = "0.5"
|
rand = "0.5"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
streaming-stats = "0.2"
|
streaming-stats = "0.2"
|
||||||
|
quantiles = "0.7"
|
||||||
|
|
|
@ -3,8 +3,10 @@
|
||||||
extern crate average;
|
extern crate average;
|
||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
|
extern crate quantiles;
|
||||||
|
|
||||||
use average::{Estimate, Quantile};
|
use average::{Estimate, Quantile};
|
||||||
|
use quantiles::ckms::CKMS;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn few_observations() {
|
fn few_observations() {
|
||||||
|
@ -356,11 +358,31 @@ fn percentile_99_9() {
|
||||||
52., 5., 38., 27., 29., 21., 27., 24., 36., 3., 24., 19., 0., 20., 20., 27., 27., 33., 28.,
|
52., 5., 38., 27., 29., 21., 27., 24., 36., 3., 24., 19., 0., 20., 20., 27., 27., 33., 28.,
|
||||||
33., 34., 8., 37., 34., 37., 35., 40., 34., 37.];
|
33., 34., 8., 37., 34., 37., 35., 40., 34., 37.];
|
||||||
|
|
||||||
let mut quantile = Quantile::new(0.999);
|
const TOL: f64 = 0.0001;
|
||||||
|
const P: f64 = 0.999;
|
||||||
|
let mut quantile = Quantile::new(P);
|
||||||
|
let mut ckms = CKMS::new(TOL);
|
||||||
|
|
||||||
for &o in observations.iter() {
|
for &o in observations.iter() {
|
||||||
quantile.add(o);
|
quantile.add(o);
|
||||||
|
ckms.insert(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = quantile.quantile();
|
let q1 = quantile.quantile();
|
||||||
|
let (_, q2) = ckms.query(P).unwrap();
|
||||||
|
assert!((q1 - q2).abs() < 0.3, "{} vs. {}", q1, q2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn percentile_99() {
|
||||||
|
const TOL: f64 = 0.0001;
|
||||||
|
let mut q = Quantile::new(0.99);
|
||||||
|
for _ in 0..100 {
|
||||||
|
for i in 0..10 {
|
||||||
|
let f = f64::from(i);
|
||||||
|
q.add(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert!((q.quantile() - 9.).abs() < TOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue