[BioC] how does limma calculate the coefficients with using different design matrix?
Albyn Jones
jones at reed.edu
Mon Aug 16 05:17:41 CEST 2010
I would be happy to share my version of lmFit and related functions,
which include a contrast argument. I haven't yet since I am not ready
to guarantee that they respect all the class definitions and
downstream analytical functions, though they work in my context. I
have no doubt that Gordon has a better grasp of those issues than I do.
Accurate computation should be the default behavior whenever possible
and practical, as it seems to be here!
albyn
Quoting Gordon K Smyth <smyth at wehi.EDU.AU>:
> Dear Xiaokuan,
>
> You haven't told us about your data, but it must contain missing
> values or weights, because otherwise the two topTable results you
> give would have been identical. In the absence of missing values or
> weights, the results would have been as you expected.
>
> With missing values or weights, the first topTable result you give
> (the one with designcontr) is exact whereas the second result is
> approximate.
>
> The fact that contrast.fit() gives approximate results in the
> presence of missing values or weights is mentioned on the
> documentation page for contrast.fit, and has been discussed a few
> times on this list, see
>
> https://www.stat.math.ethz.ch/pipermail/bioconductor/2009-December/030947.html
>
> Professor Albyn Jones is trying to pursuade me to implement
> something similar to contrasts.fit() that would be exact in all
> cases. The only way I could do this would be to add an argument
> 'contrasts' to lmFit. I may yet do that!
>
> Best wishes
> Gordon
>
>> Date: Sat, 14 Aug 2010 12:30:57 -0700 (PDT)
>> From: Xiaokuan Wei <weixiaokuan at yahoo.com>
>> To: bioconductor <bioconductor at stat.math.ethz.ch>
>> Subject: [BioC] how does limma calculate the coefficients with using
>> different design matrix?
>>
>> Dear list,
>>
>> I have two design matrixes:
>>
>> design<-model.matrix(~-1+factor(grp))
>> designcontr<-model.matrix(~factor(grp))
>>
>> then make contrast matrix:
>> cont.matrix<-rbind(rep(-1,9),diag(9))
>> cont.matrix_contr <- rbind(rep(0,9),diag(9))
>>
>> after using topTable to get the specific probe values, I found:
>> e.g.
>> using designcontr and cont.matrix_contr:
>> ID Coef1 Coef2 Coef3 Coef4 Coef5 Coef6 Coef7 Coef8 Coef9 AveExpr F P.Value
>> adj.P.Val
>>
>> feature1 -0.07976 2.900216 3.06401 3.210565 0.229553 1.545972
>> 2.433364 2.62326
>> 2.719911 13.18788 1133.135 1.60E-15 7.20E-11
>>
>>
>> using design and cont.matrix:
>> ID Coef1 Coef2 Coef3 Coef4 Coef5 Coef6 Coef7 Coef8 Coef9 AveExpr F P.Value
>> adj.P.Val
>>
>> feature1 -0.07976 0.229553 1.545972 2.433364 2.62326 2.719911
>> 2.900216 3.06401
>> 3.210565 13.18788 1133.135 1.60E-15 7.20E-11
>>
>>
>>
>> I try to understand why there is difference between cont.matrix_contr and
>> cont.matrx results, since both of them is try to get the difference
>> between each
>> grp(grp2 to grp10) and grp1. i.e. grp[i](i=2-10) - grp[1]
>>
>> even I used the different contrasts, the coef should be the same. I am
>> confused.
>>
>>
>> Thank you for your help.
>>
>> Regards,
>> Xiaokuan
More information about the Bioconductor
mailing list