Пример #1
0
        public void KDETestGaussianKernelBandwidth2()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.Bandwidth = 2.0d;

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(0.046875864115900, estimate, 10);

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

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.123339405007761, estimate, 10);
        }
Пример #2
0
        public void KDETestGaussianKernelBandwidth0p5()
        {
            var kde = new KernelDensityEstimator(_testData);

            kde.Bandwidth = 0.5d;

            var estimate = kde.EstimateDensity(-3.5);

            AssertHelpers.AlmostEqualRelative(5.311490430807364e-007, estimate, 10);

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

            estimate = kde.EstimateDensity(2);
            AssertHelpers.AlmostEqualRelative(0.032447347007482, estimate, 10);
        }
Пример #3
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);
        }
Пример #4
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);
        }
Пример #5
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);
        }
Пример #6
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);
        }
Пример #7
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);
        }