This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Clamp (winsorize) extremal values

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.


stats::winsorize([x1, x2, …], α)
stats::winsorize([[x11, x12, …], [x21, x22, …], …], α, i)
stats::winsorize(s, α, i)


stats::winsorize([x1, x2, …], α) returns a copy of [x1, x2, …] in which all entries smaller than the α quantile are replaced by this value and likewise for all entries larger than the 1 - α quantile.

stats::winsorize([[x11, x12,...], [x21, x22,...],...], α, i) and stats::winsorize(stats::sample([[x11, x12,...], [x21, x22,...],...]), α, i) works on the i-th entries of the input rows.

Measurement data often contains “outliers,” sample points rather far outside the range containing the majority of the points. While expected both from theory and experience, these outliers, for small or medium-sized samples, tend to distort statistical data such as the mean value.

One of the standard methods dealing with this problem for (real) continuous scales is clamping the outliers. stats::winsorize sets all data points below or above a given quantile to these quantiles. This operation is named after its inventor, Charles P. Winsor.


Example 1

Create a normally distributed sample, slightly contaminated:

r := stats::normalRandom(0, 1, Seed=2):
data := [r() $ i = 1..300, 100*r() $ i = 1..2]:

The two extra points distort the data significantly:

plot(plot::Histogram2d(data, Cells=20))

Using either stats::winsorize removes this noise and the image shows more detail:

plot(plot::Histogram2d(stats::winsorize(data, 1/100), Cells=20))

Both stats::winsorize reduces the standard deviation of the sample. Keeping in mind that the standard deviation of the random number generator is 1, compute that of the data in its various forms:

stats::stdev(stats::winsorize(data, 1/20))


x1, x2, x11, …

Statistical data: arithmetical expressions. The data to filter on must be real-valued.


Sample of type stats::sample


Cutoff parameter: a real-valued expression .


Column index: positive integer. The nested list or the sample is winsorized on its i-th column.

Return Values

The input data with outliers being replaced by the values of quantiles.

See Also

MuPAD Functions

Was this topic helpful?