robust M-estimation for robust models fitting via IRLS robust

Visualizing Categorical Data: robust

$Version: 1.2-1 (28 Mar 2008)
Michael Friendly
York University

The robust macro ( [download] get robust.sas)

M-estimation for robust models fitting via IRLS

The ROBUST macro uses iteratively reweighted least squares to fit linear models by M-estimation. The weights are determined by the BISQUARE, HUBER, LAV or OLS function. The fitting procedure can be PROC REG, PROC GLM or PROC LOGISTIC

For ANOVA and regression models normally conducted with PROC REG and PROC GLM, this macro is superceded by PROC ROBUSTREG. Even so, it provides an example of how robust methods can be added to other SAS procedures.

Usage

The ROBUST macro is called with keyword parameters. The RESPONSE= and MODEL= parameters are required. The arguments may be listed within parentheses in any order, separated by commas. For example:
  %include data(icu);
  %robust(data=icu, response=died, model=age cancer uncons admit,
     proc=logistic, id=id, iter=3);

Parameters

DATA=
The name of the input data set [Default: DATA=_LAST_]
RESPONSE=
The name of the response variable in the model
MODEL=
The right-hand-side of the MODEL statement
PROC=
The name of the estimation procedure to be used, one of REG, GLM, or LOGISTIC. [Default: PROC=LOGISTIC]
CLASS=
The names of any CLASS variables in the MODEL (for GLM only)
ID=
The names of any observation ID variables. These are simply copied to the OUT= data set.
OUT=
The name of the output data set of observation statistics. [Default: OUT=RESIDS]
OUTPARM=
The name of the output data set of parameter estimates on the final iteration.
FUNCTION=
Weight function, one of HUBER, LAV (least absolute value), BISQUARE, or OLS. [Default: FUNCTION=BISQUARE]
TUNE=
Tuning constant for BISQUARE or HUBER. The weighting function is applied to the value _RESID_ / (&TUNE * MAD) where MAD is the median absolute value of the residuals. The default is TUNE=6 for the BISQUARE function, and TUNE=2 for the HUBER function.
ITER=
The maximum number of iterations [Default: ITER=10]
CONVERGE=
The maximum change in observation weights for convergence. The value must have a leading 0. [Default: CONVERGE=0.05]
PRINT=
Controls printing of intermediate and final results [Default: PRINT=NOPRINT].

Example

%include vcd(robust);        *-- or include in an autocall library;
%include data(icu);

%robust(data=icu, response=died, model=age cancer uncons admit,
        proc=logistic, id=id, iter=3, print=print);
                   Iteration history and parameter estimates

  ITER _LINK_  _NAME_  INTERCEP    AGE     CANCER   UNCONS    ADMIT  _MAXDIF_

    1  LOGIT  ESTIMATE   6.8698 -0.037176 -2.09711 -3.70546 -3.10218  0.9216
    2  LOGIT  ESTIMATE  11.8567 -0.077038 -3.50801 -7.17794 -4.64428  0.4598
    3  LOGIT  ESTIMATE  13.2176 -0.073876 -4.62725 -8.95129 -4.88566  0.9427

See also

inflglim Influence plots for generalized linear models
inflogis Influence plot for logistic regression models