\name{rcModelPLMr}
\alias{rcModelPLMr}
\alias{rcModelPLMrr}
\alias{rcModelPLMrc}
\alias{rcModelWPLMr}
\alias{rcModelWPLMrr}
\alias{rcModelWPLMrc}

\title{Fit robust row-column models to a matrix}
\description{These functions fit row-column effect models to matrices using PLM-r and variants
}
\usage{
rcModelPLMr(y)
rcModelPLMrr(y)
rcModelPLMrc(y)
rcModelWPLMr(y, w)
rcModelWPLMrr(y, w)
rcModelWPLMrc(y, w)

}
\arguments{
\item{y}{A numeric matrix}
\item{w}{A matrix or vector of weights. These should be non-negative.}
}
\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}
}
\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 these functions treat the row effect as
the parameter to be constrained using sum to zero.

The \code{rcModelPLMr} and \code{rcModelWPLMr} functions use
the PLM-r fitting procedure. This adds column and row robustness to single element robustness.

The \code{rcModelPLMrc} and \code{rcModelWPLMrc} functions use
the PLM-rc fitting procedure. This adds column robustness to single element robustness.

The \code{rcModelPLMrr} and \code{rcModelWPLMrr} functions use
the PLM-rr fitting procedure. This adds row robustness to single element robustness.

}
\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)

rcModelPLMr(y)
rcModelWPLMr(y, w)

### An example where there no or only occasional outliers
y <- y + rnorm(50,sd=0.1)
par(mfrow=c(2,2))
image(1:10,1:5,rcModelPLMr(y)$Weights,xlab="row",ylab="col",main="PLM-r",zlim=c(0,1)) image(1:10,1:5,rcModelPLMrc(y)$Weights,xlab="row",ylab="col",main="PLM-rc",zlim=c(0,1))
image(1:10,1:5,rcModelPLMrr(y)$Weights,xlab="row",ylab="col",main="PLM-rr",zlim=c(0,1)) matplot(y,type="l") ### An example where there is a row outlier y <- outer(row.effects, col.effects,"+") y[1,] <- 11+ rnorm(5) y <- y + rnorm(50,sd=0.1) par(mfrow=c(2,2)) image(1:10,1:5,rcModelPLMr(y)$Weights,xlab="row",ylab="col",main="PLM-r",zlim=c(0,1))
image(1:10,1:5,rcModelPLMrc(y)$Weights,xlab="row",ylab="col",main="PLM-rc",zlim=c(0,1)) image(1:10,1:5,rcModelPLMrr(y)$Weights,xlab="row",ylab="col",main="PLM-rr",zlim=c(0,1))
matplot(y,type="l")

### An example where there is a column outlier
y <- outer(row.effects, col.effects,"+")
w <- rep(1,50)

y[,4] <- 12 + rnorm(10)
y <- y + rnorm(50,sd=0.1)

par(mfrow=c(2,2))
image(1:10,1:5,rcModelWPLMr(y,w)$Weights,xlab="row",ylab="col",main="PLM-r",zlim=c(0,1)) image(1:10,1:5,rcModelWPLMrc(y,w)$Weights,xlab="row",ylab="col",main="PLM-rc",zlim=c(0,1))
image(1:10,1:5,rcModelWPLMrr(y,w)$Weights,xlab="row",ylab="col",main="PLM-rr",zlim=c(0,1)) matplot(y,type="l") ### An example where there is both column and row outliers y <- outer(row.effects, col.effects,"+") w <- rep(1,50) y[,4] <- 12 + rnorm(10) y[1,] <- 11+ rnorm(5) y <- y + rnorm(50,sd=0.1) par(mfrow=c(2,2)) image(1:10,1:5,rcModelWPLMr(y,w)$Weights,xlab="row",ylab="col",main="PLM-r",zlim=c(0,1))
image(1:10,1:5,rcModelWPLMrc(y,w)$Weights,xlab="row",ylab="col",main="PLM-rc",zlim=c(0,1)) image(1:10,1:5,rcModelWPLMrr(y,w)$Weights,xlab="row",ylab="col",main="PLM-rr",zlim=c(0,1))
matplot(y,type="l")

}