R: Median Polish (Robust Twoway Decomposition) of a Matrix

medpolish {stats} | R Documentation

## Median Polish (Robust Twoway Decomposition) of a Matrix

### Description

Fits an additive model (twoway decomposition) using Tukey's median polish procedure.

### Usage

    medpolish(x, eps = 0.01, maxiter = 10, trace.iter = TRUE,
              na.rm = FALSE)

### Arguments

`x` | a numeric matrix.
`eps` | real number greater than 0. A tolerance for convergence: see ‘Details’.
`maxiter` | the maximum number of iterations
`trace.iter` | logical. Should progress in convergence be reported?
`na.rm` | logical. Should missing values be removed?

### Details

The model fitted is additive (constant + rows + columns). The algorithm works by alternately removing the row and column medians, and continues until the proportional reduction in the sum of absolute residuals is less than `eps` or until there have been `maxiter` iterations. The sum of absolute residuals is printed at each iteration of the fitting process, if `trace.iter` is `TRUE`. If `na.rm` is `FALSE` the presence of any `NA` value in `x` will cause an error, otherwise `NA` values are ignored.

`medpolish` returns an object of class `medpolish` (see below). There are printing and plotting methods for this class, which are invoked via by the generics `print` and `plot`.

### Value

An object of class `medpolish` with the following named components:

`overall` | the fitted constant term.
`row` | the fitted row effects.
`col` | the fitted column effects.
`residuals` | the residuals.
`name` | the name of the dataset.

### References

Tukey, J. W. (1977). Exploratory Data Analysis, Reading Massachusetts: Addison-Wesley.

### See Also

`median`; `aov` for a mean instead of median decomposition.

### Examples

    require(graphics)

    ## Deaths from sport parachuting;  from ABC of EDA, p.224:
    deaths <-
        rbind(c(14,15,14),
              c( 7, 4, 7),
              c( 8, 2,10),
              c(15, 9,10),
              c( 0, 2, 0))
    dimnames(deaths) <- list(c("1-24", "25-74", "75-199", "200++", "NA"),
                             paste(1973:1975))
    deaths
    (med.d <- medpolish(deaths))
    plot(med.d)
    ## Check decomposition:
    all(deaths ==
        med.d$overall + outer(med.d$row,med.d$col, "+") + med.d$residuals)

[Package stats version 4.0.5 Index]