The result of differential gene expression analysis should be extracted based on adj.p.value ?
2
1
Entering edit mode
6.9 years ago
Raheleh ▴ 260

Hello,

I am trying to analyze affymetrix microarray data (GSE27157). I did differential gene expression analysis using limma and used topTable() function to extract the top genes. I wanted to extract the genes with adj.p.value < 0.05, however filtering with this criteria returns nothing. The smallest amount for adj.p.value is 0.4 !!. Is it normal or there is a problem in my analysis? I did RMA to normalize my data and also tried with GCRMA but both returned the same result.

Could I extract based on p.value instead of adj.p.value, in this case (p.value < 0.05 and lfc = 2) it returns 111 genes.

design <- model.matrix(~0 + samples)
colnames(design) <- c("Mut", "Wt")

fit <- lmFit(eset2, design)
contrast.matrix <- makeContrasts(Mut-Wt, levels = design)
fit.con <- contrasts.fit(fit, contrast.matrix)
fit.eb <- eBayes(fit.con)   

dge <- topTable(fit.eb, number = 1000, lfc = 2)
dge[which(dge$P.Value < 0.05),]
dim(dge[which(dge$P.Value < 0.05),])

Any help would be great appreciated!!

limma microarray bioconductor R • 2.3k views
ADD COMMENT
0
Entering edit mode

Hello, I am using limfit model for gene expression data but i am confused about the result. This is the first time i am using this, could anyone please help me about interpreting the results? Which part of the result should i include in my report and how to explain that part? Thanks in advance

ADD REPLY
3
Entering edit mode
6.9 years ago

The smallest adjusted pvalue being 0.4 is effectively saying that no gene stands out of the statistical noise. This could be because your contrast Mut-WT doesn't produce an effect on gene expression strong enough to be confidently detected (or most or all of the genes change in the same direction so you see no change, but that's less likely).

Of course, you could still select genes with p.value < 0.05 and lfc = 2 but you have to be very careful in interpreting the results because you could be discussing just false positives. This is because if there is no effect at all, p-values are uniformly distributed between 0 and 1 and out of thousands of tests you inevitably get a few with small p-value just by chance. You could see this with:

set.seed(1234)
sort(runif(n= 10000, min= 0, max= 1))[1:10] # n random "p-values", show the smallest ten 
[1] 0.0003418126 0.0006121558 0.0006403907 0.0008630857 0.0008993864
[6] 0.0009852112 0.0011081123 0.0011709959 0.0013087022 0.0016921822
ADD COMMENT
0
Entering edit mode
6.6 years ago

Could I extract based on p.value instead of adj.p.value,

Don't do this. You must adjust for multiple testing. Follow the link below to see why

https://xkcd.com/882/

It's always possible that you did nothing wrong, and there is no significant difference between your two samples.

ADD COMMENT

Login before adding your answer.

Traffic: 2416 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6