public void QuantileEstimator_DoubleDuplicationTest2() { var data = new double[] { 0.16659357378138889, // 0 0.70210023978217528, // 0.25 0.70210023978217528, // 0.5 0.70319732172768734, // 0.75 0.70319732172768734 // 1 }; var est = new QuantileEstimator(0.01); est.AddRange(data); Assert.Equal(data[4], est.GetQuantile(0.76)); Assert.Equal(data[2], est.GetQuantile(0.3)); CheckGetQuantile(est, est); var outer = new OuterQuantiles(data); Assert.Equal(data[4], outer.GetQuantile(0.76)); Assert.Equal(data[2], outer.GetQuantile(0.3)); CheckGetQuantile(outer, outer); var inner = InnerQuantiles.FromDistribution(7, outer); CheckGetQuantile(inner, inner, (int)Math.Ceiling(100.0 / 8), (int)Math.Floor(100.0 * 7 / 8)); }
public void QuantileEstimator_DuplicationTest() { double middle = 3.4; double[] x = { 1.2, middle, middle, middle, 5.6 }; var outer = new OuterQuantiles(x); Assert.Equal(0.25, outer.GetProbLessThan(middle)); Assert.Equal(outer.GetQuantile(0.3), middle); Assert.Equal(outer.GetQuantile(0.5), middle); Assert.Equal(outer.GetQuantile(0.7), middle); CheckGetQuantile(outer, outer); var inner = InnerQuantiles.FromDistribution(7, outer); Assert.Equal(0.25, inner.GetProbLessThan(middle)); Assert.Equal(outer.GetQuantile(0.3), middle); Assert.Equal(outer.GetQuantile(0.5), middle); Assert.Equal(outer.GetQuantile(0.7), middle); CheckGetQuantile(inner, inner, (int)Math.Ceiling(100.0 / 8), (int)Math.Floor(100.0 * 7 / 8)); var est = new QuantileEstimator(0.01); est.AddRange(x); Assert.Equal(est.GetQuantile(0.3), middle); Assert.Equal(est.GetQuantile(0.5), middle); // InterpolationType==1 returns NextDouble(middle) Assert.Equal(est.GetQuantile(0.7), middle, 1e-15); CheckGetQuantile(est, est); }
public void QuantileEstimator_DuplicationTest() { double middle = 3.4; double[] x = { 1.2, middle, middle, middle, 5.6 }; var outer = new OuterQuantiles(x); Assert.Equal(0.25, outer.GetProbLessThan(middle)); Assert.Equal(outer.GetQuantile(0.3), middle); Assert.Equal(outer.GetQuantile(0.5), middle); Assert.Equal(outer.GetQuantile(0.7), middle); CheckGetQuantile(outer, outer); var inner = new InnerQuantiles(7, outer); Assert.Equal(0.25, inner.GetProbLessThan(middle)); Assert.Equal(outer.GetQuantile(0.3), middle); Assert.Equal(outer.GetQuantile(0.5), middle); Assert.Equal(outer.GetQuantile(0.7), middle); CheckGetQuantile(inner, inner, 100 / 8, 100 * 7 / 8); var est = new QuantileEstimator(0.01); est.AddRange(x); Assert.Equal(0.25, est.GetProbLessThan(middle)); Assert.Equal(est.GetQuantile(0.3), middle); Assert.Equal(est.GetQuantile(0.5), middle); Assert.Equal(est.GetQuantile(0.7), middle); CheckGetQuantile(est, est); }
public void QuantileEstimator_MedianTest() { double middle = 3.4; double[] x = { 1.2, middle, 5.6 }; var outer = new OuterQuantiles(x); Assert.Equal(outer.GetQuantile(0.5), middle); var inner = new InnerQuantiles(3, outer); Assert.Equal(inner.GetQuantile(0.5), middle); var est = new QuantileEstimator(0.01); est.AddRange(x); Assert.Equal(est.GetQuantile(0.5), middle); }
public void QuantileEstimator_MedianTest() { double left = 1.2; double middle = 3.4; double right = 5.6; double[] x = { left, middle, right }; var outer = new OuterQuantiles(x); Assert.Equal(middle, outer.GetQuantile(0.5)); var inner = InnerQuantiles.FromDistribution(3, outer); Assert.Equal(middle, inner.GetQuantile(0.5)); inner = new InnerQuantiles(x); CheckGetQuantile(inner, inner, 25, 75); var est = new QuantileEstimator(0.01); est.AddRange(x); Assert.Equal(est.GetQuantile(0.5), middle); }