Robust Tau-Estimate of Scale
Computes the robust τ-estimate of univariate scale, as proposed by Maronna and Zamar (2002); improved by a consistency factor,
scaleTau2(x, c1 = 4.5, c2 = 3.0, na.rm = FALSE, consistency = TRUE, sigma0 = median(x.), mu.too = FALSE)
x |
numeric vector |
c1,c2 |
non-negative numbers, specifying cutoff values for the biweighting of the mean and the rho function respectively. |
na.rm |
a logical value indicating whether |
consistency |
logical indicating if the consistency correction factor (for the scale) should be applied. |
sigma0 |
the initial scale estimate s0, defaulting to the MAD; may be set to a positive value when the MAD is zero. |
mu.too |
logical indicating if both location and scale should be
returned or just the scale (when |
First, s0 := MAD, i.e. the equivalent of mad(x,
constant=1)
is computed. Robustness weights
w_i := w_{c1}((x_i - med(X))/ s_0) are computed, where
w_c(u) = max(0, (1 - (u/c)^2)^2). The robust location
measure is defined as μ(X) := (∑_i w_i x_i)/(∑_i w_i),
and the robust tau-estimate is s(X)^2 :=
s_0^2 * (1/n) ∑_i ρ_{c2}((x_i - μ(X))/s_0),
where ρ_c(u) = min(c^2, u^2).
scaleTau2(*, consistency=FALSE)
returns s(X), whereas
this value is divided by its asymptotic limit when consistency =
TRUE
as by default.
Note that for n = length(x) == 2
, all equivariant scale estimates are
proportional, and specifically, scaleTau2(x, consistency=FALSE)
== mad(x, constant=1)
. See also the reference.
numeric vector of length one (if mu.too
is FALSE
as by
default) or two (when mu.too = TRUE
) with robust scale or
(location,scale) estimators
s^(x) or
(m^(x), s^(x)).
Original by Kjell Konis with substantial modifications by Martin Maechler.
Maronna, R.A. and Zamar, R.H. (2002) Robust estimates of location and dispersion of high-dimensional datasets; Technometrics 44(4), 307–317.
Yohai, V.J., and Zamar, R.H. (1988). High breakdown-point estimates of regression by means of the minimization of an efficient scale. Journal of the American Statistical Association 83, 406–413.
x <- c(1:7, 1000) sd(x) # non-robust std.deviation scaleTau2(x) scaleTau2(x, mu.too = TRUE) if(doExtras <- robustbase:::doExtras()) { set.seed(11) ## show how much faster this is, compared to Qn x <- sample(c(rnorm(1e6), rt(5e5, df=3))) (system.time(Qx <- Qn(x))) ## 2.04 [2017-09, lynne] (system.time(S2x <- scaleTau2(x))) ## 0.25 (ditto) cbind(Qn = Qx, sTau2 = S2x) }## Qn sTau2 ## 1.072556 1.071258
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.