[R] equivalent of Matlab robustfit?

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


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
        'mad_s'     MAD estimate of sigma; used for scaling
                    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.

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


More information about the R-help mailing list