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)));
}
}
}