Robust Regression versus Standard Least-Squares Fit
This example shows how to use robust regression. It compares the results of a robust fit to a standard least-squares fit.
Step 1. Prepare data.
Load the moore data. The data is in the first five columns, and the response in the sixth.
load moore X = [moore(:,1:5)]; y = moore(:,6);
Step 2. Fit robust and nonrobust models.
Fit two linear models to the data, one using robust fitting, one not.
mdl = fitlm(X,y); % not robust mdlr = fitlm(X,y,'RobustOpts','on');
Step 3. Examine model residuals.
Examine the residuals of the two models.
subplot(1,2,1) plotResiduals(mdl,'probability') subplot(1,2,2) plotResiduals(mdlr,'probability')
The residuals from the robust fit (right half of the plot) are nearly all closer to the straight line, except for the one obvious outlier.
Step 4. Remove the outlier from the standard model.
Find the index of the outlier. Examine the weight of the outlier in the robust fit.
[~,outlier] = max(mdlr.Residuals.Raw); mdlr.Robust.Weights(outlier)
ans = 0.0246
Check the median weight.
ans = 0.9718
This weight of the outlier in the robust fit is much less than a typical weight of an observation.