MATLAB: Making boxplot after removing the outliers

steve on image processing

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

Best Answer

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.