blob: 7a7026b26a9dc1268a9ae4c082ead8185f75e836 [file] [log] [blame]
% File src/library/stats/man/medpolish.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2016 R Core Team
% Distributed under GPL 2 or later
\name{medpolish}
\title{Median Polish (Robust Twoway Decomposition) of a Matrix}
\alias{medpolish}
\concept{twoway}% S-plus name
\description{
Fits an additive model (twoway decomposition) using Tukey's
\emph{median polish} procedure.
}
\usage{
medpolish(x, eps = 0.01, maxiter = 10, trace.iter = TRUE,
na.rm = FALSE)
}
\arguments{
\item{x}{a numeric matrix.}
\item{eps}{real number greater than 0. A tolerance for convergence:
see \sQuote{Details}.}
\item{maxiter}{the maximum number of iterations}
\item{trace.iter}{logical. Should progress in convergence be reported?}
\item{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 \code{eps}
or until there have been \code{maxiter} iterations.
The sum of absolute residuals is printed at
each iteration of the fitting process, if \code{trace.iter} is \code{TRUE}.
If \code{na.rm} is \code{FALSE} the presence of any \code{NA} value in
\code{x} will cause an error, otherwise \code{NA} values are ignored.
\code{medpolish} returns an object of class \code{medpolish} (see below).
There are printing and plotting methods for this
class, which are invoked via by the generics
\code{\link{print}} and \code{\link{plot}}.
}
\value{
An object of class \code{medpolish} with the following named components:
\item{overall}{the fitted constant term.}
\item{row}{the fitted row effects.}
\item{col}{the fitted column effects.}
\item{residuals}{the residuals.}
\item{name}{the name of the dataset.}
}
\seealso{\code{\link{median}}; \code{\link{aov}} for a \emph{mean}
instead of \emph{median} decomposition.}
\references{
Tukey, J. W. (1977).
\emph{Exploratory Data Analysis},
Reading Massachusetts: Addison-Wesley.
}
\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)
}
\keyword{robust}