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

HazardFunction() public method

Gets the hazard function, also known as the failure rate or the conditional failure density function for this distribution evaluated at point x.
The hazard function is the ratio of the probability density function f(x) to the survival function, S(x).
public HazardFunction ( double x ) : double
x double A single point in the distribution range.
return double
        public override double HazardFunction(double x)
        {
            if (x < 0)
                return 0;

            double ba = beta / alpha;
            double xa = x / alpha;

            double num = ba * Math.Pow(xa, beta - 1);
            double den = 1 + Math.Pow(xa, beta);

            double h = num / den;

            Accord.Diagnostics.Debug.Assert(h.IsEqual(base.HazardFunction(x), 1e-10));

            return h;
        }

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);
        }