[BioC] (no subject)

Gordon Smyth smyth at wehi.edu.au
Wed Mar 24 00:18:08 CET 2004


At 11:13 PM 23/03/2004, Eliana Lucchinetti Zaugg wrote:
>Hello!
>I have a question concerning data interpretation in LIMMA. First of all 
>I'll give you the commands:
>
>contrast.matrix<-makeContrasts(APC-ISCH,IPC-ISCH,levels=design)
>fitPRECOND2<-contrasts.fit(fit,contrast.matrix)
>fitPRECOND2<-eBayes(fitPRECOND2)
>clas3<-classifyTestsP(fitPRECOND2,p.value=0.01,method="fdr")
>vennDiagram(clas3,include="up")
>vennDiagram(clas3,include="down")
>
>So far, no problem! I've got nice Venn diagrams. After that my input was:
>
>topTable(fitPRECOND2,number=20,genelist=NULL,coef=1,adjust="fdr")
>
>which yielded:
>
>               M         t    P.Value         B
>2380 -1.0241489 -6.058845 0.01147946 5.0373154
>379  -0.8440311 -5.464009 0.02976549 3.6259203
>2382 -0.9576517 -5.261334 0.02976549 3.1387221
>8436 -0.6746846 -5.216491 0.02976549 3.0306287
>2383 -0.7343412 -5.064616 0.03638846 2.6639293
>7974 -1.0281853 -4.889561 0.04943332 2.2404780
>7925 -0.8519961 -4.833610 0.04952967 2.1050515
>2384 -0.7728411 -4.698536 0.05865728 1.7781412
>432   0.5732701  4.656867 0.05865728 1.6773365
>7680  0.5717780  4.640318 0.05865728 1.6373117
>7927 -0.7303740 -4.598890 0.05865728 1.5371476
>2569  0.5033168  4.579322 0.05865728 1.4898512
>1688  0.6904956  4.540636 0.06028835 1.3963860
>6603  0.5590289  4.506030 0.06162635 1.3128274
>5487 -0.7299432 -4.425216 0.07196002 1.1179075
>3247  0.6442329  4.377510 0.07698329 1.0030059
>5501 -0.8589314 -4.348990 0.07839810 0.9343814
>7434  0.7573137  4.293568 0.07860314 0.8011835
>7230  0.6309675  4.277457 0.07860314 0.7625059
>8527 -0.8768646 -4.252795 0.07860314 0.7033388
>
>It occurred to me that none of the p-palues in the ranking was below 
>p=0.01. Why were there significantly differentially regulated genes in my 
>Venn diagrams (constructed using p=0.01)?

This is a good question. The problem is that classifyTestsP() is doing two 
things which are probably unexpected. The first thing is really an error on 
my part. classifyTestsP() command is not extracting the degrees of freedom 
from the fitted model object, so it is computing p-values on the basis of 
normal distributions rather than t-distributions. You could give it the 
correct degrees of freedom as follows:

 > df <- fitPRECOND2$df.residual + fitPRECOND2$df.prior
 > clas3<-classifyTestsP(fitPRECOND2, df=df, p.value=0.01,method="fdr")

The second thing is more important. The three functions classifyTestsP(), 
classifyTestsT() and classifyTest() are all designed to control the false 
discovery rate *across contrasts* rather than across genes. This means that 
the 'fdr' adjustment is applied across rows of the p-values rather than 
down the columns. The idea is that you can do false discovery rate control 
across genes separately and simply input the resulting p-value that you 
want to cut on. You are supposed to change the p-value that you give to 
classifyTestsP() until you get the number of significant results that you 
want to have, e.g., to make one of the columns agree with topTable().

The above means that you can't get topTable() and classifyTestsP() to agree 
exactly. I agree that this is unintuitive and I'll give some thought to 
making a version of classifyTestsP() that can agree with topTable().

>Second question:
>Do the numbers in the first column correspont to the row number in the 
>eset (expression set, I used RMA to do the analysis)?

Yes. And to get gene names you could use

topTable(fitPRECOND2,number=20,genelist=geneNames(eset),coef=1,adjust="fdr")

Gordon

>THANKS IN ADVANCE!
>ELIANA
>
>===============================
>Eliana Lucchinetti Zaugg, PhD
>Institute of Pharmacology and Toxicology
>Section of Cardiovascular Research-Room 17 J 28
>University of Zurich
>Winterthurerstr. 190
>CH-8057 Zürich (Switzerland)
>
>Phone: +41-1-635 59 18
>Fax: +41-1-635 68 71
>e-mail: eliana.zaugg at pharma.unizh.ch



More information about the Bioconductor mailing list