Learn R Programming

edgeR (version 3.8.6)

aveLogCPM: Average Log Counts Per Million

Description

Compute average log2 counts-per-million for each row of counts.

Usage

"aveLogCPM"(y, normalized.lib.sizes=TRUE, prior.count=2, dispersion=NULL, ...) "aveLogCPM"(y, lib.size=NULL, offset=NULL, prior.count=2, dispersion=NULL, weights=NULL, ...)

Arguments

y
numeric matrix containing counts. Rows for tags and columns for libraries.
normalized.lib.sizes
logical, use normalized library sizes?
prior.count
average value to be added to each count, to avoid infinite values on the log-scale.
dispersion
numeric scalar or vector of negative-binomial dispersions. Defaults to 0.05.
lib.size
numeric vector of library sizes. Defaults to colSums(y). Ignored if offset is not NULL.
offset
numeric matrix of offsets for the log-linear models.
weights
optional numeric matrix of observation weights.
...
other arguments are not currently used.

Value

Numeric vector giving log2(AveCPM) for each row of y.

Details

This function uses mglmOneGroup to compute average counts-per-million (AveCPM) for each row of counts, and returns log2(AveCPM). An average value of prior.count is added to the counts before running mglmOneGroup.

This function is similar to

log2(rowMeans(cpm(y, ...))),

but with the refinement that larger library sizes are given more weight in the average. The two versions will agree for large values of the dispersion.

See Also

See cpm for individual logCPM values, rather than tagwise averages.

The computations for aveLogCPM are done by mglmOneGroup.

Examples

Run this code
y <- matrix(c(0,100,30,40),2,2)
lib.size <- c(1000,10000)

# With disp large, the function is equivalent to row-wise averages of individual cpms:
aveLogCPM(y, dispersion=1e4)
cpm(y, log=TRUE, prior.count=2)

# With disp=0, the function is equivalent to pooling the counts before dividing by lib.size:
aveLogCPM(y,prior.count=0,dispersion=0)
cpms <- rowSums(y)/sum(lib.size)*1e6
log2(cpms)

Run the code above in your browser using DataLab