public void Constructor_ExtensiveTestForDocumentation() { // Create a new Beta-Prime distribution with shape (4,2) var betaPrime = new BetaPrimeDistribution(alpha: 4, beta: 2); double mean = betaPrime.Mean; // 4.0 double median = betaPrime.Median; // 2.1866398762435981 double mode = betaPrime.Mode; // 1.0 double var = betaPrime.Variance; // +inf double cdf = betaPrime.DistributionFunction(x: 0.4); // 0.02570357589099781 double pdf = betaPrime.ProbabilityDensityFunction(x: 0.4); // 0.16999719504628183 double lpdf = betaPrime.LogProbabilityDensityFunction(x: 0.4); // -1.7719733417957513 double ccdf = betaPrime.ComplementaryDistributionFunction(x: 0.4); // 0.97429642410900219 double icdf = betaPrime.InverseDistributionFunction(p: cdf); // 0.39999982363709291 double hf = betaPrime.HazardFunction(x: 0.4); // 0.17448200654307533 double chf = betaPrime.CumulativeHazardFunction(x: 0.4); // 0.026039684773113869 string str = betaPrime.ToString(CultureInfo.InvariantCulture); // BetaPrime(x; α = 4, β = 2) Assert.AreEqual(4, betaPrime.Alpha); Assert.AreEqual(2, betaPrime.Beta); Assert.AreEqual(4.0, mean); Assert.AreEqual(2.1866398762435981, median); Assert.AreEqual(1.0, mode); Assert.AreEqual(double.PositiveInfinity, var); Assert.AreEqual(0.026039684773113869, chf); Assert.AreEqual(0.02570357589099781, cdf); Assert.AreEqual(0.16999719504628183, pdf); Assert.AreEqual(-1.7719733417957513, lpdf); Assert.AreEqual(0.17448200654307533, hf); Assert.AreEqual(0.97429642410900219, ccdf); Assert.AreEqual(0.39999982363709291, icdf); Assert.AreEqual("BetaPrime(x; α = 4, β = 2)", str); var range1 = betaPrime.GetRange(0.95); var range2 = betaPrime.GetRange(0.99); var range3 = betaPrime.GetRange(0.01); Assert.AreEqual(0.52112465307247502, range1.Min); Assert.AreEqual(12.082089043372052, range1.Max); Assert.AreEqual(0.28546647531958014, range2.Min); Assert.AreEqual(29.597777621141635, range2.Max); Assert.AreEqual(range2.Min, range3.Min, 1e-15); Assert.AreEqual(range2.Max, range3.Max, 1e-15); }
public void Confirm_BetPrimeDistribution_Relative_to_F_Distribution() { double alpha = 4.0d; double beta = 6.0d; FDistribution fdist = new FDistribution((int)alpha * 2, (int)beta * 2); double fMean = fdist.Mean; double fPdf = (beta / alpha) * fdist.ProbabilityDensityFunction(4.0d); double fCdf = fdist.DistributionFunction(4.0d); var betaPrimeDist = new BetaPrimeDistribution(alpha, beta); double bpMean = (beta / alpha) * betaPrimeDist.Mean; double bpPdf = betaPrimeDist.ProbabilityDensityFunction((alpha / beta) * 4.0d); double bpCdf = betaPrimeDist.DistributionFunction((alpha / beta) * 4.0d); Assert.AreEqual(fMean, bpMean, 0.00000001, "mean should be equal"); Assert.AreEqual(fPdf, bpPdf, 0.00000001, "probability density should be equal"); Assert.AreEqual(fCdf, bpCdf, 0.00000001, "cumulative distribution should be equal"); //Beta Prime distribution is a scaled version of Pearson Type VI, which itself is scale of F distribution }