Learn R Programming

robustbase (version 0.5-0-1)

mc: 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, ...)
## S3 method for class 'default':
mc(x, na.rm = FALSE, doReflect = (length(x) 

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 himed
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
  • medcthe medcouple $mc.(x)$.
  • medc2the medcouple $mc.(-x)$ if doReflect=TRUE.
  • eps,eps2tolerances used.
  • iter,iter2number of iterations used.
  • converged,converged2logical specifying convergence.

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

Run this code
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))

Run the code above in your browser using DataLab