From f3695a016c2e83dd8b6d3ffd83e8925fecfb1728 Mon Sep 17 00:00:00 2001 From: "nise.moe" Date: Wed, 6 Mar 2024 11:51:53 +0100 Subject: [PATCH] Improved outlier calculation --- .../chart-hit-distribution.component.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/nise-frontend/src/corelib/components/chart-hit-distribution/chart-hit-distribution.component.ts b/nise-frontend/src/corelib/components/chart-hit-distribution/chart-hit-distribution.component.ts index b797f9d..9c50ea2 100644 --- a/nise-frontend/src/corelib/components/chart-hit-distribution/chart-hit-distribution.component.ts +++ b/nise-frontend/src/corelib/components/chart-hit-distribution/chart-hit-distribution.component.ts @@ -145,13 +145,12 @@ export class ChartHitDistributionComponent implements OnInit, OnChanges { let {errorDetails, ys} = this.calculateData(data); // Calculate IQR - const q1 = ys[Math.floor((ys.length / 4))]; - const q3 = ys[Math.floor((ys.length * 3) / 4)]; - const iqr = q3 - q1; + const percentiles = this.percentile(ys, [25, 75]); + const iqr = percentiles[1] - percentiles[0]; // Calculate bounds - const lowerBound = q1 - 1.5 * iqr; - const upperBound = q3 + 1.5 * iqr; + const lowerBound = percentiles[0] - 1.5 * iqr; + const upperBound = percentiles[1] + 1.5 * iqr; // Filter outliers 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; }