Ejemplo n.º 1
0
 public void CanGetMean(double meanLocation, double meanScale, double precShape, double precInvScale,
     double meanMean, double meanPrecision)
 {
     NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual<double>(meanMean, ng.Mean.Mean);
     Assert.AreEqual<double>(meanPrecision, ng.Mean.Precision);
 }
        public void SampleFollowsCorrectDistribution()
        {
            var cd = new NormalGamma(1.0, 4.0, 7.0, 3.5);

            // Sample from the distribution.
            var samples = new MeanPrecisionPair[CommonDistributionTests.NumberOfTestSamples];

            for (var i = 0; i < CommonDistributionTests.NumberOfTestSamples; i++)
            {
                samples[i] = cd.Sample();
            }

            // Extract the mean and precisions.
            var means        = samples.Select(mp => mp.Mean);
            var precs        = samples.Select(mp => mp.Precision);
            var meanMarginal = cd.MeanMarginal();
            var precMarginal = cd.PrecisionMarginal();

            // Check the precision distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                precs,
                precMarginal);

            // Check the mean distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                means,
                meanMarginal);
        }
Ejemplo n.º 3
0
        public void CanGetMean(double meanLocation, double meanScale, double precShape, double precInvScale, double meanMean, double meanPrecision)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(meanMean, ng.Mean.Mean);
            Assert.AreEqual(meanPrecision, ng.Mean.Precision);
        }
        public void CanGetMean([Values(0.0, 10.0, 10.0)] double meanLocation, [Values(1.0, 1.0, 1.0)] double meanScale, [Values(1.0, 2.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale, [Values(0.0, 10.0, 10.0)] double meanMean, [Values(1.0, 1.0, 2.0)] double meanPrecision)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(meanMean, ng.Mean.Mean);
            Assert.AreEqual(meanPrecision, ng.Mean.Precision);
        }
        public void SamplesFollowsCorrectDistribution()
        {
            var cd = new NormalGamma(1.0, 4.0, 3.0, 3.5);

            // Sample from the distribution.
            var samples = cd.Samples().Take(CommonDistributionTests.NumberOfTestSamples).ToArray();

            // Extract the mean and precisions.
            var means        = samples.Select(mp => mp.Mean);
            var precs        = samples.Select(mp => mp.Precision);
            var meanMarginal = cd.MeanMarginal();
            var precMarginal = cd.PrecisionMarginal();

            // Check the precision distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                precs,
                precMarginal);

            // Check the mean distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                means,
                meanMarginal);
        }
Ejemplo n.º 6
0
        public void CanGetPrecisionMarginal(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var pm = ng.PrecisionMarginal();

            Assert.AreEqual(precShape, pm.Shape);
            Assert.AreEqual(precInvScale, pm.Rate);
        }
        public void CanGetPrecisionMarginal([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var pm = ng.PrecisionMarginal();

            Assert.AreEqual(precShape, pm.Shape);
            Assert.AreEqual(precInvScale, pm.InvScale);
        }
Ejemplo n.º 8
0
        public void CanCreateNormalGamma(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual <double>(meanLocation, ng.MeanLocation);
            Assert.AreEqual <double>(meanScale, ng.MeanScale);
            Assert.AreEqual <double>(precShape, ng.PrecisionShape);
            Assert.AreEqual <double>(precInvScale, ng.PrecisionInverseScale);
        }
        public void CanCreateNormalGamma(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(meanLocation, ng.MeanLocation);
            Assert.AreEqual(meanScale, ng.MeanScale);
            Assert.AreEqual(precShape, ng.PrecisionShape);
            Assert.AreEqual(precInvScale, ng.PrecisionInverseScale);
        }
Ejemplo n.º 10
0
        public void CanGetMeanMarginal([Values(0.0, 10.0, 10.0)] double meanLocation, [Values(1.0, 1.0, 1.0)] double meanScale, [Values(1.0, 2.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale, [Values(0.0, 10.0, 10.0)] double meanMarginalMean, [Values(1.0, 1.0, 0.5)] double meanMarginalScale, [Values(2.0, 4.0, Double.PositiveInfinity)] double meanMarginalDoF)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var mm = ng.MeanMarginal();

            Assert.AreEqual(meanMarginalMean, mm.Location);
            Assert.AreEqual(meanMarginalScale, mm.Scale);
            Assert.AreEqual(meanMarginalDoF, mm.DegreesOfFreedom);
        }
Ejemplo n.º 11
0
        public void ValidateVariance([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var x  = precInvScale / (meanScale * (precShape - 1));
            var t  = precShape / Math.Sqrt(precInvScale);

            Assert.AreEqual(x, ng.Variance.Mean);
            Assert.AreEqual(t, ng.Variance.Precision);
        }
Ejemplo n.º 12
0
        public void CanCreateNormalGamma([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0)] double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(meanLocation, ng.MeanLocation);
            Assert.AreEqual(meanScale, ng.MeanScale);
            Assert.AreEqual(precShape, ng.PrecisionShape);
            Assert.AreEqual(precInvScale, ng.PrecisionInverseScale);
        }
Ejemplo n.º 13
0
        public void CanGetMeanMarginal(double meanLocation, double meanScale, double precShape, double precInvScale, double meanMarginalMean, double meanMarginalScale, double meanMarginalDoF)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var mm = ng.MeanMarginal();

            Assert.AreEqual(meanMarginalMean, mm.Location);
            Assert.AreEqual(meanMarginalScale, mm.Scale);
            Assert.AreEqual(meanMarginalDoF, mm.DegreesOfFreedom);
        }
Ejemplo n.º 14
0
        public void ValidateVariance(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
            var x  = precInvScale / (meanScale * (precShape - 1));
            var t  = precShape / Math.Sqrt(precInvScale);

            Assert.AreEqual(x, ng.Variance.Mean);
            Assert.AreEqual(t, ng.Variance.Precision);
        }
Ejemplo n.º 15
0
        public void CanSetPrecisionPrecisionInverseScale(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale)
            {
                PrecisionInverseScale = 5.0
            };

            Assert.AreEqual(meanLocation, ng.MeanLocation);
            Assert.AreEqual(meanScale, ng.MeanScale);
            Assert.AreEqual(precShape, ng.PrecisionShape);
            Assert.AreEqual(5.0, ng.PrecisionInverseScale);
        }
Ejemplo n.º 16
0
        public void CanGetMeanLocation(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual <double>(meanLocation, ng.MeanLocation);
        }
Ejemplo n.º 17
0
 public void CanSetRandomSource()
 {
     NormalGamma ng = new NormalGamma(0.0, 1.0, 1.0, 1.0);
     ng.RandomSource = new Random();
 }
Ejemplo n.º 18
0
 public void CanGetPrecisionMarginal([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var pm = ng.PrecisionMarginal();
     Assert.AreEqual(precShape, pm.Shape);
     Assert.AreEqual(precInvScale, pm.InvScale);
 }
Ejemplo n.º 19
0
        public void CanGetDensityAndDensityLn([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 1.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0)] double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(ng.DensityLn(meanLocation, precShape), Math.Log(ng.Density(meanLocation, precShape)), 1e-14);
        }
Ejemplo n.º 20
0
 public void CanGetMeanLocation([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0)] double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual(meanLocation, ng.MeanLocation);
 }
Ejemplo n.º 21
0
 public void ValidateVariance([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var x = precInvScale / (meanScale * (precShape - 1));
     var t = precShape / Math.Sqrt(precInvScale);
     Assert.AreEqual(x, ng.Variance.Mean);
     Assert.AreEqual(t, ng.Variance.Precision);
 }
 public void CanGetPrecisionShape(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual(precShape, ng.PrecisionShape);
 }
Ejemplo n.º 23
0
 public void CanSetPrecisionShape(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     ng.PrecisionShape = 5.0;
     Assert.AreEqual<double>(meanLocation, ng.MeanLocation);
     Assert.AreEqual<double>(meanScale, ng.MeanScale);
     Assert.AreEqual<double>(5.0, ng.PrecisionShape);
     Assert.AreEqual<double>(precInvScale, ng.PrecisionInverseScale);
 }
Ejemplo n.º 24
0
 public void NormalGammaConstructorFailsWithInvalidParams(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var nb = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
 }
Ejemplo n.º 25
0
 public void CanSetPrecisionPrecisionInverseScale([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0)] double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale)
              {
                  PrecisionInverseScale = 5.0
              };
     Assert.AreEqual(meanLocation, ng.MeanLocation);
     Assert.AreEqual(meanScale, ng.MeanScale);
     Assert.AreEqual(precShape, ng.PrecisionShape);
     Assert.AreEqual(5.0, ng.PrecisionInverseScale);
 }
Ejemplo n.º 26
0
        public void CanSetRandomSource()
        {
            NormalGamma ng = new NormalGamma(0.0, 1.0, 1.0, 1.0);

            ng.RandomSource = new Random();
        }
Ejemplo n.º 27
0
        public void CanGetDensityAndDensityLn(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(ng.DensityLn(meanLocation, precShape), Math.Log(ng.Density(meanLocation, precShape)));
        }
Ejemplo n.º 28
0
        public void CanGetPrecisionShape(double meanLocation, double meanScale, double precShape, double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(precShape, ng.PrecisionShape);
        }
 public void CanGetDensityAndDensityLn(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual(ng.DensityLn(meanLocation, precShape), Math.Log(ng.Density(meanLocation, precShape)), 1e-14);
 }
 public void CanGetMeanMarginal(double meanLocation, double meanScale, double precShape, double precInvScale, double meanMarginalMean, double meanMarginalScale, double meanMarginalDoF)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var mm = ng.MeanMarginal();
     Assert.AreEqual(meanMarginalMean, mm.Location);
     Assert.AreEqual(meanMarginalScale, mm.Scale);
     Assert.AreEqual(meanMarginalDoF, mm.DegreesOfFreedom);
 }
 public void CanGetMeanLocation(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual(meanLocation, ng.MeanLocation);
 }
 public void CanGetPrecisionMarginal(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var pm = ng.PrecisionMarginal();
     Assert.AreEqual(precShape, pm.Shape);
     Assert.AreEqual(precInvScale, pm.InvScale);
 }
 public void CanGetMeanScale(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     AssertEx.AreEqual<double>(meanScale, ng.MeanScale);
 }
 public void HasRandomSource()
 {
     var ng = new NormalGamma(0.0, 1.0, 1.0, 1.0);
     Assert.IsNotNull(ng.RandomSource);
 }
Ejemplo n.º 35
0
        public void HasRandomSource()
        {
            var ng = new NormalGamma(0.0, 1.0, 1.0, 1.0);

            Assert.IsNotNull(ng.RandomSource);
        }
 public void ValidateVariance(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var x = precInvScale / (meanScale * (precShape - 1));
     var t = precShape / Math.Sqrt(precInvScale);
     Assert.AreEqual(x, ng.Variance.Mean);
     Assert.AreEqual(t, ng.Variance.Precision);
 }
Ejemplo n.º 37
0
 public void CanGetMean([Values(0.0, 10.0, 10.0)] double meanLocation, [Values(1.0, 1.0, 1.0)] double meanScale, [Values(1.0, 2.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale, [Values(0.0, 10.0, 10.0)] double meanMean, [Values(1.0, 1.0, 2.0)] double meanPrecision)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     Assert.AreEqual(meanMean, ng.Mean.Mean);
     Assert.AreEqual(meanPrecision, ng.Mean.Precision);
 }
        public void SampleFollowsCorrectDistribution()
        {
            var cd = new NormalGamma(1.0, 4.0, 7.0, 3.5);

            // Sample from the distribution.
            var samples = new MeanPrecisionPair[CommonDistributionTests.NumberOfTestSamples];
            for (var i = 0; i < CommonDistributionTests.NumberOfTestSamples; i++)
            {
                samples[i] = cd.Sample();
            }

            // Extract the mean and precisions.
            var means = samples.Select(mp => mp.Mean);
            var precs = samples.Select(mp => mp.Precision);
            var meanMarginal = cd.MeanMarginal();
            var precMarginal = cd.PrecisionMarginal();

            // Check the precision distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                precs,
                precMarginal);

            // Check the mean distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                means,
                meanMarginal);
        }
Ejemplo n.º 39
0
 public void CanGetMeanMarginal([Values(0.0, 10.0, 10.0)] double meanLocation, [Values(1.0, 1.0, 1.0)] double meanScale, [Values(1.0, 2.0, 2.0)] double precShape, [Values(1.0, 2.0, Double.PositiveInfinity)] double precInvScale, [Values(0.0, 10.0, 10.0)] double meanMarginalMean, [Values(1.0, 1.0, 0.5)] double meanMarginalScale, [Values(2.0, 4.0, Double.PositiveInfinity)] double meanMarginalDoF)
 {
     var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
     var mm = ng.MeanMarginal();
     Assert.AreEqual(meanMarginalMean, mm.Location);
     Assert.AreEqual(meanMarginalScale, mm.Scale);
     Assert.AreEqual(meanMarginalDoF, mm.DegreesOfFreedom);
 }
        public void SamplesFollowsCorrectDistribution()
        {
            var cd = new NormalGamma(1.0, 4.0, 3.0, 3.5);

            // Sample from the distribution.
            var samples = cd.Samples().Take(CommonDistributionTests.NumberOfTestSamples).ToArray();

            // Extract the mean and precisions.
            var means = samples.Select(mp => mp.Mean);
            var precs = samples.Select(mp => mp.Precision);
            var meanMarginal = cd.MeanMarginal();
            var precMarginal = cd.PrecisionMarginal();

            // Check the precision distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                precs,
                precMarginal);

            // Check the mean distribution.
            CommonDistributionTests.VapnikChervonenkisTest(
                CommonDistributionTests.Error,
                CommonDistributionTests.ErrorProbability,
                means,
                meanMarginal);
        }
Ejemplo n.º 41
0
        public void CanGetMeanLocation([Values(0.0, 10.0)] double meanLocation, [Values(1.0, 2.0)] double meanScale, [Values(1.0, 2.0)] double precShape, [Values(1.0, 2.0)] double precInvScale)
        {
            var ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);

            Assert.AreEqual(meanLocation, ng.MeanLocation);
        }
Ejemplo n.º 42
0
 public void NormalGammaConstructorFailsWithInvalidParams(double meanLocation, double meanScale, double precShape, double precInvScale)
 {
     var nb = new NormalGamma(meanLocation, meanScale, precShape, precInvScale);
 }