# Correct for batch effects in DNA methylation data

### Description

Provides some functions to detect and correct for batch effects in DNA
methylation data.
The core function `BEclear`

is based on Latent Factor Models and
can also be used to predict missing values in any other matrix containing real
numbers.

### Details

Package: | BEclear |

Type: | Package |

Version: | 1.0 |

Date: | 2014-11-03 |

License: | GPL-2 |

`correctBatchEffect`

:
The function combines most functions of the `BEclear-package`

to
one. This function performs the whole process of searching for batch effects
and automatically correct them for a matrix of beta values stemming from DNA
methylation data.

`BEclear`

:
This function predicts the missing entries of an input matrix (NA values)
through the use of a Latent Factor Model.

`calcMedians`

:
Compares the median value of all beta values belonging to one batch with the
median value of all beta values belonging to all other batches. Returns a
matrix containing this median difference value for every gene in every batch,
columns define the batch numbers, rows the gene names.

`calcPvalues`

:
Compares the distribution of all beta values corresponding to one batch with
the distribution of all beta values corresponding to all other batches and
retuns a p-value which defines if the distributions are the same or not.

`calcSummary`

:
Summarizes the results of the median comparison function
`calcMedians`

and the p-value calculation function
`calcPvalues`

. Should be used with the matrices originating from
these two functions.

`calcScore`

:
Returns a table with the number of found genes with found p-values less or
equal to 0.01 and median values greater or equal to 0.05. A score is calculated
depending on the number of found genes as well as the magnitude of the median
difference values, this score is divided by the overall number of genes in the
data and returned as "BEscore". See the methods details for further information
and details about the score calculation.

`makeBoxplot`

:
A simple `boxplot`

is done with boxes either separated by batches
or by samples and describe the five number summary of all beta values
corresponding to a batch or a sample, respectively. The batch_ids are shown on
the x-axis with a coloring corresponding to the BEscore.

`clearBEgenes`

:
A function that simply sets all values to NA which were previously found by
median value comparison and p-value calculation and are stored in a summary.
The summary defines which values in the data matrix are set to NA.

`countValuesToPredict`

:
Simple function that counts all values in a matrix which are NA

`findWrongValues`

:
A method which lists values below 0 or beyond 1 contained in the input matrix.
The wrong entries are stored in a data.frame together with the corresponding
row and column position of the matrix.

`replaceWrongValues`

:
A method which replaces values below 0 or beyond 1 contained in the input
matrix. These wrong entries are replaced by 0 or 1, respectively.

### Author(s)

Ruslan Akulenko, Markus Merl

Maintainer: Markus Merl <merl.markus@googlemail.com>

### References

Y. Koren, R. Bell, C. Volinsky, Matrix factorization techniques for recommender systems, IEEE Computer, 42(8), p. 30-37, 2009, http://research.yahoo.com/pub/2859

E. Candes, B. Recht, Exact matrix completion via convex optimization, Communications of the ACM, 55(6), p. 111-119, 2012, http://doi.acm.org/10.114/2184319.2184343

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ```
data(BEclearData)
## Calculate median comparison values in non-parallel mode
med <- calcMedians(data=ex.data, samples=ex.samples, parallel=FALSE)
## Calculate fdr-adjusted p-values in non-parallel mode
pvals <- calcPvalues(data=ex.data, samples=ex.samples, parallel=FALSE,
adjusted=TRUE, method="fdr")
## Summarize p-values and median differences for batch affected genes
sum <- calcSummary(medians=med, pvalues=pvals)
## Calculates the score table
score.table <- calcScore(data=ex.data, samples=ex.samples, summary=sum)
## Simple boxplot for the example data separated by batch
makeBoxplot(data=ex.data, samples=ex.samples, score=score.table,
bySamples=FALSE, main="Some box plot")
## Simple boxplot for the example data separated by samples
makeBoxplot(data=ex.data, samples=ex.samples, score=score.table,
bySamples=TRUE, main="Some box plot")
## Sets assumed batch affected entries to NA
cleared <- clearBEgenes(data=ex.data, samples=ex.samples, summary=sum)
## Counts and stores number of entries to predict
numberOfEntries <- countValuesToPredict(data=cleared)
## Not run:
## Predicts the missing entries
predicted <- BEclear(data=cleared)
## Find wrongly predicted entries
wrongEntries <- findWrongValues(data=predicted)
## Replace wrongly predicted entries
corrected <- replaceWrongValues(data=predicted)
## End(Not run)
``` |