[BioC] Limma and Block Effects

Gordon Smyth smyth at wehi.edu.au
Wed Sep 28 02:02:22 CEST 2005

>Date: Mon, 26 Sep 2005 15:19:55 +0100
>From: Pie Muller <pie.muller at liverpool.ac.uk>
>Subject: [BioC] Limma and Block Effects
>To: bioconductor at stat.math.ethz.ch
>Hi Bioconductors
>I followed the example 10.2 in Limma's user guide which includes a
>coefficient for each mouse in the linear model to account for technical
>replication. I am somewhat puzzled because the example in the user's guide
>returns non-estimable coefficients and hence the contrast (mu1+mu2-wt2)/2
>as proposed in the guide cannot be computed... (I assume the function
>"designMatrix()" can be replaced by "modelMatrix()".)

You're right, there is an error in the user's guide. Adam Whitney also 
pointed this error out last month. I am trying to find time to fix it.

>  Since the given
>example returns an error, and I am not a statistician, I am struggling in
>finding the correct solution. As we have four  replicate spots on our
>arrays I cannot use the "duplicateCorrelation()" function here. How does
>the correct design matrix look like and which contrasts need to be computed?
>Has anyone a solution either for the example given in the user guide or my
>own experiment listed below?
>I have 3 biological replicates and two technical replicates for each
>biological replicate, i.e.,
>FileName Cy3 Cy5
>File1    A1  B1
>File2    B1  A1
>File3    A2  B2
>File4    B2  A2
>File5    A3  B3
>File6    B3  A3
>and would like to estimate the effect between A and B including a
>coefficient to fit a separate effect for each individual.

This is similar to the design posted recently by Kevin Lin. It's a simple 
and quite commonly occuring design, but also in a sense non-standard 
because it is unconnected. It is hard for general purpose functions like 
modelMatrix() to cope with these sort of designs. It shows the great 
richness of microarray experiments.

On the other hand, this design responds very easily to first principles. 
Clearly each pair of arrays estimates an A vs B comparison for you, and you 
just want to average these three estimates. Hence you want

design <- 

to get an estimate from each pair and later

cont.matrix <- matrix(BvsA=c(1,1,1)/3)

to average the three.

There are various ways to generate the design matrix automatically, but I 
think writing them out here would only make a simple situation seem more 


More information about the Bioconductor mailing list