Answers.Body: <p>As you answered yourself @Death Metal, <code>voom</code> will by default not perform additional normalization.<br />
  However in virtually all cases you would want to do some kind of <a href="https://dx.doi.org/10.1093%2Fbib%2Fbbx008" rel="nofollow noreferrer">normalization</a> at least to correct for differences in sequenced reads between the samples. This is why in the <a href="https://bioconductor.org/packages/release/bioc/vignettes/limma/inst/doc/usersguide.pdf" rel="nofollow noreferrer">manual</a> (page 71 right at the top) the <code>calcNormFactors</code> function from  <a href="http://bioconductor.org/packages/release/bioc/html/edgeR.html" rel="nofollow noreferrer"><code>edgeR</code></a> is used. This does a global <code>TMM</code> normalization for differences in library size.</p>
  <p>Basically <code>voom</code> assumes that you did a normalization and will not do a second one because this could cause all kinds of problems.</p>
  <p>In some cases you may prefer normalization other than <code>TMM</code>, for example if the number of genes detected in your samples is widely different. In this case is could be better to do <code>quantile</code> normalization that is available through the <code>normalizeBetweenArrays</code> function in <code>voom</code>.<br />
  However, this may over-correct your data and get rid of many interesting differences. In these cases I have found <a href="https://dx.doi.org/10.1093/biostatistics/kxx028" rel="nofollow noreferrer"><code>qsmooth</code></a> quite helpful. Here quantile normalization is only applied across groups if the local distributions are similar enough.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-06-25T15:21:37.867Z
Answers.LastActivityDate: 2021-06-25T15:21:37.867Z
Answers.UserDisplayName: PPK
Body: <p>I know that Voom function from <a href="https://www.bioconductor.org/packages/release/bioc/html/limma.html" rel="nofollow noreferrer">limma</a> package from Bioconductor converts raw counts into log-CPM values and then Normalization is applied on that, with normalize.method argument.</p>
  <p>I would like to know clearly for RNA-Seq data:</p>
  <ol>
  <li><p>how this normalization is done (statistically) ?</p>
  </li>
  <li><p>normalization across samples and normalization across genes. But don't the know how it is done statistically.</p>
  </li>
  </ol>
  
Tags: <r><bioconductor><normalization>
Title: Voom function from limma package and Normalization on counts data
ThreadText: # Voom function from limma package and Normalization on counts data
  
  (Asked by: username_0 on 2017-09-13)
  
  I know that Voom function from [limma](https://www.bioconductor.org/packages/release/bioc/html/limma.html) package from Bioconductor converts raw counts into log-CPM values and then Normalization is applied on that, with normalize.method argument.
  
  I would like to know clearly for RNA-Seq data:
  
  1. how this normalization is done (statistically) ?
  2. normalization across samples and normalization across genes. But don't the know how it is done statistically.
  
  **Tags:** r, bioconductor, normalization
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2021-06-25. Score: 2
  
  As you answered yourself @Death Metal, `voom` will by default not perform additional normalization.  
  However in virtually all cases you would want to do some kind of [normalization](https://dx.doi.org/10.1093%2Fbib%2Fbbx008) at least to correct for differences in sequenced reads between the samples. This is why in the [manual](https://bioconductor.org/packages/release/bioc/vignettes/limma/inst/doc/usersguide.pdf) (page 71 right at the top) the `calcNormFactors` function from [`edgeR`](http://bioconductor.org/packages/release/bioc/html/edgeR.html) is used. This does a global `TMM` normalization for differences in library size.
  
  Basically `voom` assumes that you did a normalization and will not do a second one because this could cause all kinds of problems.
  
  In some cases you may prefer normalization other than `TMM`, for example if the number of genes detected in your samples is widely different. In this case is could be better to do `quantile` normalization that is available through the `normalizeBetweenArrays` function in `voom`.  
  However, this may over-correct your data and get rid of many interesting differences. In these cases I have found [`qsmooth`](https://dx.doi.org/10.1093/biostatistics/kxx028) quite helpful. Here quantile normalization is only applied across groups if the local distributions are similar enough.
  
  
  ---
  
  