Multivariate Location, Scale, and Outliers
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: ROBUST5 */
/* TITLE: Multivariate Location, Scale, and Outliers */
/* PRODUCT: IML */
/* DATA: */
/* */
/* SUPPORT: Rick Wicklin UPDATE: SEP 2013 */
/* REF: */
/* MISC: */
/* */
/****************************************************************/
%include sampsrc(robustmc); /* define graphing modules */
proc iml;
load module=_all_; /* load graphing modules */
/* Obs X1 X2 X3 Y Stack Loss data */
SL = { 1 80 27 89 42,
2 80 27 88 37,
3 75 25 90 37,
4 62 24 87 28,
5 62 22 87 18,
6 62 23 87 18,
7 62 24 93 19,
8 62 24 93 20,
9 58 23 87 15,
10 58 18 80 14,
11 58 18 89 14,
12 58 17 88 13,
13 58 18 82 11,
14 58 19 93 12,
15 50 18 89 8,
16 50 18 86 7,
17 50 19 72 8,
18 50 19 79 8,
19 50 20 80 9,
20 56 20 82 15,
21 70 20 91 15 };
x = SL[, 2:4]; y = SL[, 5];
optn = j(5,1,.);
optn[1] = 1; /* print basic output */
optn[2] = 1; /* print covariance matrices */
optn[5]= -1; /* nrep: use all subsets */
ods select ClassicalMean ClassicalCov RobustMVELoc RobustMVEScatter;
call mve(sc, xmve, dist, optn, x);
ods select all;
create Stackloss from SL[c={"ObsNum" "x1" "x2" "x3" "y"}];
append from SL;
close Stackloss;
quit;
proc iml;
load module=_all_; /* load graphing modules */
use Stackloss;
read all var _num_ into SL;
close Stackloss;
x = SL[, 2:4];
optn = j(5,1,.); optn[5]= -1;
vnam = {"Rate", "Temperature", "AcidConcent"};
titl = "Stack Loss Data: Use All Subsets";
call MVEScatter(x, optn, 0.9, vnam, titl);
proc iml;
load module=_all_; /* load graphing modules */
use Stackloss;
read all var _num_ into SL;
close Stackloss;
x = SL[,2:4];
optn = j(5,1,.);
optn[1]= 2; /* print distances */
optn[2]= 1; /* print covariance matrices */
optn[5]= -1 ; /* nrep: use all subsets */
call mcd(sc, xmcd, dist, optn, x);
proc iml;
load module=_all_; /* load graphing modules */
use Stackloss;
read all var _num_ into SL;
close Stackloss;
x = SL[, 2:4];
optn = j(5,1,.); optn[5]= -1;
vnam = {"Rate", "Temperature", "AcidConcent"};
titl = "Stack Loss Data: Use All Subsets";
call MCDScatter(x, optn, 0.9, vnam, titl);