Question: Identification of DEGs through limma analysis
gravatar for rkp
14 months ago by
rkp0 wrote:

I wish to analyze microarray data for identification of DEGs through limma analysis at the threshold P<0.05 or a fold change >1.5. I written R script as 

results<-decideTests(fit2, p.value=0.05)


results<-decideTests(fit2, lfc=1.5)

When I run these script, get some variation in the results, In case of p.value the number of up-regulated and down-regulated genes are found more as compare to lfc. Is my script correct?

Which threshold criteria is better for fetching out of the significant genes? Any suggestion will be highly appreciated.

Thanks in Advance.

Kind regards,


ADD COMMENTlink modified 13 months ago • written 14 months ago by rkp0
gravatar for Axel Klenk
14 months ago by
Axel Klenk920
Axel Klenk920 wrote:

Dear rkp,

what's "correct" or "better" depends on your definition of DEG but if you require a certain

logFC and a certain p-value, have a look at function treat(), also in the limma package.



 - axel

ADD COMMENTlink written 14 months ago by Axel Klenk920
gravatar for Aaron Lun
14 months ago by
Aaron Lun20k
Cambridge, United Kingdom
Aaron Lun20k wrote:

There are a number of issues here. The first is that lfc is the log-fold change threshold, not the fold-change. The second is that setting lfc in topTable is not recommended, see the note in ?topTable. Finally, as Axel suggests, use treat to obtain p-values that reflect the log-fold change threshold; correct them using the BH method (done automatically with topTreat); and select significant genes at a certain FDR threshold.

ADD COMMENTlink modified 14 months ago • written 14 months ago by Aaron Lun20k
gravatar for Gordon Smyth
14 months ago by
Gordon Smyth34k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth34k wrote:

If you read the help page for decideTests(), it will answer all your questions.

The default behaviour of decideTests() is to choose genes using an FDR cutoff of 0.05. The default settings are for p.value = 0.05 and adjust = "BH", so the first code option you give in your question is just the same as the default.

When you set lfc = 1.5 you are changing the lfc default but not the p.value or adjust defaults, so you are applying a fold-change cutoff as well as the FDR cutoff. So naturally you must get fewer genes because you are applying two cutoffs at the same time. By setting lfc = 1.5, you are setting the fold change cutoff to be 2^1.5 = 2.83.

If you wanted to set a fold change cutoff of 1.5 without any significance cutoff, then you would use

decideTests(fit2, p = 1, lfc = log2(1.5)).

Regarding which one is better, just read the help page, which says "Although this function enables users to set p-value and lfc cutoffs simultaneously, this combination criterion not usually recommended." We generally recommend a FDR cutoff, which can be made more stringent if you wish using treat().


ADD COMMENTlink modified 13 months ago • written 14 months ago by Gordon Smyth34k
gravatar for rkp
13 months ago by
rkp0 wrote:

Thank you so much Sir


ADD COMMENTlink written 13 months ago by rkp0
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 267 users visited in the last hour