Improved outlier calculation

This commit is contained in:
nise.moe 2024-03-06 11:51:53 +01:00
parent 55e4b745ef
commit f3695a016c

View File

@ -145,13 +145,12 @@ export class ChartHitDistributionComponent implements OnInit, OnChanges {
let {errorDetails, ys} = this.calculateData(data); let {errorDetails, ys} = this.calculateData(data);
// Calculate IQR // Calculate IQR
const q1 = ys[Math.floor((ys.length / 4))]; const percentiles = this.percentile(ys, [25, 75]);
const q3 = ys[Math.floor((ys.length * 3) / 4)]; const iqr = percentiles[1] - percentiles[0];
const iqr = q3 - q1;
// Calculate bounds // Calculate bounds
const lowerBound = q1 - 1.5 * iqr; const lowerBound = percentiles[0] - 1.5 * iqr;
const upperBound = q3 + 1.5 * iqr; const upperBound = percentiles[1] + 1.5 * iqr;
// Filter outliers // Filter outliers
const filteredDetails = errorDetails.filter(detail => detail.x > lowerBound && detail.x < upperBound); const filteredDetails = errorDetails.filter(detail => detail.x > lowerBound && detail.x < upperBound);
@ -166,6 +165,10 @@ export class ChartHitDistributionComponent implements OnInit, OnChanges {
} }
}); });
if(Object.entries(filteredData).length === 0) {
return data;
}
return filteredData; return filteredData;
} }