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

### Description

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

### Usage

 ```1 2``` ```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

`median`; `aov` for a mean instead of median decomposition.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```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) ```