Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }