| medianPolish.matrix {aroma.light} | R Documentation |
Median polish.
## S3 method for class 'matrix': medianPolish(X, tol=0.01, maxIter=10, na.rm=NA, ..., .addExtra=TRUE)
X |
N-times-K matrix |
tol |
A numeric value greater than zero used as a threshold
to identify when the algorithm has converged. |
maxIter |
Maximum number of iterations. |
na.rm |
If TRUE (FALSE), NAs are exclude (not exclude).
If NA, it is assumed that X contains no NA values. |
.addExtra |
If TRUE, the name of argument X is returned
and the returned structure is assigned a class. This will make the
result compatible what medpolish returns. |
... |
Not used. |
The implementation of this method give identical estimates as
medpolish, but is about 3-5 times more efficient when
there are no NA values.
Returns a named list structure with elements:
overall |
The fitted constant term. |
row |
The fitted row effect. |
col |
The fitted column effect. |
residuals |
The residuals. |
converged |
If TRUE, the algorithm converged, otherwise not. |
normal-bracket56bracket-normal
Henrik Bengtsson (http://www.braju.com/R/)
# Deaths from sport parachuting; from ABC of EDA, p.224:
deaths <- matrix(c(14,15,14, 7,4,7, 8,2,10, 15,9,10, 0,2,0), ncol=3, byrow=TRUE)
rownames(deaths) <- c("1-24", "25-74", "75-199", "200++", "NA")
colnames(deaths) <- 1973:1975
print(deaths)
mp <- medianPolish(deaths)
mp1 <- medpolish(deaths, trace=FALSE)
print(mp)
ff <- c("overall", "row", "col", "residuals")
stopifnot(all.equal(mp[ff], mp1[ff]))
# Validate decomposition:
stopifnot(all.equal(deaths, mp$overall+outer(mp$row,mp$col,"+")+mp$resid))