# [R] equivalent of Matlab robustfit?

Darren Weber darren.weber.lists at gmail.com
Wed Nov 21 07:26:55 CET 2007

```Hi,

I've been using the Matlab robustfit function for linear regressions
where I suspect some data points are outliers.  Is there an equivalent
function in R?

Take care, Darren

PS, This is the Matlab help on robustfit:

>> help robustfit
ROBUSTFIT Robust linear regression
B = ROBUSTFIT(X,Y) returns the vector B of regression coefficients,
obtained by performing robust regression to estimate the linear model
Y = Xb.  X is an n-by-p matrix of predictor variables, and Y is an
n-by-1 vector of observations.  The algorithm uses iteratively
reweighted least squares with the bisquare weighting function.  By
default, ROBUSTFIT adds a column of ones to X, corresponding to a
constant term in the first element of B.  Do not enter a column of ones
directly into the X matrix.

B = ROBUSTFIT(X,Y,'WFUN',TUNE) uses the weighting function 'WFUN' and
tuning constant TUNE.  'WFUN' can be any of 'andrews', 'bisquare',
'cauchy', 'fair', 'huber', 'logistic', 'talwar', or 'welsch'.
Alternatively 'WFUN' can be a function that takes a residual vector as
input and produces a weight vector as output.  The residuals are scaled
by the tuning constant and by an estimate of the error standard
deviation before the weight function is called.  'WFUN' can be
specified using @ (as in @myfun).  TUNE is a tuning constant that is
divided into the residual vector before computing the weights, and it
is required if 'WFUN' is specified as a function.

B = ROBUSTFIT(X,Y,'WFUN',TUNE,'CONST') controls whether or not the
model will include a constant term.  'CONST' is 'on' (the default) to
include the constant term, or 'off' to omit it.

[B,STATS] = ROBUSTFIT(...) also returns a STATS structure
containing the following fields:
'ols_s'     sigma estimate (rmse) from least squares fit
'robust_s'  robust estimate of sigma
residuals during the iterative fitting
's'         final estimate of sigma, the larger of robust_s
and a weighted average of ols_s and robust_s
'se'        standard error of coefficient estimates
't'         ratio of b to stats.se
'p'         p-values for stats.t
'covb'      estimated covariance matrix for coefficient estimates
'coeffcorr' estimated correlation of coefficient estimates
'w'         vector of weights for robust fit
'h'         vector of leverage values for least squares fit
'dfe'       degrees of freedom for error
'R'         R factor in QR decomposition of X matrix

The ROBUSTFIT function estimates the variance-covariance matrix of the
coefficient estimates as V=inv(X'*X)*STATS.S^2.  The standard errors
and correlations are derived from V.

ROBUSTFIT treats NaNs in X or Y as missing values, and removes them.

Example:
x = (1:10)';
y = 10 - 2*x + randn(10,1); y(10) = 0;
bls = regress(y,[ones(10,1) x])
brob = robustfit(x,y)
scatter(x,y)
hold on
plot(x,brob(1)+brob(2)*x,'r-', x,bls(1)+bls(2)*x,'m:')