예제 #1
0
 internal void CheckGetQuantile(CanGetQuantile canGetQuantile, CanGetProbLessThan canGetProbLessThan, int minPercent = 0, int maxPercent = 100)
 {
     for (int i = minPercent; i < maxPercent; i++)
     {
         // probability = 1.0 is excluded
         double probability   = i / 100.0;
         double x             = canGetQuantile.GetQuantile(probability);
         double probLessThanX = canGetProbLessThan.GetProbLessThan(x);
         Assert.True(probLessThanX <= probability);
         double next             = MMath.NextDouble(x);
         double probLessThanNext = canGetProbLessThan.GetProbLessThan(next);
         Assert.True(probLessThanNext > probability);
     }
 }
예제 #2
0
        private void CheckProbLessThan(CanGetProbLessThan canGetProbLessThan, List <double> x, double maximumError)
        {
            x.Sort();
            var sortedData = new OuterQuantiles(x.ToArray());
            // check that quantiles match within the desired accuracy
            var    min        = MMath.Min(x);
            var    max        = MMath.Max(x);
            var    range      = max - min;
            var    margin     = range * 0.01;
            var    testPoints = EpTests.linspace(min - margin, max + margin, 100);
            double maxError   = 0;

            foreach (var testPoint in testPoints)
            {
                var trueRank = sortedData.GetProbLessThan(testPoint);
                var estRank  = canGetProbLessThan.GetProbLessThan(testPoint);
                var error    = System.Math.Abs(trueRank - estRank);
                maxError = System.Math.Max(maxError, error);
            }
            Console.WriteLine($"max rank error = {maxError}");
            Assert.True(maxError <= maximumError);
        }
예제 #3
0
파일: Factor.cs 프로젝트: kant2002/infer
 public static double ProbLessThan <T>(CanGetProbLessThan <T> canGetProbLessThan, T upperBound)
 {
     return(canGetProbLessThan.GetProbLessThan(upperBound));
 }
예제 #4
0
        /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="RatioGaussianOp"]/message_doc[@name="ProbabilityAverageConditional(Gaussian, CanGetQuantile{double}, Gaussian)"]/*'/>
        public static Gaussian ProbabilityAverageConditional(double quantile, CanGetQuantile <double> canGetQuantile)
        {
            CanGetProbLessThan <double> canGetProbLessThan = (CanGetProbLessThan <double>)canGetQuantile;

            return(Gaussian.PointMass(canGetProbLessThan.GetProbLessThan(quantile)));
        }