I am currently working with the non-coding features of A. thaliana, and trying to get the DE features. Among the three DE test methods in edgeR such as exactTest(), glmFit() and glmLRT(), glmQLFit() and glmQLFTest(), which is/are the one(s) most suitable for running DE tests on miRNA, snRNA, snoRNA, pseuogenes, transposons and 5' and 3'-UTRs? Should I be using any other DE analysis tool instead of edgeR for some specific non-coding feature, like there's lncDIFF for lncRNA?

  • $\begingroup$ Regarding what are the differences between these tests, this answer by one of the authors might be helpful: support.bioconductor.org/p/76790 $\endgroup$
    – Ammar
    Commented Jul 10, 2023 at 16:44

1 Answer 1


The post here is useful ... https://support.bioconductor.org/p/76790/

ExactTest is really cool and completely different from glmQLFit glmFit etc ... you'll need two controls to check it works (it could just reject everything). Its described here https://rdrr.io/bioc/edgeR/man/exactTest.html

There is a concern, some of the lncDIFF data looked more like a lognormal to me in the publication, but I didn't read it in sufficient detail. Anyway your data will probably approximate to a negative binomial distribution and it's statistically tricky to assess whether two negative binomial distributions are significantly different ... the ExactTest will do this.

Is the total output of the control significantly different to the test sample? ... the ExactTest will tell you. You want p < 0.05, preferably a lot lower than 0.05 to be convinced. However, you need to compare two control samples against each other, where p > 0.05 for the subsequent tests to be valid.

So really nice BUT you need to check whether it is a negative binomial FIRST. Thats what the other tests are doing. Please do check whether lncDIFF identified a negative binomial, because if it ain't ExactTest will not work, they could be using a different distribution.

The other tests you mentioned are different to the ExactTest because they simply assess whether the data is negative binomial. The distribution is the frequency of each RNA transcript BTW. edgeR's lnfDIFF requires that distribution and thats how it can assign probabilities to the difference between the frequency distribution of two identical transcripts under difference experimental conditions (or other conditions). So you need a test to say "yeah I'm a negative binomial" (assuming it is negative binomial), then everything else via lncDIFF is then valid.

First you've got to fit you data to a model ...

y <-glmGLMFit(...)

... is the function and that uses general linear models to fit the negative binomial. The fit will result in something called "a residual" and that is very important, the smaller the better. Testing whether that residual is small enough for a negative binomial to be declared is down to ...

glmLRT(y ...)

This is a likelihood ratio test, to test the observed likelihood against the model (p > 0.05). You can also use

gof(y ...)

this is goodness of fit, as the link says the residual follows a chi-squared distribution, i.e. its tested on the chi2 tables and thats easy to understand. Again you need a probability > 0.05 to declare a fit.

HOWEVER, the lnfDIFF guys developed a quasi-likelihood to assess the distribution


Fits the data via quasi-likelihood, I honestly have no empirical idea how that works.

glmQLTest(z ...)

tests the fit to the distribution. You need a probability > 0.05. Again I have not empirical idea whats going on here.

ANY non-significant result is good, doesn't matter if its GLM with gof, GLM with LRT, GLM-QL (whatever that is) because all of these are solid tests. Which would I use? The guys who developed lncDIFF used QL (quasi-likelihood) to assess the fit (might be a good idea). However, statistically I honestly don't know whats going on, so I would also look at the GLM and fit it against the goodness of fit - because thats easy to understand.

What do I do to assess the fit? I use machine learning, but it's way more complicated than anything here.

From the comments.

It's important to note the context. The OP is performing non-coding RNA work, lncDIFF is much better than normal edgeR for this type of data described here Statistical methods suitable for DE analysis of non coding RNAs.

lncDIFF is now available for R here

... so the methods of edgeR should be available to it. glmQLFit() is a general function in R. Providing the lncDIFF object will be accepted by the tests, by performing everything in R this should solve this.

I would advise using lnfDIFF's QL directly, i.e.

y<-ZIQMLfit(...) # fit the distribution
ZIQML.LRT(y ...) # test the fit

The manual is here


I hope that makes sense these are pretty advanced stats so it can be tricky to understand them. Whilst I can teach code, I don't teach complex stats outside machine learning.

  • 1
    $\begingroup$ So... is edgeR a good tool for analysing the DE of noncoding features? I mean since lncRNA has a separate specialised tool for its analysis, which they claim is better than edgeR, is edgeR fine if I want to analyse noncoding features? $\endgroup$ Commented Jul 11, 2023 at 5:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.