Question: Identification of DEGs through limma analysis
gravatar for rkp
12 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 11 months ago • written 12 months ago by rkp0
gravatar for Axel Klenk
12 months ago by
Axel Klenk830
Axel Klenk830 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 12 months ago by Axel Klenk830
gravatar for Aaron Lun
12 months ago by
Aaron Lun19k
Cambridge, United Kingdom
Aaron Lun19k 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 12 months ago • written 12 months ago by Aaron Lun19k
gravatar for Gordon Smyth
12 months ago by
Gordon Smyth33k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth33k 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 11 months ago • written 12 months ago by Gordon Smyth33k
gravatar for rkp
11 months ago by
rkp0 wrote:

Thank you so much Sir


ADD COMMENTlink written 11 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: 306 users visited in the last hour