[BioC] limma posterior variance - revisited
Gordon Smyth
smyth at wehi.edu.au
Wed Jun 9 01:55:57 CEST 2004
At 06:43 AM 9/06/2004, Naomi Altman wrote:
>The problem remains, but I have added a few lines of code that were
>missing in the original posting.
>
>I have just run limma and am getting p-values after eBayes that are
>smaller than the p-values before, leading to 100% of my genes being
>declared significant at any value of FDR you care to use.
It seems very surprising to get 100% of genes significant, but nothing in
the output that you give below suggests that anything is wrong. It all
seems as it should be. You should tend to get smaller p-values after eBayes
than before because the degrees of freedom increase, but not uniformly so
because many of the residual standard deviations also increase.
>The design is a 1-way ANOVA with 6 treatments and 2 reps/treatment (which
>I know is not great but ...)
>
>I thought that the denominator adjustment would make the posterior
>sigma^2 > unadjusted MSE, but this is not the case.
Empirical Bayes methods, like all shrinkage methods, shrink estimators
towards a common value. This means that some values will go up, and some
will go down. The help page says that eBayes() "uses an empirical Bayes
method to shrink the gene-wise sample variances towards a common
value". What is happening is that the precisions (the inverse sample
variances) are being set to their posterior means. You can see the
complete, pretty simple, formula by following the URL for the reference
given on the help page.
Gordon
> Here are the commands I used to fit the model and do the ebayes
> adjustment.
>
>design=model.matrix(~-1+factor(c(1,1,2,2,3,3,4,4,5,5,6,6)))
>colnames(design)=c("trt1","trt2","trt3","trt4","trt5","trt6")
>
>fitRMA=lmFit(RMAdata,design)
>
>contrast.matrix
>
> c1 c2 c3 c4 c5
>trt1 1 1 1 1 1
>trt2 -1 1 1 1 1
>trt3 0 -2 1 1 1
>trt4 0 0 -3 1 1
>trt5 0 0 0 -5 1
>trt6 0 0 0 0 -5
>
>fitCont=contrasts.fit(fitRMA,contrast.matrix)
>fitAdj=eBayes(fitCont)
>
>ls.print(lsfit(fitRMA$sigma^2,fitAdj$s2.post))
>Residual Standard Error=0
>R-Square=1
>F-statistic (df=1, 22744)=1.632754e+35
>p-value=0
>
> Estimate Std.Err t-value Pr(>|t|)
>Intercept 0.0093 0 1.026963e+17 0
>X 0.5628 0 4.040735e+17 0
>
>mean(fitAdj$s2.post)
>[1] 0.02991697
>
>mean(fitRMA$sigma^2)
>[1] 0.03656270
>
>fitAdj$s2.prior
>[1] 0.02136298
>
>
>Naomi S. Altman 814-865-3791 (voice)
>Associate Professor
>Bioinformatics Consulting Center
>Dept. of Statistics 814-863-7114 (fax)
>Penn State University 814-865-1348 (Statistics)
>University Park, PA 16802-2111
More information about the Bioconductor
mailing list