public void JointDistributionConstructorTest2() { int[] symbols = { 3, 5, 2 }; JointDistribution target = new JointDistribution(symbols); double[] p = target.Frequencies; Assert.AreEqual(3 * 5 * 2, p.Length); for (int i = 0; i < p.Length; i++) p[i] = i; double actual; actual = target.ProbabilityMassFunction(new int[] { 0, 0, 0 }); Assert.AreEqual(0, actual); actual = target.ProbabilityMassFunction(new int[] { 0, 0, 1 }); Assert.AreEqual(1, actual); actual = target.ProbabilityMassFunction(new int[] { 0, 1, 0 }); Assert.AreEqual(2, actual); actual = target.ProbabilityMassFunction(new int[] { 0, 1, 1 }); Assert.AreEqual(3, actual); actual = target.ProbabilityMassFunction(new int[] { 0, 2, 0 }); Assert.AreEqual(4, actual); actual = target.ProbabilityMassFunction(new int[] { 0, 2, 1 }); Assert.AreEqual(5, actual); actual = target.ProbabilityMassFunction(new int[] { 2, 4, 1 }); Assert.AreEqual(29, actual); }
public void FitTest2() { int[] symbols = { 3, 5 }; JointDistribution target = new JointDistribution(symbols); double[][] observations = { new double[] { 0, 0 }, new double[] { 1, 1 }, new double[] { 2, 1 }, }; double[] weights = { 2, 1, 1 }; target.Fit(observations, weights); double[] p = target.Frequencies; double actual; actual = target.ProbabilityMassFunction(new[] { 0, 0 }); Assert.AreEqual(0.5, actual); actual = target.ProbabilityMassFunction(new[] { 1, 1 }); Assert.AreEqual(0.25, actual); actual = target.ProbabilityMassFunction(new[] { 2, 1 }); Assert.AreEqual(0.25, actual); }