[R] How to calculate fold change and its confidence interval

xyang2 xyang2 at uchicago.edu
Wed Mar 31 03:47:25 CEST 2010


Dear all,

I am reading the book "statistic analysis of gene expression microarray 
data" by Terry Speed .
On page16-17, there is an example that I can not repeat.

The content can be found using below linkage:
http://books.google.com/books?id=MBzcRjez9ccC&pg=PA16&lpg=PA16&dq=confidence+interval+for+fold+change++statistic+analysis+of+gene+expression+microarray+data&source=bl&ots=pSfB1_-sb4&sig=zaUycGxgD__GMHZtaSnOwqLUnsk&hl=en&ei=k6iyS_DGGZLcM9CjpaEE&sa=X&oi=book_result&ct=result&resnum=4&ved=0CBIQ6AEwAw#v=onepage&q=&f=false


I want to know how to calculate the confidence interval for fold change 
of microarray data in R.
My questions in details are:
1) why the rowMeans() gives different results as simple function mean()
2) How to calculate the CI for the fold changes.


For example, we can get a matrix of 4 genes of 4 samples in in two groups:

 > tb <- 
matrix(c(860,406,284,46,42,31,29,64,348,164,115,19,36,44,18,85),nrow=4)
 > colnames(tb) <- c("A","A","B","B")
 > tb
       A  A   B  B
[1,] 860 42 348 36
[2,] 406 31 164 44
[3,] 284 29 115 18
[4,]  46 64  19 85

The fold change can be calculated as
 > fc <- apply(tb[,1:2],1,mean) / apply(tb[,3:4],1,mean)
 > fc
[1] 2.348958 2.100962 2.353383 1.057692

And the paired fold change should be:
 > fc.perSample <- cbind(tb[,1]/tb[,3], tb[,2]/tb[,4])
 > fc.perSample
         [,1]      [,2]
[1,] 2.471264 1.1666667
[2,] 2.475610 0.7045455
[3,] 2.469565 1.6111111
[4,] 2.421053 0.7529412

 > rowMeans(fc.perSample)
[1] 1.818966 1.590078 2.040338 1.586997


But if you manually check every gene one by one, totally different 
results were got. for example:
 > mean(2.471264, 1.1666667)
[1] 2.471264


Many thanks for any help.

Xinan



More information about the R-help mailing list