Biostar Beta. Not for public use.
Question: How to find differentially expressed genes between three groups?
0
Entering edit mode

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

Entering edit mode
0

Use likelihood ratio tests in edgeR.

russhh
♦ 4.4k
1
Entering edit mode

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.

Entering edit mode
0

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.

Charles Warden
6.8k
Entering edit mode
0

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.

daniele.avancini
• 20
Entering edit mode
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