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));
        }
Example #2
0
 public static Task <List <double> > EstimateQuartiles(HistogramWithCounts hwc) =>
 EstimateQuartiles(hwc.Histogram);
Example #3
0
 public static Task <decimal> EstimateAverage(HistogramWithCounts hwc) =>
 EstimateAverage(hwc.Histogram);