scaleTau2 function

Robust Tau-Estimate of Scale

Robust Tau-Estimate of Scale

Computes the robust τ\tau-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, 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 mu0mu0, defaulting to the median.

  • sigma0: the initial scale estimate s0s0, 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 snsoϵsn|s_n - s_o| \le \epsilon s_n, where ϵ:=\epsilon :=tol.iter, and sos_o and sns_n are the previous and current estimates of σ\sigma.

Details

First, s0s0 := MAD, i.e. the equivalent of mad(x, constant=1) is computed. Robustness weights wi:=wc1((ximed(X))/s0)w_i := w_{c1}((x_i - med(X))/ s_0) are computed, where wc(u)=max(0,(1(u/c)2)2)w_c(u) = max(0, (1 - (u/c)^2)^2). The robust location measure is defined as μ(X):=(iwixi)/(iwi)\mu(X) := (\sum_i w_i x_i)/(\sum_i w_i), and the robust tautau-estimate is c("s(X)2:=\ns(X)^2 :=\n", "s02(1/n)sumirhoc2((ximu(X))/s0) s_0^2 * (1/n) \\sum_i \\rho_{c2}((x_i - \\mu(X))/s_0)"), where ρc(u)=min(c2,u2)\rho_c(u) = min(c^2, u^2).

When iter=TRUE or iter > 1, the above estimate is iterated in a fixpoint iteration, setting s0s_0 to the current estimate s(X)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)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.

Returns

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)s^(x) or (m(x),s(x))(m^(x), s^(x)).

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.

Author(s)

Original by Kjell Konis with substantial modifications by Martin Maechler.

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