public void ConstructorTest() { double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; var W = new WilcoxonDistribution(ranks); double mean = W.Mean; // 39.0 double median = W.Median; // 38.5 double var = W.Variance; // 162.5 double cdf = W.DistributionFunction(w: 42); // 0.60817384423279575 double pdf = W.ProbabilityDensityFunction(w: 42); // 0.38418508862319295 double lpdf = W.LogProbabilityDensityFunction(w: 42); // 0.38418508862319295 double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.39182615576720425 double icdf = W.InverseDistributionFunction(p: cdf); // 42 double icdf2 = W.InverseDistributionFunction(p: 0.5); // 42 double hf = W.HazardFunction(x: 42); // 0.98049883339449373 double chf = W.CumulativeHazardFunction(x: 42); // 0.936937017743799 string str = W.ToString(); // "W+(x; R)" Assert.AreEqual(39.0, mean); Assert.AreEqual(38.5, median, 1e-6); Assert.AreEqual(162.5, var); Assert.AreEqual(0.936937017743799, chf); Assert.AreEqual(0.60817384423279575, cdf); Assert.AreEqual(0.38418508862319295, pdf); Assert.AreEqual(-0.95663084089698047, lpdf); Assert.AreEqual(0.98049883339449373, hf); Assert.AreEqual(0.39182615576720425, ccdf); Assert.AreEqual(42, icdf, 1e-6); Assert.AreEqual("W+(x; R)", str); }
public void ConstructorTest2() { double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; var W = new WilcoxonDistribution(ranks, forceExact: true); double mean = W.Mean; // 39 double median = W.Median; // 39 double var = W.Variance; // 162.5 double cdf = W.DistributionFunction(w: 42); // 0.582763671875 double pdf = W.ProbabilityDensityFunction(w: 42); // 0.014404296875 double lpdf = W.LogProbabilityDensityFunction(w: 42); // -4.2402287228136233 double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.417236328125 double icdf = W.InverseDistributionFunction(p: cdf); // 41.965447500067114 double icdf2 = W.InverseDistributionFunction(p: 0.5); // 39.000000487005138 double hf = W.HazardFunction(x: 42); // 0.03452311293153891 double chf = W.CumulativeHazardFunction(x: 42); // 0.87410248360375287 string str = W.ToString(); // "W+(x; R)" Assert.AreEqual(39.0, mean); Assert.AreEqual(39.0, median, 1e-6); Assert.AreEqual(162.5, var); Assert.AreEqual(0.87410248360375287, chf); Assert.AreEqual(0.582763671875, cdf); Assert.AreEqual(0.014404296875, pdf); Assert.AreEqual(-4.2402287228136233, lpdf); Assert.AreEqual(0.03452311293153891, hf); Assert.AreEqual(0.417236328125, ccdf); Assert.AreEqual(42, icdf, 0.05); Assert.AreEqual("W+(x; R)", str); }
public void ConstructorTest2() { double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; var W = new WilcoxonDistribution(ranks, exact: true); double mean = W.Mean; // 39 double median = W.Median; // 39 double var = W.Variance; // 162.5 double cdf = W.DistributionFunction(x: 42); // 0.582763671875 double pdf = W.ProbabilityDensityFunction(x: 42); // 0.014404296875 double lpdf = W.LogProbabilityDensityFunction(x: 42); // -4.2402287228136233 double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.417236328125 double icdf = W.InverseDistributionFunction(p: cdf); // 41.965447500067114 double icdf2 = W.InverseDistributionFunction(p: 0.5); // 39.000000487005138 double hf = W.HazardFunction(x: 42); // 0.03452311293153891 double chf = W.CumulativeHazardFunction(x: 42); // 0.87410248360375287 string str = W.ToString(); // "W+(x; R)" Assert.AreEqual(39.0, mean); Assert.AreEqual(39.0, median, 1e-6); Assert.AreEqual(162.5, var); Assert.AreEqual(0.87410248360375287, chf); Assert.AreEqual(0.59716796875, cdf, 1e-5); Assert.AreEqual(0.014404296875, pdf, 1e-8); Assert.AreEqual(-4.2402287228136233, lpdf); Assert.AreEqual(0.03452311293153891, hf); Assert.AreEqual(0.417236328125, ccdf); Assert.AreEqual(42.5, icdf, 0.05); Assert.AreEqual("W+(x; R)", str); var range1 = W.GetRange(0.95); var range2 = W.GetRange(0.99); var range3 = W.GetRange(0.01); Assert.AreEqual(17.999999736111114, range1.Min, 1e-6); Assert.AreEqual(60.000000315408002, range1.Max, 1e-6); Assert.AreEqual(10.000000351098127, range2.Min, 1e-6); Assert.AreEqual(67.99999981945885, range2.Max, 1e-6); Assert.AreEqual(10.000000351098119, range3.Min, 1e-6); Assert.AreEqual(67.99999981945885, range3.Max, 1e-6); }
public void ProbabilityTest() { // Example from https://onlinecourses.science.psu.edu/stat414/node/319 double[] ranks = { 1, 2, 3 }; WilcoxonDistribution target = new WilcoxonDistribution(ranks); double[] expected = { 1 / 8.0, 1 / 8.0, 1 / 8.0, 2 / 8.0, 1 / 8.0, 1 / 8.0, 1 / 8.0 }; for (int i = 0; i < expected.Length; i++) { // P(W=i) double actual = target.ProbabilityDensityFunction(i); Assert.AreEqual(expected[i], actual); } }
public void ConstructorTest() { double[] ranks = { 1, 2, 3, 4, 5.5, 5.5, 7, 8, 9, 10, 11, 12 }; var W = new WilcoxonDistribution(ranks); double mean = W.Mean; // 39.0 double median = W.Median; // 38.5 double var = W.Variance; // 162.5 double mode = W.Mode; // 39.0 double cdf = W.DistributionFunction(x: 42); // 0.60817384423279575 double pdf = W.ProbabilityDensityFunction(x: 42); // 0.38418508862319295 double lpdf = W.LogProbabilityDensityFunction(x: 42); // 0.38418508862319295 double ccdf = W.ComplementaryDistributionFunction(x: 42); // 0.39182615576720425 double icdf = W.InverseDistributionFunction(p: cdf); // 42 double icdf2 = W.InverseDistributionFunction(p: 0.5); // 42 double hf = W.HazardFunction(x: 42); // 0.98049883339449373 double chf = W.CumulativeHazardFunction(x: 42); // 0.936937017743799 string str = W.ToString(); // "W+(x; R)" Assert.AreEqual(39.0, mean); Assert.AreEqual(39, median, 1e-6); Assert.AreEqual(39.0, mode, 1e-8); Assert.AreEqual(162.5, var); Assert.AreEqual(0.87410248360375287, chf, 1e-8); Assert.AreEqual(0.59716796875, cdf, 1e-8); Assert.AreEqual(0.014404296875, pdf, 1e-8); Assert.AreEqual(-4.2402287228136233, lpdf, 1e-8); Assert.AreEqual(0.03452311293153891, hf, 1e-8); Assert.AreEqual(0.417236328125, ccdf, 1e-8); Assert.AreEqual(42.5, icdf, 0.05); Assert.AreEqual("W+(x; R)", str); Assert.AreEqual(0, W.Support.Min); Assert.AreEqual(double.PositiveInfinity, W.Support.Max); Assert.AreEqual(W.InverseDistributionFunction(0), W.Support.Min); Assert.AreEqual(W.InverseDistributionFunction(1), W.Support.Max); }