Making boxplot after removing the outliers

5 views (last 30 days)
Hi dear Steve,
I used the following code to find out and remove the outliers from my several data sets. I found the outliers and removed but while making the boxplot it still shows some outliers as circular symbols above or lower the data range in the boxplot. Would you please tell me why does this happen ?
close all; clear all; clc X = xlsread('CO-2009.xlsx'); mu = mean(X); sigma = std(X);
[n,p] = size(X); MeanMat = repmat(mu,n,1); SigmaMat = repmat(sigma,n,1); outliers = abs(X - MeanMat) > 3*SigmaMat; nout = sum(outliers); X(any(outliers,2),:) = []; boxplot(X) ylabel('CO (ppbv)') h=findobj(gca,'tag','Outliers'); set(h,'Marker','o'); title('BoxPlot for CO outliers in 2009') xlswrite('CO data without OLs_2009.xlsx',X)
Rahman

Accepted Answer

Tom Lane
Tom Lane on 21 Feb 2012
A point is declared an outlier based on a comparison of its value with quartiles of the data. If you take out an outlier, you also change the data used to compute the quartiles. Other points might be declared to be outliers based on the quartiles of the remaining data. The vector x=1./(1:20)' exhibits this phenomenon.
If you just want to suppress the display of the outliers without excluding them from the quartile calculation, you could display them with an empty symbol:
boxplot(x,'symbol','')
The axis limits will also take the outliers into account, so you may want to change them if you don't like that.
  2 Comments
Youngjea
Youngjea on 21 Apr 2021
Very smart answer... Thank you.
jkr
jkr on 24 Aug 2023
'symbol','' works when the boxplot is generated. However, if I select the contents of the figure to increase the line width surrounding each box for improved visibility, the outliers are depicted with blue squares. I cannot find how to remove these. Can anyone help?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!