<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>

CC BY-SA 4.0
2021-06-25T15:21:37.867Z
2021-06-25T15:21:37.867Z
PPK
<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>

<r><bioconductor><normalization>
Voom function from limma package and Normalization on counts data
# 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.


---

