示例#1
0
        protected void Check([NotNull] IDistribution distribution, [NotNull] double[] x, [NotNull] double[] expectedPdf,
                             [NotNull] double[] expectedCdf, [NotNull] double[] expectedQuantile)
        {
            AssertEqual("StandardDeviation", distribution.StandardDeviation, distribution.Variance.Sqrt());

            for (int i = 0; i < x.Length; i++)
            {
                AssertEqual($"Pdf({x[i]})", expectedPdf[i], distribution.Pdf(x[i]));
            }

            for (int i = 0; i < x.Length; i++)
            {
                AssertEqual($"Cdf({x[i]})", expectedCdf[i], distribution.Cdf(x[i]));
            }

            for (int i = 0; i < x.Length; i++)
            {
                AssertEqual($"Quantile({x[i]})", expectedQuantile[i], distribution.Quantile(x[i]));
            }

            for (int i = 0; i < x.Length; i++)
            {
                AssertEqual($"Cdf(Quantile({x[i]}))", x[i], distribution.Cdf(distribution.Quantile(x[i])));
            }

            Assert.Throws <ArgumentOutOfRangeException>(() => distribution.Quantile(-1));
            Assert.Throws <ArgumentOutOfRangeException>(() => distribution.Quantile(2));
        }
示例#2
0
 public static double[] ParseEvidence(this IEnumerable <State> states, IDistribution dist)
 {
     return(states.Select(state => dist.Cdf(state.SafeMax + Utils.Epsilon) - dist.Cdf(state.SafeMin - Utils.Epsilon)).Normalized().ToArray());
 }