public void FitWeights()
        {
            var source = new ParetoDistribution(scale: 7.12, shape: 2);
            var sample = new double[10000];
            var step = 1.0 / sample.Length;

            for (var i = 0; i < sample.Length; i++)
                sample[i] = source.InverseDistributionFunction(i * step);

            var target = new ParetoDistribution();

            double[] weights = Matrix.Vector(sample.Length, 1.0 / sample.Length);

            target.Fit(sample, weights);

            Assert.AreEqual(7.12, target.Scale, 1e-6);
            Assert.AreEqual(2.0, target.Alpha, 1e-2);
        }
        public void FitTest()
        {
            var source = new ParetoDistribution(scale: 7.12, shape: 2);
            var sample = new double[10000];
            var step = 1.0 / sample.Length;

            for (var i = 0; i < sample.Length; i++)
                sample[i] = source.InverseDistributionFunction(i * step);

            var target = new ParetoDistribution(0, 0);
            target.Fit(sample);

            Assert.AreEqual(7.12, target.Scale, 1e-6);
            Assert.AreEqual(2.0, target.Alpha, 1e-2);
        }