Question: Does Fold change cutoff changes the FDR value using glmTreat function in edgeR?
0
9 months ago by
Biologist70
Biologist70 wrote:

I'm doing differential analysis between two groups A & B

With Fold change > 2 and FDR < 0.05 I have got more than 600 differentially expressed genes. Among them I see the following gene.

tr <- glmTreat(fit, contrast=contrast.matrix, lfc=log2(2))
tab2 <- topTags(tr,n=Inf, adjust.method = "BH")
keep <- tab2$table$FDR <= 0.05
LogFC Unshrunk.logFC  logCPM   PValue       FDR
RMRP 2.802567464 2.802628518 11.43969321 1.94E-06 2.07E-05

For Fold change > 5 and FDR < 0.05

tr <- glmTreat(fit, contrast=contrast.matrix, lfc=log2(5))
tab2 <- topTags(tr,n=Inf, adjust.method = "BH")
keep <- tab2$table$FDR <= 0.05
LogFC Unshrunk.logFC  logCPM   PValue       FDR
RMRP 2.802567464 2.802628518 11.43969321 0.05563776 0.9930597

But with Fold change > 5 and FDR < 0.05 I did not find this gene differentially expressed.

Similarly in other analysis between C & D

with Fold change > 2 and FDR < 0.05

       LogFC    Unshrunk.logFC  logCPM     PValue     FDR
RMRP 9.269439542 9.275584319 12.44069535 1.73E-28 1.48E-26

with Fold change > 5 and FDR < 0.05

        LogFC    Unshrunk.logFC  logCPM     PValue     FDR
RMRP 9.269439542 9.275584319 12.44069535 1.77E-24 8.20E-22

My question why in the analysis between A & B with Foldchange > 5 I didn't find that gene differentially expressed?

In the analysis between C & D, with Fold change > 2 and Fold Change > 5 I see the "RMRP" gene showing similar values but PValue and FDR is changing. Does FDR value change based on Fold change cutoff?

modified 9 months ago by James W. MacDonald49k • written 9 months ago by Biologist70

Read the posting guide and provide some code, namely your glmTreat calls.

yes, I gave the code and made necessary changes in my question.

Answer: Does Fold change cutoff changes the FDR value using glmTreat function in edgeR?
3
9 months ago by
United States
James W. MacDonald49k wrote:

You are getting confused as to what glmTreat is intended to do. When you do a statistical test, you are testing for evidence that the difference between the populations being compared is greater than a particular threshold. To do so, you take some samples from the populations you care about and do a test. When you do that test, you generate sample estimates (like the logFC that you present). There is a critical difference here, so let me repeat; you take samples of a population in order to say something about the population. But the estimates from the samples are just that - estimates of the population parameter you care about - rather than being the population parameters themselves.

When you do a test using glmTreat, saying you want a logFC > 1, you aren't saying that you want a sample logFC > 1, you are saying that you want to test for evidence that the population logFC is > 1. Since there is error involved in taking a sample, you always need a larger sample logFC to provide evidence for a given population logFC, and the higher the variability for your sample, the larger the sample logFC you need.

So yes, when you change the lfc argument, the underlying p-values will change as well, and since FDR is estimated using the p-values, that changes too. If it didn't, what would be the point of having the lfc argument?