multiscan: Combining multiple laser scans of microarray data

Description Usage Arguments Details Value References See Also Examples

View source: R/multiscan.R

Description

Estimates gene expressions from multiple laser scans of microarrays using non-linear functional regression model with additive plus multiplicative errors.

Usage

1
multiscan(data, initial = NULL, na.rm = TRUE, verbose = FALSE, control = list())

Arguments

data

A numeric matrix or data frame containing the intensity data of a single microarray scanned at multiple (two or more) scanner settings. For dual channel arrays, multiscan should be run on each channel of data separately. The number of rows (n) is equal to the number of spots/probes on the array, and the number of columns (m) equals the number of scans. Columns will be arranged in order of scanner's sensitivity before fitting the model. Replicated probes on the array are treated as individual spots.

initial

A vector of length m+2 to be used as initial values for the scanning effects (β_2, \cdots, β_m) and scale (σ_1, σ_2, ν) parameters. If it is NULL (default), the initial values are determined from the data.

na.rm

Logical. Should missing values be removed? Defaults to TRUE.

verbose

Logical. If TRUE, some intermediate results are printed as the iteration proceeds.

control

A list of control parameters. See ‘Details’.

Details

The function implements the method of Khondoker et. al. (2006) for combining multiple laser scans of microarrays. This function is computationally slow and memory-intensive. That is due to the nested iteration loops of the numerical optimization of the likelihood function involving a large number (n+m+2) of parameters. The optimization uses an alternating algorithm with the Nelder-Mead simplex method (Nelder and Mead, 1965) in the inner loops. The function multiscan directly uses the C function nmmin, the internal code used in the general-purpose optimization tool optim, for implementing the Nelder-Mead simplex method. For large data sets with many tens of thousands of probes, it is recommended to consider first fitting the model using a random subset (e.g. 10,000 rows) of the data matrix, and then using the estimated scanning effects and scale parameters obtained as initial values for fitting the model to the full data set.

The control is a list of arguments. The users can change/supply any of the following components:

trace

Indicator (0 or 1) of tracing information of Nelder-Mead algorithm. If 1, tracing information on the progress of the optimization is produced. Because Nelder-Mead may be callled thousands of times during the estimation process, setting trace = 1 will print too much information very rapidly, which may not be useful. Defaults to 0.

gmaxit

The maximum number of global iterations. Defaults to 150.

maxit

The maximum number of Nelder-Mead iterations. Defaults to 5000.

reltol

Relative convergence tolerance of Nelder-Mead. The algorithm stops if it is unable to reduce the value by a factor of reltol * (abs(val) + reltol) at a step. Defaults to 1e-5.

globaltol

Convergence tolerance of the outer (alternating) iteration. The estimation process converges if the gain in loglikelihood from one complete cycle of the outer iteration is less than globaltol. Defaults to 1e-10.

alpha, beta, gamma

Scaling parameters for the Nelder-Mead method. alpha is the reflection factor (default 1.0), beta the contraction factor (0.5) and gamma the expansion factor (2.0).

Value

Returns an object of class multiscan with components

call

The call of the multiscan function.

beta

A vector of length m containing the maximum likelihood estimates of the scanning effects, the first component fixed at 1.

scale

A vector of length 3 containing the maximum likelihood estimates of the scale parameters σ_1, σ_2, \mbox{and} ν.

mu

A vector of length n containing the estimated gene expressions.

data

A matrix of the input data with columns rearranged in order of scanner's sensitivity.

fitted

A matrix of the fitted model on the data.

sdres

A matrix of the standardised residuals.

outerit

Number of global iterations completed.

gconv, conv, convmu

Integer convergence codes.

gconv

Indicator of global convergence. 0 indicates successful convergence, 1 indicates premature termination.

conv

Convergence codes for the Nelder-Mead simplex method in the last global iteration while updating scanning effects and scale parameters. 0 for successful convergence, 1 indicates that the iteration limit maxit had been reached, 10 indicates degeneracy of the Nelder-Mead simplex method.

convmu

Convergence codes for the Nelder-Mead simplex method in the last global iteration while updating the gene expression parameters. This is an integer vector of length n where each component takes the value 0, 1, or 10 depending on whether the Nelder-Mead simplex method successfully converged, reached iteration limit maxit or produced degeneracy respectively while updating the corresponding gene expression parameter.

outerit

Number of global iterations completed.

loglf

Value of the loglikelihood function at convergence (gconv=0). NA if not converged (gconv=1).

References

Khondoker, M. R., Glasbey, C. A. and Worton, B. J. (2006). Statistical estimation of gene expression using multiple laser scans of microarrays. Bioinformatics 22, 215–219.

Nelder, J. A. and Mead, R. (1965). A simplex method for function minimization. The Computer Journal 7 308–313.

See Also

A web interface, created by David Nutter of Biomathematics & Statistics Scotland (BioSS), based on the original Fortran code written by Khondoker et al. (2006) is available at http://www.bioss.ac.uk/ktshowcase/create.cgi. Although it uses the same algorithm, results from the web interface may not be exactly identical to that of multiscan as it uses a different (non-free IMSL routine) implementation of Nelder-Mead simplex.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
## load the multiscan library 
library(multiscan)

## load the murine data set included in multiscan package
data(murine)
murine[1:10, ] ## see first few rows of data

## fit the model on murine data with default options
fit <- multiscan(murine)
fit

## plot the fitted model
plot(fit)

## get the estimated gene expressions
gene.exprs <- fit$mu

## see more details as iteration progresses

fit1 <- multiscan(murine, verbose = TRUE)
fit1

multiscan documentation built on Nov. 8, 2020, 5:31 p.m.