normalizeCyclicLoess {limma} | R Documentation

## Normalize Columns of a Matrix by Cyclic Loess

### Description

Normalize the columns of a matrix, cyclicly applying loess normalization to normalize each pair of columns to each other.

### Usage

    normalizeCyclicLoess(x, weights = NULL, span=0.7, iterations = 3, method = "fast")

### Arguments

`x` | numeric matrix, or object which can be coerced to a numeric matrix, containing log-expression values.
`weights` | numeric vector of probe weights. Must be non-negative.
`span` | span of loess smoothing window, between 0 and 1.
`iterations` | number of times to cycle through all pairs of columns.
`method` | character string specifying which variant of the cyclic loess method to use. Options are `"fast"`, `"affy"` or `"pairs"`.

### Details

This function is intended to normalize single channel or A-value microarray intensities between arrays. Cyclic loess normalization is similar effect and intention to quantile normalization, but with some advantages, in particular the ability to incorporate probe weights.

A number of variants of cylic loess have been suggested. `method="pairs"` implements the intuitive idea that each pair of arrays is subjected to loess normalization as for two-color arrays. This process is simply cycled through all possible pairs of arrays, then repeated for several `iterations`. This is the method described by Ballman et al (2004) as ordinary cyclic loess normalization.

`method="affy"` implements a method similar to `normalize.loess` in the affy package, except that here we call `lowess` instead of `loess` and avoid the use of probe subsets and the `predict` function. In this approach, no array is modified until a complete cycle of all pairs has been completed. The adjustments are stored for a complete iteration, then averaged, and finally used to modify the arrays. The `"affy"` method is invariant to the order of the columns of `x`, whereas the `"pairs"` method is not. The affy approach is presumably that used by Bolstad et al (2003), although the algorithm was not explicitly described in that article.

`method="fast"` implements the "fast linear loess" method of Ballman et al (2004), whereby each array is simply normalized to a reference array, the reference array being the average of all the arrays. This method is relatively fast because computational time is linear in the number of arrays, whereas `"pairs"` and `"affy"` are quadratic in the number of arrays. `"fast"` requires n lowess fits per iteration, where n is the number of arrays, whereas `"pairs"` and `"affy"` require n*(n-1)/2 lowess fits per iteration.

### Value

A matrix of the same dimensions as `x` containing the normalized values.

### Author(s)

Yunshun (Andy) Chen and Gordon Smyth

### References

Bolstad, B. M., Irizarry R. A., Astrand, M., and Speed, T. P. (2003). A comparison of normalization methods for high density oligonucleotide array data based on bias and variance. Bioinformatics 19, 185-193.

Ballman, KV Grill, DE, Oberg, AL and Therneau, TM (2004). Faster cyclic loess: normalizing RNA arrays via linear models. Bioinformatics 20, 2778-2786.

### See Also

An overview of LIMMA functions for normalization is given in 05.Normalization.

normalize.loess in the affy package also implements cyclic loess normalization, without weights.

[Package limma version 3.38.3 Index]