lmrob, the MM-type regression
estimator and the associated S-, M- and D-estimators. Using
setting="KS2011" sets the defaults as suggested by
Koller and Stahel (2011) and analogously for "KS2014".lmrob.control(setting, seed = NULL, nResample = 500,
tuning.chi = NULL, bb = 0.5, tuning.psi = NULL,
max.it = 50, groups = 5, n.group = 400,
k.fast.s = 1, best.r.s = 2,
k.max = 200, maxit.scale = 200, k.m_s = 20,
refine.tol = 1e-7, rel.tol = 1e-7, solve.tol = 1e-7,
trace.lev = 0,
mts = 1000, subsampling = c("nonsingular", "simple"),
compute.rd = FALSE, method = "MM", psi = "bisquare",
numpoints = 10, cov = NULL,
split.type = c("f", "fi", "fii"), fast.s.large.n = 2000,
eps.outlier = function(nobs) 0.1 / nobs,
eps.x = function(maxx) .Machine$double.eps^(.75)*maxx,
compute.outlier.stats = method,
warn.limit.reject = 0.5,
warn.limit.meanrw = 0.5, ...).Mchi.tuning.defaults
.Mchi.tuning.default(psi)
.Mpsi.tuning.defaults
.Mpsi.tuning.default(psi)
"KS2011" or "KS2014"
for the defaults suggested by Koller and Stahel (2011, 2014).
See Details.NULL or an integer vector compatible with
.Random.seed: the seed to be used for random
re-sampling used in obtaining candidates for the initial
S-estimator. The current value NULL, as by default, sensible defaults are set (depending on
psi) to yield a 50% breakdown estimator. See Details.tuning.chi. This is used to compute the
S-estimator.NULL, as by default, this is set (depending
on psi) to yield an estimator with asymptotic efficiency of
95% for normal errors. See Details.groups above. Note that this must be at least $p$.find_scale() iterations.solve.default()'s tol.trace.lev = 0 does
no tracing."simple" for simple subsampling (default prior to version 0.9),
"nonsingular" for nonsingular subsampling. See also
lmrob.S.covMcd) are to be
computed for the robust diagnostic plots. This may take some
time to finish, particularly fMM
is interpreted as SM. See Details of
lmrob for a description of the possible values.lmrob. Defaults to
"bisquare" for S and MM-estimates, otherwise "lqq".if(method %in% c('SM', 'MM')) ".vcov.avar1" else ".vcov.w".
See Details of lmrosplitFrame.summary.lmrocharacter
strings, each valid to be used as method argument. Used to
specify for which estimators outlier statistics (and warnings)
should be produced. Set to empty stNULL to disable warning.NULL to disable warning.list
components to the result, e.g., those to be used in .vcov.w()..Mchi.tuning.default(psi) and .Mpsi.tuning.default(psi)
return a short numeric vector of tuning constants which
are defaults for the corresponding psi-function, see the Details.
They are based on the named lists
.Mchi.tuning.defaults and .Mpsi.tuning.defaults,
respectively. lmrob.control() returns a named list with over
twenty components, corresponding to the arguments, where
tuning.psi and tuning.chi are typically computed, as
.Mpsi.tuning.default(psi) or .Mchi.tuning.default(psi),
respectively.
setting="KS2011" alters the default
arguments. They are changed to method = 'SMDM', psi = 'lqq',
max.it = 500, k.max = 2000, cov = '.vcov.w'.
The defaults of all the remaining arguments are not changed. The option setting="KS2014" builds upon setting="KS2011".
More arguments are changed to best.r.s = 20, k.fast.s = 2,
nResample = 1000. This setting should produce more stable estimates
for designs with factors.
By default, and in .Mpsi.tuning.default() and .Mchi.tuning.default(),
tuning.chi and tuning.psi are set to yield an
MM-estimate with break-down point $0.5$ and efficiency of 95% at
the normal.
To get these defaults, e.g., .Mpsi.tuning.default(psi) is
equivalent to but more efficient than the formerly widely used
lmrob.control(psi = psi)$tuning.psi.
These defaults are:
psi tuning.chi tuning.psi
bisquare 1.54764 4.685061
welsh 0.5773502 2.11
ggw c(-0.5, 1.5, NA, 0.5) c(-0.5, 1.5, 0.95, NA)
lqq c(-0.5, 1.5, NA, 0.5) c(-0.5, 1.5, 0.95, NA)
optimal 0.4047 1.060158
hampel c(1.5, 3.5, 8)*0.2119163 c(1.5, 3.5, 8)*0.9014
}
The values for the tuning constant for the ggw psi function are
hard coded. The constants vector has four elements: minimal slope, b
(controlling the bend at the maximum of the curve), efficiency,
break-down point. Use NA for an unspecified value, see examples
in the tables.
The constants for the "hampel" psi function are chosen to have a
redescending slope of $-1/3$. Constants for a slope of $-1/2$
would be
psi tuning.chi tuning.psi
"hampel" c(2, 4, 8) * 0.1981319 c(2, 4, 8) * 0.690794
}
Alternative coefficients for an efficiency of 85%
at the normal are given in the table below.
psi tuning.psi
bisquare 3.443689
welsh 1.456
ggw, lqq c(-0.5, 1.5, 0.85, NA)
optimal 0.8684
hampel (-1/3) c(1.5, 3.5, 8)* 0.5704545
hampel (-1/2) c( 2, 4, 8) * 0.4769578
}
Koller, M. and Stahel, W.A. (2014) Nonsingular subsampling for regression S~estimators with categorical predictors. Under review.
lmrob, also for references and examples.## Show the default settings:
str(lmrob.control())
## Artificial data for a simple "robust t test":
set.seed(17)
y <- y0 <- rnorm(200)
y[sample(200,20)] <- 100*rnorm(20)
gr <- as.factor(rbinom(200, 1, prob = 1/8))
lmrob(y0 ~ 0+gr)
## Use Koller & Stahel(2011)'s recommendation but a larger 'max.it':
str(ctrl <- lmrob.control("KS2011", max.it = 1000))
str(.Mpsi.tuning.defaults)
stopifnot(identical(.Mpsi.tuning.defaults,
sapply(names(.Mpsi.tuning.defaults),
.Mpsi.tuning.default)))Run the code above in your browser using DataLab