public TransformedDistribution(Distribution baseDistribution, double shift, double scale)
 {
     if (baseDistribution == null) throw new ArgumentNullException("baseDistribution");
     this.baseDistribution = baseDistribution;
     this.shift = shift;
     this.scale = scale;
 }
        public static Sample CreateSample(Distribution distribution, int count, int seed)
        {
            Sample sample = new Sample();

            Random rng = new Random(seed);
            for (int i = 0; i < count; i++) {
                double x = distribution.GetRandomValue(rng);
                sample.Add(x);
            }

            return (sample);
        }
 private void DistributionProbabilityTestHelper(Distribution distribution, double x)
 {
     Console.WriteLine("{0} {1}", distribution.GetType().Name, x);
     double P = distribution.LeftProbability(x);
     double Q = distribution.RightProbability(x);
     Console.WriteLine(" P={0} Q={1} P+Q={2}", P, Q, P + Q);
     Assert.IsTrue((0.0 <= P) && (P <= 1.0));
     Assert.IsTrue((0.0 <= Q) && (Q <= 1.0));
     Assert.IsTrue(TestUtilities.IsNearlyEqual(P + Q, 1.0));
     // this is a rather poor test; we can do much more when we get integration
     // update: we have integration now, and tests like DistributionUnitarityIntegralTest,
     // DistributionMeanIntegralTest, DistributionVarianceIntegralTest, DistributionRawMomentIntegralTest,
     // and DistributionCentralMomentIntegralTest use it
     double p = distribution.ProbabilityDensity(x);
     Console.WriteLine(" p={0}", p);
     Assert.IsTrue(p >= 0.0);
 }
Example #4
0
 private static Sample CreateSample(Distribution distribution, int count)
 {
     return (CreateSample(distribution, count, 1));
 }
Example #5
0
        public void TestMoments(Distribution d)
        {
            // the support gives the limits of integration
            Interval support = d.Support;

            // raw moments
            double[] M = new double[6];
            for (int n = 0; n < 6; n++) {
                // define x^n p(x)
                Func<double, double> raw = delegate(double x) {
                    return (Math.Pow(x, n) * d.ProbabilityDensity(x));
                };
                // integrate it
                M[n] = FunctionMath.Integrate(raw, support);
                // compare with the claimed result
                Console.WriteLine("M{0} {1} v. {2}", n, M[n], d.Moment(n));
            }

            // central moments
            double[] C = new double[6];
            for (int n = 0; n < 6; n++) {
                // define (x-m)^n p(x)
                Func<double, double> central = delegate(double x) {
                    return (Math.Pow(x - M[1], n) * d.ProbabilityDensity(x));
                };
                // integrate it
                C[n] = FunctionMath.Integrate(central, support);
                // compare with the claimed result
                Console.WriteLine("C{0} {1} v. {2}", n, C[n], d.MomentAboutMean(n));
            }

            Console.WriteLine("Mean {0} v. {1}", M[1], d.Mean);
            Console.WriteLine("Standard Deviation {0} v. {1}", Math.Sqrt(C[2]), d.StandardDeviation);
        }
Example #6
0
 internal TestResult(double statistic, Distribution distribution)
 {
     this.statistic = statistic;
     this.distribution = distribution;
 }