示例#1
0
        [TestCase(0.9, 1.0, 0.0, 1.0, double.PositiveInfinity, 0.6123, 0.3328656172)]   // Mean shifted Laplace
        public void ValidateCDF(double location, double scale, double skew, double p, double q, double x, double pr)
        {
            var n   = new SkewedGeneralizedT(location, scale, skew, p, q);
            var cpr = n.CumulativeDistribution(x);

            AssertHelpers.AlmostEqualRelative(pr, cpr, 8);
        }
示例#2
0
        public void CanSampleSequence()
        {
            var n   = new SkewedGeneralizedT();
            var ied = n.Samples();

            GC.KeepAlive(ied.Take(5).ToArray());
        }
示例#3
0
        [TestCase(0.9, 1.0, 0.0, 1.0, double.PositiveInfinity, 0.6123, -0.7534428322)]  // Mean shifted Laplace
        public void ValidateDensityLn(double location, double scale, double skew, double p, double q, double x, double d)
        {
            var n       = new SkewedGeneralizedT(location, scale, skew, p, q);
            var density = n.DensityLn(x);

            AssertHelpers.AlmostEqualRelative(d, density, 8);
        }
示例#4
0
        public void ValidateNormalDensityEquivalence(double location, double scale, double x)
        {
            var sgt = new SkewedGeneralizedT(location, scale, 0, 2, double.PositiveInfinity);
            var n   = new Normal(location, scale);

            AssertHelpers.AlmostEqualRelative(n.Density(x), sgt.Density(x), 8);
            AssertHelpers.AlmostEqualRelative(n.DensityLn(x), sgt.DensityLn(x), 8);
        }
示例#5
0
        [TestCase(0.9, 1.0, 0.0, 1.0, double.PositiveInfinity, 0.6123, 1.079871174)]     // Mean shifted Laplace
        public void ValidateInvCDF(double location, double scale, double skew, double p, double q, double quantile, double x)
        {
            var n  = new SkewedGeneralizedT(location, scale, skew, p, q);
            var xq = n.InverseCumulativeDistribution(quantile);

            AssertHelpers.AlmostEqualRelative(x, xq, 8);

            AssertHelpers.AlmostEqualRelative(quantile, n.CumulativeDistribution(xq), 8);
        }
示例#6
0
        [TestCase(0.0, 1.0, 0.0, double.PositiveInfinity, 1.0)]  // Continuous Uniform
        public void CanCreateSkewedGeneralizedT(double location, double scale, double skew, double p, double q)
        {
            var n = new SkewedGeneralizedT(location, scale, skew, p, q);

            Assert.AreEqual(location, n.Location);
            Assert.AreEqual(scale, n.Scale);
            Assert.AreEqual(skew, n.Skew);
            Assert.AreEqual(p, n.P);
            Assert.AreEqual(q, n.Q);
        }
示例#7
0
        public void CanCreateStandardSkewedGeneralizedT()
        {
            var n = new SkewedGeneralizedT();

            Assert.AreEqual(0.0, n.Location);
            Assert.AreEqual(1.0, n.Scale);
            Assert.AreEqual(0.0, n.Skew);
            Assert.AreEqual(2.0, n.P);
            Assert.AreEqual(double.PositiveInfinity, n.Q);
        }
示例#8
0
        public void ValidateLaplaceDensityEquivalence(double location, double scale, double x)
        {
            var n = new SkewedGeneralizedT(location, scale, 0, 1, double.PositiveInfinity);

            var b = scale / Math.Sqrt(2.0);
            var l = new Laplace(location, b);

            AssertHelpers.AlmostEqualRelative(l.Density(x), n.Density(x), 8);
            AssertHelpers.AlmostEqualRelative(l.DensityLn(x), n.DensityLn(x), 8);
        }
示例#9
0
        public void ValidateSkewnessOfSkewGeneralizedTDistribution(double skew)
        {
            var sn = new SkewedGeneralizedT(0.0, 1.0, skew, 3.0, 4.0);

            if (skew > 0)
            {
                Assert.IsTrue(sn.Skewness > 0.0);
            }
            else if (skew < 0)
            {
                Assert.IsTrue(sn.Skewness < 0.0);
            }
            else
            {
                Assert.AreEqual(skew, sn.Skewness);
            }
        }
示例#10
0
        public void ValidateSkewnessOfNormalDistribution(double skew)
        {
            var sn = new SkewedGeneralizedT(0.0, 1.0, skew, 2.0, double.PositiveInfinity);

            if (skew > 0)
            {
                Assert.IsTrue(sn.Skewness > 0.0);
            }
            else if (skew < 0)
            {
                Assert.IsTrue(sn.Skewness < 0.0);
            }
            else
            {
                Assert.AreEqual(skew, sn.Skewness);
            }
        }
示例#11
0
        public void ValidateModeOfSkewedGeneralizedTDistribution(double location, double scale, double skew, double p, double q, double x)
        {
            var sn = new SkewedGeneralizedT(location, scale, skew, 2, double.PositiveInfinity);
            var n  = new Normal(location, scale);

            var sm = sn.Mode;
            var m  = n.Mode;

            if (skew < 0)
            {
                Assert.IsTrue(sm > m);
            }
            else
            {
                Assert.IsTrue(sm < m);
            }
        }
示例#12
0
        public void ValidateSkewedNormalDistribution(double location, double scale, double skew, double x)
        {
            var sn = new SkewedGeneralizedT(location, scale, skew, 2, double.PositiveInfinity);
            var n  = new Normal(location, scale);

            var sp = sn.CumulativeDistribution(x);
            var p  = n.CumulativeDistribution(x);

            if (skew > 0)
            {
                Assert.IsTrue(sp > p);
            }
            else
            {
                Assert.IsTrue(sp < p);
            }
        }
示例#13
0
        public void CanSample()
        {
            var n = new SkewedGeneralizedT();

            n.Sample();
        }
示例#14
0
        public void CanSampleSequenceStatic()
        {
            var ied = SkewedGeneralizedT.Samples(0.0, 1.0, 0.3, 2.2, 5.6);

            GC.KeepAlive(ied.Take(5).ToArray());
        }
示例#15
0
 public void CanSampleStatic()
 {
     SkewedGeneralizedT.Sample(0.0, 1.0, 0.3, 2.2, 5.6);
 }