diff --git a/src/Numerics/Statistics/Percentile.cs b/src/Numerics/Statistics/Percentile.cs index 59c8aa29..03cf2434 100644 --- a/src/Numerics/Statistics/Percentile.cs +++ b/src/Numerics/Statistics/Percentile.cs @@ -66,6 +66,7 @@ namespace MathNet.Numerics.Statistics /// /// Class to calculate percentiles. /// + [Obsolete("Use Statistics.Quantile or .QuantileFunc or one of the custom variants instead. Scheduled for removal in v3.0.")] public class Percentile { /// diff --git a/src/UnitTests/StatisticsTests/PercentileTests.cs b/src/UnitTests/StatisticsTests/PercentileTests.cs index cc448e28..216d119d 100644 --- a/src/UnitTests/StatisticsTests/PercentileTests.cs +++ b/src/UnitTests/StatisticsTests/PercentileTests.cs @@ -55,6 +55,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests Method = PercentileMethod.Nist }; Assert.AreEqual(95.19807, percentile.Compute(.9)); + Assert.AreEqual(95.19807, Data.QuantileCustom(.9, QuantileDefinition.Nist)); } /// @@ -68,6 +69,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests Method = PercentileMethod.Excel }; Assert.AreEqual(95.19568, percentile.Compute(.9)); + Assert.AreEqual(95.19568, Data.QuantileCustom(.9, QuantileDefinition.Excel)); } /// @@ -81,6 +83,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests Method = PercentileMethod.Nearest }; Assert.AreEqual(95.1959, percentile.Compute(.9)); + Assert.AreEqual(95.1959, Data.QuantileCustom(.9, QuantileDefinition.Nearest)); } /// @@ -94,11 +97,17 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests { Method = PercentileMethod.Interpolation }; + var values = new[] {.25, .5, .75}; var percentiles = percentile.Compute(values); Assert.AreEqual(1.75, percentiles[0]); Assert.AreEqual(3.0, percentiles[1]); Assert.AreEqual(4.25, percentiles[2]); + + var q = data.QuantileCustomFunc(QuantileDefinition.R5); + Assert.AreEqual(1.75, q(0.25)); + Assert.AreEqual(3.0, q(0.5)); + Assert.AreEqual(4.25, q(0.75)); } /// @@ -110,6 +119,7 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests var data = new double[] {}; var percentile = new Percentile(data); Assert.IsTrue(double.IsNaN(percentile.Compute(0))); + Assert.IsTrue(double.IsNaN(data.Quantile(0))); } /// @@ -121,6 +131,8 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests var percentile = new Percentile(Data); Assert.IsTrue(double.IsNaN(percentile.Compute(-0.1))); Assert.IsTrue(double.IsNaN(percentile.Compute(1.1))); + Assert.IsTrue(double.IsNaN(Data.Quantile(-0.1))); + Assert.IsTrue(double.IsNaN(Data.Quantile(1.1))); } } }