R: Weighted Median Absolute Deviation (MAD)

weightedMad {matrixStats} | R Documentation

## Weighted Median Absolute Deviation (MAD)

### Description

Computes a weighted MAD of a numeric vector.

### Usage

    weightedMad(x, w = NULL, idxs = NULL, na.rm = FALSE, constant = 1.4826,
      center = NULL, ...)

    rowWeightedMads(x, w = NULL, rows = NULL, cols = NULL, na.rm = FALSE,
      constant = 1.4826, center = NULL, ...)

    colWeightedMads(x, w = NULL, rows = NULL, cols = NULL, na.rm = FALSE,
      constant = 1.4826, center = NULL, ...)

### Arguments

`x` | a `numeric` `vector` containing the values whose weighted MAD is to be computed.
`w` | a vector of weights the same length as `x` giving the weights to use for each element of `x`. Negative weights are treated as zero weights. Default value is equal weight to all values.
`idxs, rows, cols` | A `vector` indicating subset of elements (or rows and/or columns) to operate over. If `NULL`, no subsetting is done.
`na.rm` | a logical value indicating whether `NA` values in `x` should be stripped before the computation proceeds, or not. If `NA`, no check at all for `NA`s is done. Default value is `NA` (for efficiency).
`constant` | A `numeric` scale factor, cf. `mad`.
`center` | Optional `numeric` scalar specifying the center location of the data. If `NULL`, it is estimated from data.
`...` | Not used.

### Value

Returns a `numeric` scalar.

### Missing values

Missing values are dropped at the very beginning, if argument `na.rm` is `TRUE`, otherwise not.

### Author(s)

Henrik Bengtsson

### See Also

For the non-weighted MAD, see `mad`. Internally `weightedMedian`() is used to calculate the weighted median.

### Examples

    x <- 1:10
    n <- length(x)

    m1 <- mad(x)
    m2 <- weightedMad(x)
    stopifnot(identical(m1, m2))

    w <- rep(1, times = n)
    m1 <- weightedMad(x, w)
    stopifnot(identical(m1, m2))

    # All weight on the first value
    w[1] <- Inf
    m <- weightedMad(x, w)
    stopifnot(m  == 0)

    # All weight on the first two values
    w[1:2] <- Inf
    m1 <- mad(x[1:2])
    m2 <- weightedMad(x, w)
    stopifnot(identical(m1, m2))

    # All weights set to zero
    w <- rep(0, times = n)
    m <- weightedMad(x, w)
    stopifnot(is.na(m))

[Package matrixStats version 0.57.0 Index]