Trimmed and Winsorized Means
Install and import#
npm install fintech-algorithmsimport { trimmedAndWinsorizedMeans } from "fintech-algorithms/foundations/location-ranking-and-exploratory-summaries/trimmed-and-winsorized-means";Signature#
trimmedAndWinsorizedMeans(input)Cuts the same number of observations off each tail of the sorted series and averages what is left, then averages again with those tails replaced by the surviving boundary values instead of discarded.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | { values: number[]; trimProportion: number } | values holds the observations and trimProportion the share to remove from each tail. The cut size is floor(values.length * trimProportion), so small samples may round the trim down to zero.trimProportion: 0 <= trimProportion < 0.5, and the two cuts together must leave at least one observation |
Returns#
{ trimmedMean: number; winsorizedMean: number; trimmedCount: number }
trimmedMean averages only the surviving middle, winsorizedMean averages the full-length series with each tail replaced by the nearest kept value, and trimmedCount is how many observations the trimmed mean was computed from.
Errors#
- When
inputis null, an array, or not an object — throws TypeError - When
valuesis missing, is not an array, or is empty — throws RangeError - When any entry of
valuesdoes not coerce to a finite number — throws RangeError - When
trimProportionis negative, is 0.5 or more, or is not a number — throws RangeError - When the two cuts together would remove every observation — throws RangeError
Complexity: time O(n log n),
space O(n).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"values": [1, 2, 2, 4, 9],
"weights": [1, 1, 2, 1, 1],
"trimProportion": 0.2,
"bins": 4
}Call#
trimmedAndWinsorizedMeans(input)Returns#
object with 2 fields: trimmedMean, winsorizedMean
{
"trimmedMean": 2.6666666666666665,
"winsorizedMean": 2.8
}Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Measures of Location
- Historical-example decision