calibrateMultiscan.matrix {aroma.light} | R Documentation |
Weighted affine calibration of a multiple re-scanned channel.
## S3 method for class 'matrix': calibrateMultiscan(X, weights=NULL, typeOfWeights=c("datapoint"), method="L1", constraint="diagonal", satSignal=2^16 - 1, ..., average=median, deviance=NULL, project=FALSE, .fitOnly=FALSE)
X |
An NxK matrix (K>=2) where the columns represent the
multiple scans of one channel (a two-color array contains two
channels) to be calibrated. |
weights |
If NULL , non-weighted normalization is done.
If data-point weights are used, this should be a vector of length
N of data point weights used when estimating the normalization
function.
|
typeOfWeights |
A character string specifying the type of
weights given in argument weights .
|
method |
A character string specifying how the estimates are
robustified. See iwpca () for all accepted values. |
constraint |
Constraint making the bias parameters identifiable.
See *fitIWPCA() for more details. |
satSignal |
Signals equal to or above this threshold is considered saturated signals. |
... |
Other arguments passed to *fitIWPCA() and in
turn iwpca (). |
average |
A function to calculate the average signals between calibrated scans. |
deviance |
A function to calculate the deviance of the signals between calibrated scans. |
project |
If TRUE , the calibrated data points projected onto the
diagonal line, otherwise not. Moreover, if TRUE , argument
average is ignored. |
.fitOnly |
If TRUE , the data will not be back-transform. |
Fitting is done by iterated re-weighted principal component analysis (IWPCA).
If average
is specified or project
is TRUE
,
an Nx1 matrix
is returned, otherwise an NxK matrix
is returned.
If deviance
is specified, a deviance Nx1 matrix
is returned
as attribute deviance
.
In addition, the fitted model is returned as attribute modelFit
.
Affine multiscan calibration applies also to negative values, which are therefor also calibrated, if they exist.
Saturated signals in any scan are set to NA
. Thus, they will not be
used to estimate the calibration function, nor will they affect an
optional projection.
Only observations (rows) in X
that contain all finite values are
used in the estimation of the alibration functions. Thus,
observations can be excluded by setting them to NA
.
Each data point/observation, that is, each row in X
, which is a
vector of length K, can be assigned a weight in [0,1] specifying how much
it should affect the fitting of the calibration function.
Weights are given by argument weights
,
which should be a numeric
vector
of length N. Regardless of weights,
all data points are calibrated based on the fitted calibration
function.
By default, the model fit of multiscan calibration is done in L_1
(method="L1"
). This way, outliers affect the parameter estimates
less than ordinary least-square methods.
When calculating the average calibrated signal from multiple scans, by default the median is used, which further robustify against outliers.
For further robustness, downweight outliers such as saturated signals, if possible.
Tukey's biweight function is supported, but not used by default because
then a "bandwidth" parameter has to selected. This can indeed be done
automatically by estimating the standard deviation, for instance using
MAD. However, since scanner signals have heteroscedastic noise
(standard deviation is approximately proportional to the non-logged
signal), Tukey's bandwidth parameter has to be a function of the
signal too, cf. loess
. We have experiemented with this
too, but found that it does not significantly improve the robustness
compared to L_1.
Moreover, using Tukey's biweight as is, that is, assuming homoscedastic
noise, seems to introduce a (scale dependent) bias in the estimates
of the offset terms.
Henrik Bengtsson (http://www.braju.com/R/)
[1] H. Bengtsson, J. Vallon-Christersson and G. Jönsson, Calibration and assessment of channel-specific biases in microarray data with extended dynamical range, BMC Bioinformatics, 5:177, 2004.
*normalizeAffine()
.
For more information see matrix
.
## Not run: # For an example, see help(normalizeAffine).