scaleTau2: Robust Tau-Estimate of Scale

View source: R/OGK.R

scaleTau2R Documentation

Robust Tau-Estimate of Scale

Description

Computes the robust \tau-estimate of univariate scale, as proposed by Maronna and Zamar (2002); improved by a consistency factor,

Usage


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)

Arguments

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 NA values should be stripped before the computation proceeds.

consistency

logical indicating if the consistency correction factor (for the scale) should be applied.

mu0

the initial location estimate \mu_0, defaulting to the median.

sigma0

the initial scale estimate s_0, 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 mu.too=FALSE as by default).

iter

positive integer or logical indicating if and how many iterations should be done. The default, iter = 1 computes the “traditional” tau-estimate of scale.

tol.iter

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.

Details

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.

Value

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)).

Author(s)

Original by Kjell Konis with substantial modifications by Martin Maechler.

References

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.

See Also

Sn, Qn, mad; further covOGK for which scaleTau2 was designed.

Examples

x <- c(1:7, 1000)
sd(x) # non-robust std.deviation
scaleTau2(x)
scaleTau2(x, mu.too = TRUE)
(sI  <- scaleTau2(c(x,Inf), mu.too = TRUE))
(sIN <- scaleTau2(c(x,Inf,NA), mu.too = TRUE, na.rm=TRUE))
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

robustbase documentation built on Nov. 1, 2024, 3 p.m.