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); }
private static Sample CreateSample(Distribution distribution, int count) { return (CreateSample(distribution, count, 1)); }
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); }
internal TestResult(double statistic, Distribution distribution) { this.statistic = statistic; this.distribution = distribution; }