[BioC] limma: one sample t-test + covariate

James W. MacDonald jmacdon at uw.edu
Wed Jul 10 16:17:51 CEST 2013


Hi Guido,

On 7/10/2013 2:38 AM, Hooiveld, Guido wrote:
> Hi,
> Maybe a naive question, but is it possible to do a 'one sample t-test' in limma while including a covariate in the model? If so, how?
>
> I have an experiment in which 32 volunteers were profiled on array after and before a (short-term) intervention (physical exercise). Some volunteers used a supplement, others not.
> I would like to identify genes responding to the intervention, while correcting for supplement use.
>
> I manually subtracted the 'before' from the 'after' expression data, so I got delta values (delta.data; a matrix).
> Then I checked for differential gene expression using the one sample t-test approach to check whether differences are significant from 0  (thus without defining a design using contrast.matrix).
>
>> fit<- lmFit(delta.data)
>> fit2<- eBayes(fit)
>> topTable(fit2)
>                ID      logFC         t      P.Value    adj.P.Val        B
> 4426         xxx  0.4229133  9.496956 3.149698e-12 5.193054e-08 17.34925
> 14955      yyy  0.4817134  9.314950 5.598957e-12 5.193054e-08 16.82030
>
> So far so good, but how can I include the covariate 'supplement' [being 0 or 1 for 38ppl] in the model?
>
> If I try to do this the usual way by defining the design using contrast.matrix, a got an error:
>
>> design<- model.matrix(~0+Intervention+Supplement)
> Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
>    contrasts can be applied only to factors with 2 or more levels
>
> The error is obviously correct because 'Intervention' is 1 for all samples.

Right. So why are you adding intervention into your model matrix when 
you have already paired manually? That would be doing the same thing 
twice. If you want to do this with your manually paired samples, just 
remove the interaction factor.

The conventional way to approach this would be to construct a blocking 
factor for subjects, an intervention factor, and a supplement factor. 
This would have the added benefit of allowing  you to test for a 
supplement:intervention interaction, which I would presume is the 
coefficient of interest.

I haven't checked, but I doubt you have the degrees of freedom to fit 
all those coefficients, so you would want to construct the design matrix 
like

design <- model.matrix(~Intervention*supplement+blocking)

in which case you will get an warning saying that one or more of the 
blocking factors is inestimable. Which isn't a problem, as these are 
nuisance factors, so you just want to account for them rather than 
actually getting a meaningful estimate.

Best,

Jim

Best,

Jim
>
>
> Thanks,
> Guido
>
> ---------------------------------------------------------
> Guido Hooiveld, PhD
> Nutrition, Metabolism&  Genomics Group
> Division of Human Nutrition
> Wageningen University
> Biotechnion, Bomenweg 2
> NL-6703 HD Wageningen
> the Netherlands
> tel: (+)31 317 485788
> fax: (+)31 317 483342
> email:      guido.hooiveld at wur.nl<mailto:guido.hooiveld at wur.nl>
> internet:   http://nutrigene.4t.com
> http://scholar.google.com/citations?user=qFHaMnoAAAAJ
> http://www.researcherid.com/rid/F-4912-2010
>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at r-project.org
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor

-- 
James W. MacDonald, M.S.
Biostatistician
University of Washington
Environmental and Occupational Health Sciences
4225 Roosevelt Way NE, # 100
Seattle WA 98105-6099



More information about the Bioconductor mailing list