public void ProbabilityMassFunctionTest() { UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution(); double p = 0.42; double q = 1 - p; Assert.AreEqual(q, target.ProbabilityMassFunction(0)); Assert.AreEqual(p, target.ProbabilityMassFunction(1)); double[] observations = { 0, 1, 0, 0, 1, 0 }; target.Fit(observations); p = target.Mean; q = 1 - p; Assert.AreEqual(q, target.ProbabilityMassFunction(0)); Assert.AreEqual(p, target.ProbabilityMassFunction(1)); }
public double Distance(UnivariateDiscreteDistribution x, UnivariateDiscreteDistribution y) { double b = 0; foreach (int i in x.Support.Intersection(y.Support)) { b += System.Math.Sqrt(x.ProbabilityMassFunction(i) * y.ProbabilityMassFunction(i)); } return(System.Math.Sqrt(1.0 - b)); }