Accord.Statistics.Distributions.Univariate.LevyDistribution.InverseDistributionFunction C# (CSharp) Méthode

InverseDistributionFunction() public méthode

Gets the inverse of the cumulative distribution function (icdf) for this distribution evaluated at probability p. This function is also known as the Quantile function.
The Inverse Cumulative Distribution Function (ICDF) specifies, for a given probability, the value which the random variable will be at, or below, with that probability.
public InverseDistributionFunction ( double p ) : double
p double A probability value between 0 and 1.
Résultat double
        public override double InverseDistributionFunction(double p)
        {
            double a = Normal.Inverse(1.0 - p / 2.0);
            double icdf = location + scale / (a * a);

#if DEBUG
            double baseValue = base.InverseDistributionFunction(p);
            if (!baseValue.IsEqual(icdf, 1e-5))
                throw new Exception();
#endif

            return icdf;
        }

Usage Example

        public void ConstructorTest()
        {
            var levy = new LevyDistribution(location: 1, scale: 4.2);

            double mean = levy.Mean;     // +inf
            double median = levy.Median; // 10.232059220934481
            double mode = levy.Mode;     // NaN
            double var = levy.Variance;  // +inf

            double cdf = levy.DistributionFunction(x: 1.4); // 0.0011937454448720029
            double pdf = levy.ProbabilityDensityFunction(x: 1.4); // 0.016958939623898304
            double lpdf = levy.LogProbabilityDensityFunction(x: 1.4); // -4.0769601727487803

            double ccdf = levy.ComplementaryDistributionFunction(x: 1.4); // 0.99880625455512795
            double icdf = levy.InverseDistributionFunction(p: cdf); // 1.3999999

            double hf = levy.HazardFunction(x: 1.4); // 0.016979208476674869
            double chf = levy.CumulativeHazardFunction(x: 1.4); // 0.0011944585265140923

            string str = levy.ToString(CultureInfo.InvariantCulture); // Lévy(x; μ = 1, c = 4.2)

            // Tested against GNU R's rmutils package
            //
            // dlevy(1.4, m=1, s=4.2)
            // [1] 0.016958939623898303811
            //
            // plevy(1.4, m=1, s=4.2)
            // [1] 0.0011937454448720519196


            Assert.AreEqual(Double.PositiveInfinity, mean);
            Assert.AreEqual(10.232059220934481, median);
            Assert.IsTrue(Double.IsNaN(mode));
            Assert.AreEqual(Double.PositiveInfinity, var);
            Assert.AreEqual(0.0011944585265140923, chf);
            Assert.AreEqual(0.0011937454448720519196, cdf, 1e-10); // R
            Assert.AreEqual(0.016958939623898303811, pdf, 1e-10); // R
            Assert.AreEqual(-4.0769601727487803, lpdf);
            Assert.AreEqual(0.016979208476674869, hf);
            Assert.AreEqual(0.99880625455512795, ccdf);
            Assert.AreEqual(1.4, icdf, 1e-6);
            Assert.AreEqual("Lévy(x; μ = 1, c = 4.2)", str);

            double p = levy.DistributionFunction(levy.Median);
            Assert.AreEqual(0.5, p, 1e-10);
            Assert.IsFalse(Double.IsNaN(p));

            var range1 = levy.GetRange(0.95);
            var range2 = levy.GetRange(0.99);
            var range3 = levy.GetRange(0.01);

            Assert.AreEqual(2.0933346408334241, range1.Min);
            Assert.AreEqual(1069.1206671123464, range1.Max);
            Assert.AreEqual(1.6330166470647871, range2.Min);
            Assert.AreEqual(26737.630417446126, range2.Max);
            Assert.AreEqual(1.6330166470647871, range3.Min);
            Assert.AreEqual(26737.630417446126, range3.Max);
        }
All Usage Examples Of Accord.Statistics.Distributions.Univariate.LevyDistribution::InverseDistributionFunction