miaom 12-10-2013 10:03 PM

edgeR: how to calculate group average/means ?

I am trying edgeR now to find deferentially expressed genes.
I have run
d <- DGEList(counts=data,group=g,lib.size=libSizes)
d <- calcNormFactors(d)
d <- estimateCommonDisp(d)
d <- estimateTagwiseDisp(d)
d <- exactTest(d)
# d.final <- topTags(de.com,n = length(data[,1]))
and got some results like

logFC logCPM PValue
A1bg 1.168034660 -3.842894 0.4137326
A1cf 0.000000000 -Inf 1.0000000
A1i3 0.000000000 -Inf 1.0000000
A2m -0.003703085 4.419204 0.9421192
A3galt2 0.437990409 2.861665 0.2611483

But I'd like to know the average/mean of the gene expressions in each condition/groups?
It seems logFC it is different from "log2(rowMeans(GrpB)/ rowMeans(GrpA))" calculating from cpm() counts.

How should I do the calculation ?

Thanks!

 xrao 12-31-2015 07:08 AM

Have you found the answer? I am also curious. Thank you!

 Schelarina 01-02-2016 06:47 AM

Do you need CPM per each sample after TMM normalization?
you could do something like this
cpm <- cpm(d, log=TRUE, lib.sizes=lib.sizes, normalized.lib.sizes = TRUE, prior.count=0.25)
if your cpm values are negative then you can set the prior.count to a different value

 xrao 01-04-2016 07:08 AM

Thank you! But we meant mean values for each group/condition.

 ckruse6 08-28-2018 07:06 AM

Manual Calc option

So, I know it isn't ideal, but let's take the actual values of log(CPM) and log(FC) that you have from edgeR. Keep in mind this will only work if your replicates of experimental and control were equal, but you could tweak it as needed. Might be worth double checking that logCPM is using base 2 which I believe is default.

Using "A" to be the average expression of your experimental condition and "B" to be your control as you've run it.

FC=A/B, so
2^log(FC) will get you (A/B)
CPM=(A+B)/2, so
2^log(CPM)=(A+B)/2

Basic algebra solves for B,
B=2(2^log(CPM))/(1+2^(log(FC)))

and then
A= 2(2^log(CPM)) - B

Using the values of a typical EdgeR, this is minimal R work to generate the columns you wanted.

Hope this helps!

 All times are GMT -8. The time now is 11:54 PM.