public void CanCreateSymmetricDirichlet() { var d = new Dirichlet(0.3, 5); for (var i = 0; i < 5; i++) { Assert.AreEqual(0.3, d.Alpha[i]); } }
public void CanGetAlpha() { Dirichlet d = new Dirichlet(0.3, 10); double[] alpha = new double[10]; for (int i = 0; i < 10; i++) { Assert.AreEqual(0.3, d.Alpha[i]); } }
public void CanCreateDirichlet() { var alpha = new double[10]; for (var i = 0; i < 10; i++) { alpha[i] = i; } var d = new Dirichlet(alpha); for (var i = 0; i < 5; i++) { Assert.AreEqual(i, d.Alpha[i]); } }
public void ValidateDensity(double[] x, double res) { var d = new Dirichlet(new[] { 0.1, 0.3, 0.5, 0.8 }); AssertHelpers.AlmostEqualRelative(res, d.Density(x), 12); }
public void ValidateVariance() { var alpha = new double[10]; var sum = 0.0; for (var i = 0; i < 10; i++) { alpha[i] = i; sum += i; } var d = new Dirichlet(alpha); for (var i = 0; i < 10; i++) { AssertHelpers.AlmostEqualRelative(i * (sum - i) / (sum * sum * (sum + 1.0)), d.Variance[i], 15); } }
public void ValidateMean() { var d = new Dirichlet(0.3, 5); for (var i = 0; i < 5; i++) { AssertHelpers.AlmostEqualRelative(0.3 / 1.5, d.Mean[i], 15); } }
public void CanSetRandomSource(int i) { Dirichlet d = new Dirichlet(0.3, 5); d.RandomSource = new Random(); }
public void CanSampleSingularDirichlet() { var d = new Dirichlet(new[] { 2.0, 1.0, 0.0, 3.0 }); d.Sample(); }
public void ValidateEntropy(double[] x) { var d = new Dirichlet(x); var sum = x.Sum(t => (t - 1) * SpecialFunctions.DiGamma(t)); var res = SpecialFunctions.GammaLn(x.Sum()) + ((x.Sum() - x.Length) * SpecialFunctions.DiGamma(x.Sum())) - sum; AssertHelpers.AlmostEqualRelative(res, d.Entropy, 12); }
public void CanSampleSymmetricDirichlet() { Dirichlet d = new Dirichlet(1.0, 5); double[] s = d.Sample(); }
public void CanSampleSingularDirichlet() { Dirichlet d = new Dirichlet(new double[] {2.0, 1.0, 0.0, 3.0}); double[] s = d.Sample(); }
public void ValidateVariance() { double[] alpha = new double[10]; double sum = 0.0; for (int i = 0; i < 10; i++) { alpha[i] = i; sum += i; } Dirichlet d = new Dirichlet(alpha); for (int i = 0; i < 10; i++) { AssertHelpers.AlmostEqual(i * (sum - i) / (sum * sum * (sum + 1.0)), d.Variance[i], 15); } }
public void ValidateMean() { Dirichlet d = new Dirichlet(0.3, 5); for (int i = 0; i < 5; i++) { AssertHelpers.AlmostEqual(0.3/1.5, d.Mean[i], 15); } }
public void FailSetRandomSourceWithNullReference(int i) { Dirichlet d = new Dirichlet(0.3, 5); d.RandomSource = null; }
public void FailCreateDirichlet(double alpha) { Dirichlet d = new Dirichlet(alpha, 5); }
public void ValidateDensityLn(double[] x) { var d = new Dirichlet(new[] { 0.1, 0.3, 0.5, 0.8 }); AssertHelpers.AlmostEqualRelative(d.DensityLn(x), Math.Log(d.Density(x)), 12); }
public void ValidateBetaSpecialCaseDensityLn(double x) { var d = new Dirichlet(new[] { 0.1, 0.3 }); var beta = new Beta(0.1, 0.3); AssertHelpers.AlmostEqualRelative(d.DensityLn(new[] { x }), beta.DensityLn(x), 10); }
public void HasRandomSourceEvenAfterSetToNull() { var d = new Dirichlet(0.3, 5); Assert.DoesNotThrow(() => d.RandomSource = null); Assert.IsNotNull(d.RandomSource); }
public void CanSampleSymmetricDirichlet() { var d = new Dirichlet(1.0, 5); d.Sample(); }
public void CanGetDimension() { var d = new Dirichlet(0.3, 10); Assert.AreEqual(10, d.Dimension); }
public void CanGetAlpha() { var d = new Dirichlet(0.3, 10); for (var i = 0; i < 10; i++) { Assert.AreEqual(0.3, d.Alpha[i]); } }
public void CanSetAlpha() { var d = new Dirichlet(0.3, 10); var alpha = new double[10]; for (var i = 0; i < 10; i++) { alpha[i] = i; } d.Alpha = alpha; }
public void HasRandomSource() { var d = new Dirichlet(0.3, 5); Assert.IsNotNull(d.RandomSource); }
public void CanSetAlpha() { Dirichlet d = new Dirichlet(0.3, 10); double[] alpha = new double[10]; for (int i = 0; i < 10; i++) { alpha[i] = i; } d.Alpha = alpha; }