Question: The result of differential gene expression analysis should be extracted based on adj.p.value ?
gravatar for Rahil
2.5 years ago by
Rahil150 wrote:

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 <-, 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!!

ADD COMMENTlink modified 2.2 years ago by swbarnes27.9k • written 2.5 years ago by Rahil150

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 REPLYlink written 2.2 years ago by farzanajui110
gravatar for dariober
2.5 years ago by
WCIP | Glasgow | UK
dariober11k wrote:

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:

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 COMMENTlink written 2.5 years ago by dariober11k
gravatar for swbarnes2
2.2 years ago by
United States
swbarnes27.9k wrote:

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

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

ADD COMMENTlink written 2.2 years ago by swbarnes27.9k
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.3.0
Traffic: 1688 users visited in the last hour