Add isSignificant to result. (#4030)

If the change is not significant, it will be zero. Else
Cliffs delta is used to determine how large the change is.

In Graphite we could then alert on everything > 0. And then match
Cliffs delta to tell us if the change is small, medium or large.
This commit is contained in:
Peter Hedenskog 2023-12-15 14:42:42 +01:00 committed by GitHub
parent 26e6005682
commit 0039afb460
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -356,6 +356,10 @@ export function getMetrics(data) {
};
}
export function getIsSignificant(u, cliffs) {
return u < 0.05 ? cliffs : 0;
}
export function cliffsDelta(x, y) {
const n_x = x.length;
const n_y = y.length;

View File

@ -11,7 +11,8 @@ import {
getStatistics,
runStatisticalTests,
getMetrics,
cliffsDelta
cliffsDelta,
getIsSignificant
} from './helper.js';
import { getBaseline, saveBaseline } from './baseline.js';
@ -39,7 +40,16 @@ const DEFAULT_METRICS_PAGESUMMARY = [
'metrics.renderBlocking.*.statisticalTestU',
'metrics.elementTimings.*.statisticalTestU',
'metrics.userTimings.*.statisticalTestU',
'metrics.extras.*.statisticalTestU'
'metrics.extras.*.statisticalTestU',
'metrics.timings.*.isSignificant',
'metrics.cpu.*.isSignificant',
'metrics.cdp.*.isSignificant',
'metrics.visualMetrics.*.isSignificant',
'metrics.googleWebVitals.*.isSignificant',
'metrics.renderBlocking.*.isSignificant',
'metrics.elementTimings.*.isSignificant',
'metrics.userTimings.*.isSignificant',
'metrics.extras.*.isSignificant'
];
export default class ComparePlugin extends SitespeedioPlugin {
@ -174,6 +184,7 @@ export default class ComparePlugin extends SitespeedioPlugin {
baselineMetrics[group][metricName].getValues()
);
const cliffs = cliffsDelta(currentStats.data, baselineStats.data);
finalResult[group][metricName] = {
current: {
stdev: currentStats.stddev(),
@ -188,7 +199,8 @@ export default class ComparePlugin extends SitespeedioPlugin {
values: baselineStats.data
},
statisticalTestU: result['p-value'],
cliffsDelta: cliffsDelta(currentStats.data, baselineStats.data)
cliffsDelta: cliffs,
isSignificant: getIsSignificant(result['p-value'], cliffs)
};
}
}