public static NumericDistribution?GenerateDistribution(HistogramWithCounts histogramResult) { if (histogramResult.ValueCounts.NonSuppressedNonNullCount == 0) { return(null); } var samples = histogramResult.Histogram.Buckets.Values.Select(bucket => { var sampleValue = bucket.LowerBound + (bucket.BucketSize.SnappedSize / 2); var sampleWeight = Convert.ToInt32(bucket.Count); return(new { SampleValue = sampleValue, SampleWeight = sampleWeight, }); }); var dist = new EmpiricalDistribution( samples.Select(_ => Convert.ToDouble(_.SampleValue)).ToArray(), samples.Select(_ => _.SampleWeight).ToArray()); return(new NumericDistribution(dist)); }
public static Task <List <double> > EstimateQuartiles(HistogramWithCounts hwc) => EstimateQuartiles(hwc.Histogram);
public static Task <decimal> EstimateAverage(HistogramWithCounts hwc) => EstimateAverage(hwc.Histogram);