scaleTau2.RdComputes the robust \(\tau\)-estimate of univariate scale, as proposed by Maronna and Zamar (2002); improved by a consistency factor,
<!-- %--> ../R/OGK.R <<< -->
scaleTau2(x, c1 = 4.5, c2 = 3.0, na.rm = FALSE, consistency = TRUE,
mu0 = median(x),
sigma0 = median(x.), mu.too = FALSE, iter = 1, tol.iter = 1e-7)numeric vector
non-negative numbers, specifying cutoff values for the biweighting of the mean and the rho function respectively.
a logical value indicating whether NA
values should be stripped before the computation proceeds.
logical indicating if the consistency correction factor (for the scale) should be applied.
the initial location estimate \(\mu_0\), defaulting to
the median.
the initial scale estimate \(s_0\), defaulting to the MAD; may be set to a positive value when the MAD is zero.
logical indicating if both location and scale should be
returned or just the scale (when mu.too=FALSE as by default).
positive integer or logical indicating if and how many
iterations should be done. The default, iter = 1 computes the
“traditional” tau-estimate of scale.
if iter is true, or iter > 1, stop the
iterations when \(|s_n - s_o| \le \epsilon s_n\), where
\(\epsilon :=\)tol.iter, and \(s_o\) and \(s_n\) are the
previous and current estimates of \(\sigma\).
First, \(s_0\) := 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 \(\mu(X) := (\sum_i w_i x_i)/(\sum_i w_i)\),
and the robust \(\tau (tau)\)-estimate is \(s(X)^2 :=
s_0^2 * (1/n) \sum_i \rho_{c2}((x_i - \mu(X))/s_0)\),
where \(\rho_c(u) = min(c^2, u^2)\).
When iter=TRUE or iter > 1, the above estimate is
iterated in a fixpoint iteration, setting \(s_0\) to the current
estimate \(s(X)\) and iterating until the number of iterations is
larger than iter or the fixpoint is found in the sense that
\
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
\(\hat\sigma(x)\) or
\((\hat\mu(x),\hat\sigma(x))\).
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
#> [1] 352.1449
scaleTau2(x)
#> [1] 2.942916
scaleTau2(x, mu.too = TRUE)
#> [1] 4.099889 2.942916
(sI <- scaleTau2(c(x,Inf), mu.too = TRUE))
#> [1] 4.201241 3.471278
(sIN <- scaleTau2(c(x,Inf,NA), mu.too = TRUE, na.rm=TRUE))
#> [1] 4.201241 3.471278
stopifnot({
identical(sI, sIN)
all.equal(scaleTau2(c(x, 999), mu.too = TRUE), sIN,
tol = 1e-15)
})
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