mc {robustbase}R Documentation

Medcouple, a Robust Measure of Skewness

Description

Compute the ‘medcouple’, a robust concept and estimator of skewness. The medcouple is defined as a scaled median difference of the left and right half of distribution, and hence not based on the third moment as the classical skewness.

Usage

mc(x, ...)
## Default S3 method:
mc(x, na.rm = FALSE, doReflect = (length(x) <= 100),
     eps1 = .Machine$double.xmin, eps2 = eps1, maxit = 100, trace.lev = 0,
     full.result = FALSE, ...)

Arguments

x a numeric vector
na.rm logical indicating how missing values (NAs) should be dealt with.
doReflect logical indicating if the internal MC should also be computed on the reflected sample -x, with final result (mc.(x) - mc.(-x))/2. This makes sense since the internal MC, mc.() computes the himedian() which can differ slightly from the median.
eps1,eps2 tolerance in the algorithm; only change with care!
maxit maximul number of iterations; typically a few should be sufficient.
trace.lev integer specifying how much diagnostic output the algorithm (in C) should produce. No output by default, most output for trace_lev = 3.
full.result logical indicating if the full return values (from C) should be return, as a list attr(*, "mcComp").
... potentially further arguments passed to other methods.

Value

a number between -1 and 1, which is the medcouple, MC(x). For r <- mc(x, full.result = TRUE, ....), then attr(r, "mcComp") is a list with components

medc the medcouple mc.(x).
medc2 the medcouple mc.(-x) if doReflect=TRUE.
eps,eps2 tolerances used.
iter,iter2 number of iterations used.
converged,converged2 logical specifying “convergence”.

Author(s)

Guy Brys; modifications by Tobias Verbeke and bug fixes and extensions by Martin Maechler.

References

Guy Brys, Mia Hubert and Anja Struyf (2004) A Robust Measure of Skewness; JCGS 13 (4), 996–1017.

Mia Hubert and E. Vandervieren (2006) An adjusted boxplot for skewed distributions.

See Also

Qn for a robust measure of scale (aka “dispersion”), ....

Examples

mc(1:5) # 0 for a symmetric sample

x1 <- c(1, 2, 7, 9, 10)
mc(x1) # = -1/3

data(cushny)
mc(cushny) # 0.125

stopifnot(mc(c(-20, -5, -2:2, 5, 20)) == 0,
          mc(x1, doReflect=FALSE) ==  -mc(-x1, doReflect=FALSE),
          all.equal(mc(x1, doReflect=FALSE), -1/3, tol = 1e-12))

[Package robustbase version 0.4-3 Index]