normalizeQuantile.matrix {aroma.light} | R Documentation |
Normalizes channels so they all have the same average sample distributions.
The average sample distribution is calculated either robustly or not
by utilizing either weightedMedian()
or weighted.mean()
.
A weighted method is used if any of the weights are different from one.
## S3 method for class 'matrix': normalizeQuantile(X, ties=FALSE, robust=FALSE, weights=NULL, typeOfWeights=c("channel", "signal"), ...)
X |
a numerical NxK matrix with the K columns representing the
channels and the N rows representing the data points. |
robust |
If TRUE , the (weighted) median function is used for
calculating the average sample distribution, otherwise the
(weighted) mean function is used. |
ties |
Should ties be specially treated or not? |
weights |
If NULL , non-weighted normalization is done.
If channel weights, this should be a vector of length K specifying
the weights for each channel.
If signal weights, it should be an NxK matrix specifying the
weights for each signal.
|
typeOfWeights |
A character string specifying the type of
weights given in argument weights . |
... |
Not used. |
Returns an NxK matrix
.
Missing values are excluded when estimating the "common" (the baseline)
distribution. Values that are NA
before remain NA
. No new NA
s are
introduced.
Currently only channel weights are support due to the way quantile normalization is done. If signal weights are given, channel weights are calculated from these by taking the mean of the signal weights in each channel.
Adopted from Gordon Smyth (http://www.statsci.org/) in 2002 & 2006. Original code by Ben Bolstad at Statistics Department, University of California. Support for calculating the average sample distribution using (weighted) mean or median was added by Henrik Bengtsson (http://www.braju.com/R/).
median
, weightedMedian
(),
mean
() and weighted.mean
.
# Simulate three samples with on average 20% missing values N <- 10000 X <- cbind(rnorm(N, mean=3, sd=1), rnorm(N, mean=4, sd=2), rgamma(N, shape=2, rate=1)) X[sample(3*N, size=0.20*3*N)] <- NA # Normalize quantiles Xn <- normalizeQuantile(X) # Plot the data layout(matrix(1:2, ncol=1)) xlim <- range(X, Xn, na.rm=TRUE); plotDensity(X, lwd=2, xlim=xlim, main="The three original distributions") plotDensity(Xn, lwd=2, xlim=xlim, main="The three normalized distributions")