/// <summary> /// Estimates the p-Percentile value from the provided samples. /// If a non-integer Percentile is needed, use Quantile instead. /// Approximately median-unbiased regardless of the sample distribution (R8). /// </summary> /// <param name="data">The data sample sequence.</param> /// <param name="p">Percentile selector, between 0 and 100 (inclusive).</param> public static double Percentile(this IEnumerable <double?> data, int p) { if (data == null) { throw new ArgumentNullException("data"); } var array = data.Where(d => d.HasValue).Select(d => d.Value).ToArray(); return(ArrayStatistics.PercentileInplace(array, p)); }
/// <summary> /// Estimates the p-Percentile value from the provided samples. /// If a non-integer Percentile is needed, use Quantile instead. /// Approximately median-unbiased regardless of the sample distribution (R8). /// </summary> /// <param name="data">The data sample sequence.</param> /// <param name="p">Percentile selector, between 0 and 100 (inclusive).</param> public static double Percentile(this IEnumerable <double?> data, int p) { var array = data.Where(d => d.HasValue).Select(d => d.Value).ToArray(); return(ArrayStatistics.PercentileInplace(array, p)); }
/// <summary> /// Estimates the p-Percentile value from the provided samples. /// If a non-integer Percentile is needed, use Quantile instead. /// Approximately median-unbiased regardless of the sample distribution (R8). /// </summary> /// <param name="data">The data sample sequence.</param> /// <param name="p">Percentile selector, between 0 and 100 (inclusive).</param> public static double Percentile(this IEnumerable <double> data, int p) { var array = data.ToArray(); return(ArrayStatistics.PercentileInplace(array, p)); }