( values: number[], lowerQuantile: number, upperQuantile: number, )
| 115 | * @returns A new array with values clamped to the computed quantile bounds |
| 116 | */ |
| 117 | export function winsorize( |
| 118 | values: number[], |
| 119 | lowerQuantile: number, |
| 120 | upperQuantile: number, |
| 121 | ): number[] { |
| 122 | const sorted = values.toSorted((a, b) => a - b) |
| 123 | const lowerBound = quantile(sorted, lowerQuantile) |
| 124 | const upperBound = quantile(sorted, upperQuantile) |
| 125 | return values.map(v => clamp(v, lowerBound, upperBound)) |
| 126 | } |
| 127 | |
| 128 | export type LineChartAnalysis = { |
| 129 | mean: number |
no test coverage detected