Accord.Statistics.Distributions.Univariate.LogLogisticDistribution.DistributionFunction C# (CSharp) Method

DistributionFunction() public method

Gets the cumulative distribution function (cdf) for this distribution evaluated at point x.
public DistributionFunction ( double x ) : double
x double A single point in the distribution range.
return double
        public override double DistributionFunction(double x)
        {
            if (x < 0)
                return 0;

            double xb = Math.Pow(x, beta);
            double ab = Math.Pow(alpha, beta);

            return xb / (ab + xb);
        }

Usage Example

        public void ConstructorTest1()
        {
            var log = new LogLogisticDistribution(alpha: 0.42, beta: 2.2);

            double mean = log.Mean;     // 0.60592605102976937
            double median = log.Median; // 0.42
            double mode = log.Mode;     // 0.26892249963239817
            double var = log.Variance;  // 1.4357858982592435

            double cdf = log.DistributionFunction(x: 1.4); // 0.93393329906725353
            double pdf = log.ProbabilityDensityFunction(x: 1.4); // 0.096960115938100763
            double lpdf = log.LogProbabilityDensityFunction(x: 1.4); // -2.3334555609306102

            double ccdf = log.ComplementaryDistributionFunction(x: 1.4); // 0.066066700932746525
            double icdf = log.InverseDistributionFunction(p: cdf); // 1.4000000000000006

            double hf = log.HazardFunction(x: 1.4); // 1.4676094699628273
            double chf = log.CumulativeHazardFunction(x: 1.4); // 2.7170904270953637

            string str = log.ToString(CultureInfo.InvariantCulture); // LogLogistic(x; α = 0.42, β = 2.2)

            // Tested against R's package VGAM:
            // http://www.inside-r.org/packages/cran/VGAM/docs/Fisk

            // dfisk(x=1.4, shape = 2.2, scale = 0.42)
            // [1] 0.096960115938100735478

            // pfisk(1.4, shape = 2.2, scale = 0.42)
            // [1] 0.93393329906725353062

            Assert.AreEqual(0.60592605102976937, mean);
            Assert.AreEqual(0.41999999999999998, median);
            Assert.AreEqual(0.26892249963239817, mode);
            Assert.AreEqual(1.4210644953907947, var, 1e-14);
            Assert.AreEqual(2.7170904270953637, chf);
            Assert.AreEqual(0.93393329906725353062, cdf);
            Assert.AreEqual(0.096960115938100735478, pdf, 1e-15);
            Assert.AreEqual(-2.3334555609306102, lpdf);
            Assert.AreEqual(1.4676094699628273, hf);
            Assert.AreEqual(0.066066700932746525, ccdf);
            Assert.AreEqual(1.4000000000000006, icdf);
            Assert.AreEqual("LogLogistic(x; α = 0.42, β = 2.2)", str);

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

            Assert.AreEqual(0.11015333581796467, range1.Min);
            Assert.AreEqual(1.6014040672496028, range1.Max);
            Assert.AreEqual(0.052016650554947114, range2.Min);
            Assert.AreEqual(3.3912218129781762, range2.Max);
            Assert.AreEqual(0.0520166505549471, range3.Min);
            Assert.AreEqual(3.3912218129781762, range3.Max);
        }