public void ConstructorTest4() { // Create a new Shapiro-Wilk's W for 5 samples var sw = new ShapiroWilkDistribution(samples: 5); double mean = sw.Mean; // 0.8490362043845332 double median = sw.Median; // 0.8490362043845332 double mode = sw.Mode; // 0.8490362043845332 double cdf = sw.DistributionFunction(x: 0.84); // 0.16492187919271617 double pdf = sw.ProbabilityDensityFunction(x: 0.84); // 0.82021062372326459 double lpdf = sw.LogProbabilityDensityFunction(x: 0.84); // -0.1981941135071546 double ccdf = sw.ComplementaryDistributionFunction(x: 0.84); // 0.83507812080728383 double icdf = sw.InverseDistributionFunction(p: cdf); // 0.84000000194587177 double hf = sw.HazardFunction(x: 0.84); // 0.98219627994845971 double chf = sw.CumulativeHazardFunction(x: 0.84); // 0.18023000065451003 string str = sw.ToString(CultureInfo.InvariantCulture); // W(x; n = 12) Assert.AreEqual(0.8490362043845332, mean); Assert.AreEqual(0.8490362043845332, mode); Assert.AreEqual(0.8490362043845332, median, 1e-8); Assert.AreEqual(0.18023000065451003, chf); Assert.AreEqual(0.16492187919271617, cdf); Assert.AreEqual(0.82021062372326459, pdf); Assert.AreEqual(-0.1981941135071546, lpdf); Assert.AreEqual(0.98219627994845971, hf); Assert.AreEqual(0.83507812080728383, ccdf); Assert.AreEqual(0.84000000194587177, icdf, 1e-8); Assert.AreEqual("W(x; n = 5)", str); var range1 = sw.GetRange(0.95); Assert.AreEqual(0.77509977845943778, range1.Min, 1e-6); Assert.AreEqual(0.98299906816568339, range1.Max, 1e-6); var range2 = sw.GetRange(0.99); Assert.AreEqual(0.70180031139628618, range2.Min, 1e-6); Assert.AreEqual(0.99334588234528642, range2.Max, 1e-6); var range3 = sw.GetRange(0.01); Assert.AreEqual(0.70180031139628618, range3.Min, 1e-6); Assert.AreEqual(0.99334588234528642, range3.Max, 1e-6); Assert.AreEqual(0, sw.Support.Min); Assert.AreEqual(1, sw.Support.Max); Assert.AreEqual(sw.InverseDistributionFunction(0), sw.Support.Min); Assert.AreEqual(sw.InverseDistributionFunction(1), sw.Support.Max); }
public void ConstructorTest3() { var sw = new ShapiroWilkDistribution(samples: 12); double mean = sw.Mean; // 0.940148636841248 double median = sw.Median; // 0.940148636841248 double mode = sw.Mode; // 0.940148636841248 double cdf = sw.DistributionFunction(x: 0.42); // 4.8168255270011394E-06 double pdf = sw.ProbabilityDensityFunction(x: 0.42); // 0.000043477460596194137 double lpdf = sw.LogProbabilityDensityFunction(x: 0.42); // -10.043267901368219 double ccdf = sw.ComplementaryDistributionFunction(x: 0.42); // 0.999995183174473 double icdf = sw.InverseDistributionFunction(p: cdf); // 0.42000002275671627 double hf = sw.HazardFunction(x: 0.42); // 4.3477670020544943E-05 double chf = sw.CumulativeHazardFunction(x: 0.42); // 4.8168371279400235E-06 string str = sw.ToString(CultureInfo.InvariantCulture); // W(x; n = 12) Assert.AreEqual(0.940148636841248, mean); Assert.AreEqual(0.940148636841248, mode); Assert.AreEqual(0.940148636841248, median, 1e-8); Assert.AreEqual(4.8168371279400235E-06, chf); Assert.AreEqual(4.8168255270011394E-06, cdf); Assert.AreEqual(0.000043477460596194137, pdf); Assert.AreEqual(-10.043267901368219, lpdf); Assert.AreEqual(4.3477670020544943E-05, hf); Assert.AreEqual(0.999995183174473, ccdf); Assert.AreEqual(0.42000002275671627, icdf, 1e-8); Assert.AreEqual("W(x; n = 12)", str); var range1 = sw.GetRange(0.95); Assert.AreEqual(0.8607805197002204, range1.Min, 1e-6); Assert.AreEqual(0.97426955790462533, range1.Max, 1e-6); var range2 = sw.GetRange(0.99); Assert.AreEqual(0.80248479750351542, range2.Min, 1e-6); Assert.AreEqual(0.98186388183806661, range2.Max, 1e-6); var range3 = sw.GetRange(0.01); Assert.AreEqual(0.80248479750351542, range3.Min, 1e-6); Assert.AreEqual(0.98186388183806661, range3.Max, 1e-6); Assert.AreEqual(0, sw.Support.Min); Assert.AreEqual(1, sw.Support.Max); Assert.AreEqual(sw.InverseDistributionFunction(0), sw.Support.Min); Assert.AreEqual(sw.InverseDistributionFunction(1), sw.Support.Max); }
public void inverse_cdf_simple() { var sw = new ShapiroWilkDistribution(samples: 12); double cdf = sw.DistributionFunction(x: 0.42); Assert.AreEqual(4.8168255270011394E-06, cdf); double ccdf = sw.ComplementaryDistributionFunction(x: 0.42); Assert.AreEqual(0.999995183174473, ccdf); // Shapiro-Wilk support is inversed? double icdf = sw.InverseDistributionFunction(p: cdf); Assert.AreEqual(0.42000002275671627, icdf, 1e-8); }
public void inverse_cdf() { foreach (int samples in new[] { 5, 10, 11, 15 }) { var dist = new ShapiroWilkDistribution(samples: samples); double[] percentiles = Vector.Range(0.49, 0.51, stepSize: 0.01); for (int i = 0; i < percentiles.Length; i++) { double p = percentiles[i]; double icdf = dist.InverseDistributionFunction(p); double cdf = dist.DistributionFunction(icdf); Assert.AreEqual(p, cdf, 1e-5); } } }