public void ConstructorTest2()
        {
            var rayleigh = new RayleighDistribution(sigma: 0.42);

            double mean = rayleigh.Mean;     // 0.52639193767251
            double median = rayleigh.Median; // 0.49451220943852386
            double var = rayleigh.Variance;  // 0.075711527953380237

            double cdf = rayleigh.DistributionFunction(x: 1.4); // 0.99613407986052716
            double pdf = rayleigh.ProbabilityDensityFunction(x: 1.4); // 0.030681905868831811
            double lpdf = rayleigh.LogProbabilityDensityFunction(x: 1.4); // -3.4840821835248961

            double ccdf = rayleigh.ComplementaryDistributionFunction(x: 1.4); // 0.0038659201394728449
            double icdf = rayleigh.InverseDistributionFunction(p: cdf); // 1.4000000080222026

            double hf = rayleigh.HazardFunction(x: 1.4); // 7.9365079365078612
            double chf = rayleigh.CumulativeHazardFunction(x: 1.4); // 5.5555555555555456

            string str = rayleigh.ToString(CultureInfo.InvariantCulture); // Rayleigh(x; σ = 0.42)

            Assert.AreEqual(0.52639193767251, mean);
            Assert.AreEqual(0.49451220943852386, median, 1e-8);
            Assert.AreEqual(0.075711527953380237, var);
            Assert.AreEqual(5.5555555555555456, chf);
            Assert.AreEqual(0.99613407986052716, cdf);
            Assert.AreEqual(0.030681905868831811, pdf);
            Assert.AreEqual(-3.4840821835248961, lpdf);
            Assert.AreEqual(7.9365079365078612, hf);
            Assert.AreEqual(0.0038659201394728449, ccdf);
            Assert.AreEqual(1.40000000, icdf, 1e-8);
            Assert.AreEqual("Rayleigh(x; σ = 0.42)", str);
        }
Example #2
0
        /// <summary>
        ///   Estimates a new Gamma distribution from a given set of observations.
        /// </summary>
        ///
        public static RayleighDistribution Estimate(double[] observations)
        {
            var n = new RayleighDistribution();

            n.Fit(observations);
            return(n);
        }
        public void ConstructorTest2()
        {
            var rayleigh = new RayleighDistribution(sigma: 0.42);

            double mean = rayleigh.Mean;     // 0.52639193767251
            double median = rayleigh.Median; // 0.49451220943852386
            double var = rayleigh.Variance;  // 0.075711527953380237
            double mode = rayleigh.Mode;     // 0.42

            double cdf = rayleigh.DistributionFunction(x: 1.4); // 0.99613407986052716
            double pdf = rayleigh.ProbabilityDensityFunction(x: 1.4); // 0.030681905868831811
            double lpdf = rayleigh.LogProbabilityDensityFunction(x: 1.4); // -3.4840821835248961

            double ccdf = rayleigh.ComplementaryDistributionFunction(x: 1.4); // 0.0038659201394728449
            double icdf = rayleigh.InverseDistributionFunction(p: cdf); // 1.4000000080222026

            double hf = rayleigh.HazardFunction(x: 1.4); // 7.9365079365078612
            double chf = rayleigh.CumulativeHazardFunction(x: 1.4); // 5.5555555555555456

            string str = rayleigh.ToString(CultureInfo.InvariantCulture); // Rayleigh(x; σ = 0.42)

            Assert.AreEqual(0.52639193767251, mean);
            Assert.AreEqual(0.42, mode);
            Assert.AreEqual(0.49451220943852386, median, 1e-8);
            Assert.AreEqual(0.075711527953380237, var);
            Assert.AreEqual(5.5555555555555456, chf);
            Assert.AreEqual(0.99613407986052716, cdf);
            Assert.AreEqual(0.030681905868831811, pdf);
            Assert.AreEqual(-3.4840821835248961, lpdf);
            Assert.AreEqual(7.9365079365078612, hf);
            Assert.AreEqual(0.0038659201394728449, ccdf);
            Assert.AreEqual(1.40000000, icdf, 1e-8);
            Assert.AreEqual("Rayleigh(x; σ = 0.42)", str);

            var range1 = rayleigh.GetRange(0.95);
            Assert.AreEqual(0.13452243301684083, range1.Min);
            Assert.AreEqual(1.0280536793538564, range1.Max);

            var range2 = rayleigh.GetRange(0.99);
            Assert.AreEqual(0.059546263061601511, range2.Min);
            Assert.AreEqual(1.2746387879926619, range2.Max);

            var range3 = rayleigh.GetRange(0.01);
            Assert.AreEqual(0.059546263061601677, range3.Min);
            Assert.AreEqual(1.2746387879926619, range3.Max);
        }
        public void ProbabilityDistributionTest()
        {
            RayleighDistribution n = new RayleighDistribution(0.807602);

            double[] expected = { 0, 0.712311, 0.142855, 0.00463779, 0.0000288872 };
            double[] actual = new double[expected.Length];

            for (int i = 0; i < actual.Length; i++)
                actual[i] = n.ProbabilityDensityFunction(i);

            for (int i = 0; i < actual.Length; i++)
            {
                Assert.AreEqual(expected[i], actual[i], 1e-5);
                Assert.IsFalse(double.IsNaN(actual[i]));
            }
        }
 public void ConstructorTest()
 {
     RayleighDistribution n = new RayleighDistribution(0.807602);
     Assert.AreEqual(1.0121790039242726, n.Mean);
     Assert.AreEqual(0.27993564482286737, n.Variance);
 }
        public void MedianTest()
        {
            RayleighDistribution target = new RayleighDistribution(0.52);

            Assert.AreEqual(target.Median, target.InverseDistributionFunction(0.5));
        }
        public void GenerateTest2()
        {
            RayleighDistribution target = new RayleighDistribution(4.2);

            double[] samples = new double[1000000];
            for (int i = 0; i < samples.Length; i++)
                samples[i] = target.Generate();

            var actual = RayleighDistribution.Estimate(samples);
            actual.Fit(samples);

            Assert.AreEqual(4, actual.Mean, 0.01);
            Assert.AreEqual(2, actual.Variance, 0.01);
        }
        public void GenerateTest()
        {
            RayleighDistribution target = new RayleighDistribution(2.5);

            double[] samples = target.Generate(1000000);

            var actual = RayleighDistribution.Estimate(samples);
            actual.Fit(samples);

            Assert.AreEqual(2, actual.Mean, 0.01);
            Assert.AreEqual(5, actual.Variance, 0.01);
        }
        public void CumulativeDistributionTest()
        {
            RayleighDistribution n = new RayleighDistribution(0.807602);

            double[] expected = { 0, 0.535415, 0.953414, 0.998992, 0.999995 };
            double[] actual = new double[expected.Length];

            for (int i = 0; i < actual.Length; i++)
                actual[i] = n.DistributionFunction(i);

            for (int i = 0; i < actual.Length; i++)
            {
                Assert.AreEqual(expected[i], actual[i], 1e-6);
                Assert.IsFalse(double.IsNaN(actual[i]));
            }
        }
        public void GenerateTest2()
        {
            Accord.Math.Tools.SetupGenerator(0);

            RayleighDistribution target = new RayleighDistribution(4.2);

            double[] samples = new double[1000000];
            for (int i = 0; i < samples.Length; i++)
                samples[i] = target.Generate();

            var actual = RayleighDistribution.Estimate(samples);

            Assert.AreEqual(4.2, actual.Scale, 1e-3);
        }
        public void GenerateTest()
        {
            Accord.Math.Tools.SetupGenerator(0);

            RayleighDistribution target = new RayleighDistribution(2.5);

            double[] samples = target.Generate(1000000);

            var actual = RayleighDistribution.Estimate(samples);

            Assert.AreEqual(2.5, actual.Scale, 1e-3);
        }