backgroundCorrect {limma} | R Documentation

## Correct Intensities for Background

### Description

Background correct microarray expression intensities.

### Usage

    backgroundCorrect(RG, method="auto", offset=0, printer=RG$printer,
                      normexp.method="saddle", verbose=TRUE)
    backgroundCorrect.matrix(E, Eb=NULL, method="auto", offset=0, printer=NULL,
                      normexp.method="saddle", verbose=TRUE)

### Arguments

`RG` | a numeric matrix, `EListRaw` or `RGList` object.
`E` | numeric matrix containing foreground intensities.
`Eb` | numeric matrix containing background intensities.
`method` | character string specifying correction method. Possible values are `"auto"`, `"none"`, `"subtract"`, `"half"`, `"minimum"`, `"movingmin"`, `"edwards"` or `"normexp"`. If `RG` is a matrix, possible values are restricted to `"none"` or `"normexp"`. The default `"auto"` is interpreted as `"subtract"` if background intensities are available or `"normexp"` if they are not.
`offset` | numeric value to add to intensities
`printer` | a list containing printer layout information, see `PrintLayout-class`. Ignored if `RG` is a matrix.
`normexp.method` | character string specifying parameter estimation strategy used by normexp, ignored for other methods. Possible values are `"saddle"`, `"mle"`, `"rma"` or `"rma75"`.
`verbose` | logical. If `TRUE`, progress messages are sent to standard output

### Details

This function implements the background correction methods reviewed or developed in Ritchie et al (2007) and Silver at al (2009). Ritchie et al (2007) recommend `method="normexp"` whenever `RG` contains local background estimates. Silver et al (2009) shows that either `normexp.method="mle"` or `normexp.method="saddle"` are excellent options for normexp. If `RG` contains morphological background estimates instead (available from SPOT or GenePix image analysis software), then `method="subtract"` performs well.

If `method="none"` then no correction is done, i.e., the background intensities are treated as zero. If `method="subtract"` then the background intensities are subtracted from the foreground intensities. This is the traditional background correction method, but is not necessarily recommended. If `method="movingmin"` then the background estimates are replaced with the minimums of the backgrounds of the spot and its eight neighbors, i.e., the background is replaced by a moving minimum of 3x3 grids of spots.

The remaining methods are all designed to produce positive corrected intensities. If `method="half"` then any intensity which is less than 0.5 after background subtraction is reset to be equal to 0.5. If `method="minimum"` then any intensity which is zero or negative after background subtraction is set equal to half the minimum of the positive corrected intensities for that array. If `method="edwards"` a log-linear interpolation method is used to adjust lower intensities as in Edwards (2003). If `method="normexp"` a convolution of normal and exponential distributions is fitted to the foreground intensities using the background intensities as a covariate, and the expected signal given the observed foreground becomes the corrected intensity. This results in a smooth monotonic transformation of the background subtracted intensities such that all the corrected intensities are positive.

The normexp method is available in a number of variants depending on how the model parameters are estimated, and these are selected by `normexp.method`. Here `"saddle"` gives the saddle-point approximation to maximum likelihood from Ritchie et al (2007) and improved by Silver et al (2009), `"mle"` gives exact maximum likelihood from Silver at al (2009), `"rma"` gives the background correction algorithm from the RMA-algorithm for Affymetrix microarray data as implemented in the affy package, and `"rma75"` gives the RMA-75 method from McGee and Chen (2006). In practice `"mle"` performs well and is nearly as fast as `"saddle"`, but `"saddle"` is the default for backward compatibility. See `normexp.fit` for more details.

The `offset` can be used to add a constant to the intensities before log-transforming, so that the log-ratios are shrunk towards zero at the lower intensities. This may eliminate or reverse the usual 'fanning' of log-ratios at low intensities associated with local background subtraction.

Background correction (background subtraction) is also performed by the `normalizeWithinArrays` method for `RGList` objects, so it is not necessary to call `backgroundCorrect` directly unless one wants to use a method other than simple subtraction. Calling `backgroundCorrect` before `normalizeWithinArrays` will over-ride the default background correction.

### Value

A matrix, `EListRaw` or `RGList` object in which foreground intensities have been background corrected and any components containing background intensities have been removed.

### Author(s)

Gordon Smyth

### References

Edwards, D. E. (2003). Non-linear normalization and background correction in one-channel cDNA microarray studies Bioinformatics 19, 825-833.

McGee, M., and Chen, Z. (2006). Parameter estimation for the exponential-normal convolution model for background correction of Affymetrix GeneChip data. Stat Appl Genet Mol Biol, Volume 5, Article 24.

Ritchie, M. E., Silver, J., Oshlack, A., Silver, J., Holmes, M., Diyagama, D., Holloway, A., and Smyth, G. K. (2007). A comparison of background correction methods for two-colour microarrays. Bioinformatics 23, 2700-2707. http://bioinformatics.oxfordjournals.org/content/23/20/2700

Silver, J., Ritchie, M. E., and Smyth, G. K. (2009). Microarray background correction: maximum likelihood estimation for the normal-exponential convolution model. Biostatistics 10, 352-363. http://biostatistics.oxfordjournals.org/content/10/2/352

### See Also

`kooperberg`, `neqc`.

An overview of background correction functions is given in `04.Background`.

### Examples

    RG <- new("RGList", list(R=c(1,2,3,4),G=c(1,2,3,4),Rb=c(2,2,2,2),Gb=c(2,2,2,2)))
    backgroundCorrect(RG)
    backgroundCorrect(RG, method="half")
    backgroundCorrect(RG, method="minimum")
    backgroundCorrect(RG, offset=5)

[Package limma version 3.50.3 Index]