[BioC] nested design in limma? -- revisit

Gordon Smyth smyth at wehi.EDU.AU
Thu Jan 18 01:57:32 CET 2007


Dear Tao,

Your experiment is much simpler than Jenny's was. There are lots of 
ways to analyse it, but a straightforward and usually pretty 
effective way in limma is (i) to average over the duplicate probes 
using avedups() and then (ii) treat the animals (biological 
replicates) as blocks using duplicateCorrelation(). To use this 
approach you will need to renumber the animals from 1 to 6.

Just as an aside, in all the experiments I've seen so far, the 
biological variation between animals is much smaller than the 
technical variation between microarrays for most probes.

Best wishes
Gordon

At 11:24 AM 18/01/2007, Shi, Tao wrote:
>Dear Jenny, Gordon, and the list,
>
>
>This is a follow-up on the thread about handling nested design using 
>LIMMA posted last year (please see 
>https://stat.ethz.ch/pipermail/bioconductor/2006-February/012018.html
>).
>
>I have a data set which has very similar design like Jenny's.  6 
>animals, 3 in the control group and 3 in the treated group.  2 
>biological samples were taken from each animal and each was hybdized 
>to 2 arrays.  All arrays have duplicate sets of probes (so there are 
>4 technical replicates for each biological samples).
>
>After reading the posts by Jenny, Gordon and others, I'm a bit 
>confused with what should be the final approach for this kind of 
>design.  I do agree with Jenny that the different biological samples 
>from the same animal (or in her case, different offsprings from the 
>same dam) should not be treated as technical replicates, so I'm not 
>quite sure about using duplicateCorrelation here.  What I did is 
>first, summarized all the technical replicates (they are usually 
>highly correlated) to get one measurement for each biological 
>samples, then fitted LIMMA with a nested design model matrix (see below).
>
>Is this OK and like to hear more comments.  Thanks in advance.
>
>...Tao
>
>
>### after summarization of the technical replicates
> > trt
>  [1] control control control control control control 
> treat   treat   treat   treat   treat   treat
>Levels: control treat
> > animal
>  [1] 1 1 2 2 3 3 1 1 2 2 3 3
>Levels: 1 2 3
> >
> > design.matrix <- model.matrix( ~ -1 +trt/animal)
> > design.matrix
>    trtcontrol trttreat trtcontrol:animal2 trttreat:animal2 
> trtcontrol:animal3 trttreat:animal3
>1           1        0                  0                0 
>        0                0
>2           1        0                  0                0 
>        0                0
>3           1        0                  1                0 
>        0                0
>4           1        0                  1                0 
>        0                0
>5           1        0                  0                0 
>        1                0
>6           1        0                  0                0 
>        1                0
>7           0        1                  0                0 
>        0                0
>8           0        1                  0                0 
>        0                0
>9           0        1                  0                1 
>        0                0
>10          0        1                  0                1 
>        0                0
>11          0        1                  0                0 
>        0                1
>12          0        1                  0                0 
>        0                1
>attr(,"assign")
>[1] 1 1 2 2 2 2
>attr(,"contrasts")
>attr(,"contrasts")$trt
>[1] "contr.treatment"
>
>attr(,"contrasts")$animal
>[1] "contr.treatment"
>
> >
> > fit <- lmFit(dat.temp, design=design.matrix)
>....
>contrast,
>ebayes,
>toptable,
>.....



More information about the Bioconductor mailing list