estimateDispersions: Estimate the dispersions for a DESeqDataSet

estimateDispersions,DESeqDataSet-methodR Documentation

Estimate the dispersions for a DESeqDataSet

Description

This function obtains dispersion estimates for Negative Binomial distributed data.

Usage

## S4 method for signature 'DESeqDataSet'
estimateDispersions(
  object,
  fitType = c("parametric", "local", "mean", "glmGamPoi"),
  maxit = 100,
  useCR = TRUE,
  weightThreshold = 0.01,
  quiet = FALSE,
  modelMatrix = NULL,
  minmu = if (fitType == "glmGamPoi") 1e-06 else 0.5
)

Arguments

object

a DESeqDataSet

fitType

either "parametric", "local", "mean", or "glmGamPoi" for the type of fitting of dispersions to the mean intensity.

  • parametric - fit a dispersion-mean relation of the form:

    dispersion = asymptDisp + extraPois / mean

    via a robust gamma-family GLM. The coefficients asymptDisp and extraPois are given in the attribute coefficients of the dispersionFunction of the object.

  • local - use the locfit package to fit a local regression of log dispersions over log base mean (normal scale means and dispersions are input and output for dispersionFunction). The points are weighted by normalized mean count in the local regression.

  • mean - use the mean of gene-wise dispersion estimates.

  • glmGamPoi - use the glmGamPoi package to fit the gene-wise dispersion, its trend and calculate the MAP based on the quasi-likelihood framework. The trend is calculated using a local median regression.

maxit

control parameter: maximum number of iterations to allow for convergence

useCR

whether to use Cox-Reid correction - see McCarthy et al (2012)

weightThreshold

threshold for subsetting the design matrix and GLM weights for calculating the Cox-Reid correction

quiet

whether to print messages at each step

modelMatrix

an optional matrix which will be used for fitting the expected counts. by default, the model matrix is constructed from design(object)

minmu

lower bound on the estimated count for fitting gene-wise dispersion

Details

Typically the function is called with the idiom:

dds <- estimateDispersions(dds)

The fitting proceeds as follows: for each gene, an estimate of the dispersion is found which maximizes the Cox Reid-adjusted profile likelihood (the methods of Cox Reid-adjusted profile likelihood maximization for estimation of dispersion in RNA-Seq data were developed by McCarthy, et al. (2012), first implemented in the edgeR package in 2010); a trend line capturing the dispersion-mean relationship is fit to the maximum likelihood estimates; a normal prior is determined for the log dispersion estimates centered on the predicted value from the trended fit with variance equal to the difference between the observed variance of the log dispersion estimates and the expected sampling variance; finally maximum a posteriori dispersion estimates are returned. This final dispersion parameter is used in subsequent tests. The final dispersion estimates can be accessed from an object using dispersions. The fitted dispersion-mean relationship is also used in varianceStabilizingTransformation. All of the intermediate values (gene-wise dispersion estimates, fitted dispersion estimates from the trended fit, etc.) are stored in mcols(dds), with information about these columns in mcols(mcols(dds)).

The log normal prior on the dispersion parameter has been proposed by Wu, et al. (2012) and is also implemented in the DSS package.

In DESeq2, the dispersion estimation procedure described above replaces the different methods of dispersion from the previous version of the DESeq package.

Since version 1.29, DESeq2 can call the glmGamPoi package, which can speed up the inference and is optimized for fitting many samles with very small counts (for example single cell RNA-seq data). To call functions from the glmGamPoi package, make sure that it is installed and set fitType = "glmGamPoi". In addition, to the gene estimates, the trend and the MAP, the glmGamPoi package calculates the corresponding quasi-likelihood estimates. Those can be used with the nbinomLRT() test to get more precise p-value estimates.

The lower-level functions called by estimateDispersions are: estimateDispersionsGeneEst, estimateDispersionsFit, and estimateDispersionsMAP.

Value

The DESeqDataSet passed as parameters, with the dispersion information filled in as metadata columns, accessible via mcols, or the final dispersions accessible via dispersions.

References

Examples


dds <- makeExampleDESeqDataSet()
dds <- estimateSizeFactors(dds)
dds <- estimateDispersions(dds)
head(dispersions(dds))


mikelove/DESeq2 documentation built on Nov. 18, 2024, 1:37 p.m.