! Least Median Regression. (LeastMedianReg.lng)
Given a set of observations, some of which may contain
substantial errors ( be we do not know which observations),
decide which observations to discard, and then
fit a prediction formula to the observations retained;
! Keywords: Forecasting, Least Median regression, Regression,
Robust regression, Statistics, Trimming, ;
SETS:
obs: delta, r;
var: beta;
oxv( obs, var): X;
ENDSETS DATA:
obs = 1..50;
var = 1..3;
dependv = 3; ! The index of the dependent variable;
h = 25; ! Number of observations to retain;
Bigm = 999999; ! An upper bound on prediction error;
X =
23 90 1559
39 82 33
67 99 1326
93 55 170
93 28 -370
19 63 1080
47 45 432
90 99 229
82 23 -363
99 55 119
55 46 372
28 70 1111
63 49 350
45 28 800
99 18 -631
23 46 -693
55 70 850
46 49 520
70 28 -140
49 18 -130
28 2 -245
18 70 1214
2 10 180
70 90 21
10 82 1533
90 99 1083
82 18 -455
99 92 861
55 77 42
28 70 1121
63 10 -432
45 90 1350
99 82 651
23 99 1750
55 55 550
46 28 1255
70 63 560
49 18 -130
28 92 1560
18 77 -1360
92 43 -60
77 76 1408
43 29 157
76 34 -89
29 98 1674
34 49 641
98 28 423
28 12 -235
45 28 808
92 27 -368
;
ENDDATA
! Variables:
r(i) = prediction error for observation i,
z = maximum absolute prediction error for
a set of h observations,
delta(i) = 1 if observation i is included in
the error metric.
;
min = z;
@SUM( obs(i): delta(i)) = h;
! The beta(j) can be + or -;
@FOR( var( j) : @FREE( beta(j)));
@FOR( obs( i):
@BIN( delta(i));
@FREE( r(i));
r(i) = X(i,dependv) - @SUM( var( j) | j #ne# dependv: X(i,j)*beta(j));
! |r(i)| <= z if observation i is kept ( delta(i) = 1);
r(i) <= z + BigM*(1-delta(i));
-r(i) <= z + BigM*(1-delta(i));
);
|