Esempio n. 1
0
        private double SolveByInterpolation(double x)
        {
            var prevX          = _population.GetDataPrior(x);
            var prevPercentile = Compute(prevX);

            var nextX          = _population.GetDataAfter(x);
            var nextPercentile = Compute(nextX);

            var y = LinearInterpolator.SolveForY(x, prevX, nextX, prevPercentile, nextPercentile);

            return(y);
        }
Esempio n. 2
0
        public double Calculate(double p)
        {
            var nSamples = _population.NumSamplesWithinP(p);

            if (nSamples == 0)
            {
                return(_population.Min);
            }

            var prevData = _population.GetDataOfSample(nSamples - 1);
            var nextData = _population.GetDataOfSample(nSamples);

            var prevProb = GetProbabilityThroughSamples(nSamples - 1);
            var nextProb = GetProbabilityThroughSamples(nSamples);

            var y = LinearInterpolator.SolveForY(p, prevProb, nextProb, prevData, nextData);

            return(y);
        }