This is a test version of Biostars. For the public version, visit https://www.biostars.org.
differential expression analysis

hello, i have pre-processed 9 set of microarray data belonging different subtype of ovarian cancer and trying to find out differentially expressed gene in each condition.for finding differentially expressed gene, i have filtered genes with p -value <0.05 and fold change 2. but problem is that there too large number of genes comming. example. 1500 genes are downregulated and 1768 genes upregulated. is this possible? The codes which i havve use for pre-processing and t- test calculate aregive below-

mydata <- ReadAffy() 
mydata
eset <- rma(mydata) 
exprSet <- exprs(eset)
pvalue.exprSet = apply(exprSet, 1, function(x){t.test(x[1:4], x[5:45]) $p.value}) 
Combine.exprset.pvalue = cbind(exprSet,pvalue.exprSet)
write.table(Combine.exprset.pvalue,"NormalizedValues.xls",sep="\t",col.names = NA)

Kindly give me solution,where is the problem ? thanking you.

microarray differential expression

Did you use adjusted p-values ? or nominal p-values prior multitesing correction ? You should use adjusted ones.

2 answers

A possible solution is to use adjusted pvalue instead of raw pvalue to account for multiple testing.

To illustrate this, imagine that there are 20 000 genes considered in your experiment. With a 5% pvalue cutoff, you accept to have 1000 false positives in your DEGs, which is bad. Instead, you could use FDR (false discovery rate) : with a 5% FDR cutoff, you accept to have 5% of your DEGs that are false positives. So if you end up with 1000 DEGs, only 50 should be false positives, which is much better.

what is adjusted p-value i have no idea? how it can be calculate?

what is adjusted p-value i have no idea?

Then you should read about it. Search for "multiple testing correction" and "adjusted p-value".

how it can be calculate?

You can calculate it from a set of uncorrected p-value, see Piechota answerL

You should start with this paper by Storey & Tibshirani

Then update your code accordingly

fdrValue = p.adjust(pvalue.exprSet, method="fdr")

It is also important to know that you are mixing parametric and non-parametric statistical tests. In your case it is probably better to use only parametric t.test

t.test(x[1:4], x[5:45], var.equal = TRUE)

when i am using code for t-test which are given below: pvalue.exprSet = apply(exprSet, 1, function(x){t.test(x[1:4], x[5:17],var.equal = true) $p.value}) the error occur which are mentioned below. Error in t.test.default(x[1:4], x[5:17], var.equal = true) : object 'true' not found Error during wrapup: cannot open the connection

its TRUE not true. So pvalue.exprSet = apply(exprSet, 1, function(x){t.test(x[1:4], x[5:17],var.equal = TRUE) $p.value})

Log in to answer this question.