medpolish               package:stats               R Documentation

Median Polish of a Matrix

Description:

     Fits an additive model 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)

