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).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, ...).Mchi.tuning.defaults
.Mchi.tuning.default(psi)
.Mpsi.tuning.defaults
.Mpsi.tuning.default(psi)
"KS2011" for the defaults
suggested by Koller and Stahel (2011). 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.list
components to the result..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. 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
}
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