Question: How to find differentially expressed genes between three groups?
0
16 months ago by
John210
United States
John210 wrote:

Hi there,

How to find differentially expressed genes between three groups? Basically I want to know what are all the genes are expressed shows maximum variation between three groups.

Thanks

rna-seq ngs R • 1.3k views
modified 16 months ago by daniele.avancini60 • written 16 months ago by John210

Use likelihood ratio tests in edgeR.

1
16 months ago by
daniele.avancini60 wrote:

Using classic tools (Deseq2, edger.. ) is not possible, they usually allow the comparison between two groups at a time. And rightly so, in my humble opinion since its the nature of differential expression which has only two dimensions (up or downregulated). However, you can use some tricks such as comparing 1 vs all-others or ANOVA. You can see an example here.

Strictly speaking, I think you can sometimes have a p-value with a categorical variable with more than 2-levels, but you can't have a fold-change value.

So, I like your ANOVA example, but I'm don't think it is correct to claim that no method for calculating RNA-Seq p-values can handle a categorical value with more than 2 levels. For example, I know DESeq2 / edgeR / limma-voom can all handle continuous variable analysis (even though I was previously confused about this): so, I'm 100% certain that you could make a comparison if you converted your categories into a numeric score.

My apologies, I did not know you could and thank for pointing it out. Could you elaborate a bit more on how to convert categories into numeric scores? Anyway, I said that it was not possible because I thought you needed a fold change and the significance of that fold change in order to get to any conclusion on differential expression and not only the statistics. I personally wouldn't use the ANOVA example I gave earlier since I believe that the most reliable results will be obtained with the old-fashion 2-way differential analysis.

1

R can do this automatically with the `as.numeric()` function, but I'm guessing that isn't what you want.

So, I don't know if this is relevant to your comparison, but here is a general example of what I mean:

Let's say you have 3 categories:

1) Over-Expression

2) WT

3) Knock-Out

You can define a new numeric variable where you map numbers to the categories. For example, with those categories, maybe something like this would make sense:

"Over-Expression" --> +1

"WT" --> 0

"Knock-Out" --> -1