Ejemplo n.º 1
0
        public void KDETestGaussianKernelBandwidth1()
        {
            var kde = new KernelDensityEstimator(_testData);

            Assert.AreEqual(KDEKernelType.Gaussian, kde.KernelType);
            Assert.AreEqual(1.0d, kde.Bandwidth);
            AssertHelpers.AlmostEqualRelative(0.398942280401433, kde.Kernel(0), 10); //Density of standard normal distribution at 0

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0.004115405028907, estimate, 10);

            estimate = kde.EstimateDensity(0);
            AssertHelpers.AlmostEqualRelative(0.310485907659139, estimate, 10);

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.099698581377801, estimate, 10);
        }
Ejemplo n.º 2
0
        public void KDETestTriangularKernelBandwidth1()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.KernelType = KDEKernelType.Triangular;

            Assert.AreEqual(KDEKernelType.Triangular, kde.KernelType);
            Assert.AreEqual(1.0d, kde.Bandwidth);
            Assert.AreEqual(1.0d, kde.Kernel(0)); //Density of standard normal distribution at 0

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0, estimate, 10);

            estimate = kde.EstimateDensity(0);
            AssertHelpers.AlmostEqualRelative(0.347688490533868, estimate, 10);

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.004216757636608, estimate, 10);
        }
Ejemplo n.º 3
0
        public void KDETestEpanechnikovKernelBandwidth1()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.KernelType = KDEKernelType.Epanechnikov;

            Assert.AreEqual(KDEKernelType.Epanechnikov, kde.KernelType);
            Assert.AreEqual(1.0d, kde.Bandwidth);
            Assert.AreEqual(0.75d, kde.Kernel(0));

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0, estimate, 10);

            estimate = kde.EstimateDensity(0);
            AssertHelpers.AlmostEqualRelative(0.353803214812608, estimate, 10);

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.006248168996717, estimate, 10);
        }
Ejemplo n.º 4
0
        public void KDETestUniformKernelBandwidth1()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.KernelType = KDEKernelType.Uniform;

            Assert.AreEqual(KDEKernelType.Uniform, kde.KernelType);
            Assert.AreEqual(1.0d, kde.Bandwidth);
            Assert.AreEqual(0.5d, kde.Kernel(0));

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0, estimate, 10);

            estimate = kde.EstimateDensity(0);
            AssertHelpers.AlmostEqualRelative(0.35, estimate, 10);

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.1, estimate, 10);
        }
Ejemplo n.º 5
0
        public void KDETestCustomKernelBandwidth1()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.Bandwidth = 1.0d;
            kde.Kernel    = x => 0.5d * Math.Exp(-Math.Abs(x)); //Picard-Kernel

            Assert.AreEqual(KDEKernelType.Custom, kde.KernelType);
            Assert.AreEqual(1.0d, kde.Bandwidth);
            Assert.AreEqual(0.5d, kde.Kernel(0));

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0.018396636706009, estimate, 10);

            estimate = kde.EstimateDensity(0);
            AssertHelpers.AlmostEqualRelative(0.272675897096678, estimate, 10);

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.092580285110347, estimate, 10);
        }