\name{rcModels}
\alias{rcModelPLM}
\alias{rcModelWPLM}
\alias{rcModelMedianPolish}
\title{Fit row-column model to a matrix}
\description{These functions fit row-column effect models to matrices
}
\usage{
rcModelPLM(y,row.effects=NULL,input.scale=NULL)
rcModelWPLM(y, w,row.effects=NULL,input.scale=NULL)
rcModelMedianPolish(y)
}
\arguments{
\item{y}{A numeric matrix}
\item{w}{A matrix or vector of weights. These should be non-negative.}
\item{row.effects}{If these are supplied then the fitting procedure
uses these (and analyzes individual columns separately)}
\item{input.scale}{If supplied will be used rather than estimating the
scale from the data}
}
\value{
A list with following items:
\item{Estimates}{The parameter estimates. Stored in column effect then
row effect order}
\item{Weights}{The final weights used}
\item{Residuals}{The residuals}
\item{StdErrors}{Standard error estimates. Stored in column effect
then row effect order}
\item{Scale}{Scale Estimates}
}
\details{
These functions fit row-column models to the specified input
matrix. Specifically the model \deqn{y_{ij} = r_i + c_j +
\epsilon_{ij}}{y_ij = r_i + c_j + e_ij}
with \eqn{r_i} and \eqn{c_j} as row and column effects
respectively. Note that this functions treat the row effect as
the parameter to be constrained using sum to zero (for
\code{rcModelPLM} and \code{rcModelWPLM}) or median of zero (for
\code{rcModelMedianPolish}).

The \code{rcModelPLM} and \code{rcModelWPLM} functions use a
robust linear model procedure for fitting the model.

The function \code{rcModelMedianPolish} uses the median polish algorithm.
}
\examples{
col.effects <- c(10,11,10.5,12,9.5)
row.effects <- c(seq(-0.5,-0.1,by=0.1),seq(0.1,0.5,by=0.1))

y <- outer(row.effects, col.effects,"+")
w <- runif(50)

rcModelPLM(y)
rcModelWPLM(y, w)
rcModelMedianPolish(y)

y <- y + rnorm(50)

rcModelPLM(y)
rcModelWPLM(y, w)
rcModelMedianPolish(y)

rcModelPLM(y,row.effects=row.effects)
rcModelWPLM(y,w,row.effects=row.effects)

rcModelPLM(y,input.scale=1.0)
rcModelWPLM(y, w,input.scale=1.0)
rcModelPLM(y,row.effects=row.effects,input.scale=1.0)
rcModelWPLM(y,w,row.effects=row.effects,input.scale=1.0)

}