R: Medcouple, a Robust Measure of Skewness

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, na.rm = FALSE, doReflect = (length(x) <= 100),
       eps1 = .Machine$double.eps, eps2 = .Machine$double.xmin,
       maxit = 100, trace.lev = 0, full.result = FALSE)

### Arguments

`x` | a numeric vector
`na.rm` | logical indicating how missing values (`NA`s) 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 = 5`.
`full.result` | logical indicating if the full return values (from C) should be returned as a list via `attr(*, "mcComp")`.

### 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` | 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 Manuel Koller and Martin Maechler.

### References

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

Hubert, M. and Vandervieren, E. (2008). An adjusted boxplot for skewed distributions, Computational Statistics and Data Analysis 52, 5186–5201.

### 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, tolerance = 1e-12))

[Package robustbase version 0.92-7 Index]