[BioC] Problems making contrasts

James W. MacDonald jmacdon at med.umich.edu
Fri Feb 22 15:36:25 CET 2008


Hi Ingrid,

It would help here if you showed the contrast matrices you have 
produced. You should be getting different numbers of differentially 
expressed probesets if the contrast matrices are different.

As for the differences you see with the different design matrices, this 
is because you are testing two different hypotheses. In the first case 
you are testing to see if the average expression of the stimulated 
samples is different from the unstimulated, and the yardstick you are 
using to determine if there is a difference is based on the variability 
within each group.

In the second design matrix you are again testing to see if the average 
expression of the stimulated samples is different from the unstimulated, 
but this time the yardstick you are using to determine if there is a 
difference is based on the variability within the stimulated and 
unstimulated samples, where you are pooling the patients and donors.

So in the first case you are saying that you have four groups, but want 
to see if the average expression for two of the groups is different from 
the other two. In the second case you are saying you only have two 
groups and you want to know if the expression is different between them.

Although the first approach is statistically valid and a common thing to 
do, it does suffer from the fact that the mean is not robust to 
outliers. For instance, let's say the average of your four groups for a 
particular probeset is like this:

H_s	HC_s	T_s	TC_s
10.1	4.3	4.1	3.7

And the SSE from your model is relatively small (this value being based 
on the 'average' variability of the samples within each of the four 
groups, indicating that the replicates for each group are very similar).

Now in this case you might get a significant t-statistic, because the 
numerator of your statistic will be 3.1, and if the SSE is sufficiently 
small you will get a large t-stat.

However, if you pool the H_s and T_s samples (and the HC_s and TC_s 
samples), the variability for this group will be really high (because 
you have three values around 10 and three around 4). Because of this, 
the denominator of the t-stat will be much larger and you will likely no 
longer achieve significance.

So it depends on what you are looking for. The average expression 
between the stimulated and unstimulated groups is certainly different, 
but in this case this difference is driven solely by the H_s group.

This may well be why you get far fewer probesets in the second model 
than the first. Instead of doing either of these models, you might 
consider using decideTests() with method="nestedF". This will help you 
to capture those probesets that are significant in both H_s vs HC_s and 
T_s vs TC_s, but may not have similar expression levels.

You might also be interested in the interaction, which would pick up the 
  case that I outlined above, where one sample type is affected 
differently from the other when subjected to treatment.

Best,

Jim



Ingrid H. G. Østensen wrote:
> Hi
> 
> Now I have tried to use my formula (dividing on 2, 4 and nothing), what James suggested and also made a new design matrix.
> 
> When I divided on 2, 4 or nothing, or used James suggestion I got the same results:
> 
>> designMa
>    H_s HC_s T_s TC_s
> H    1    0   0    0
> H    1    0   0    0
> H    1    0   0    0
> HC   0    1   0    0
> HC   0    1   0    0
> HC   0    1   0    0
> T    0    0   1    0
> T    0    0   1    0
> T    0    0   1    0
> TC   0    0   0    1
> TC   0    0   0    1
> TC   0    0   0    1
> 
>> oppsum
>    H_s - HC_s T_s - TC_s (H_s - HC_s + T_s - TC_s)
> -1        733        874                      1077
> 0       47292      47065                     46631
> 1         676        762                       993
>> oppsum
>    H_s - HC_s T_s - TC_s (H_s - HC_s + T_s - TC_s)/2
> -1        733        874                        1077
> 0       47292      47065                       46631
> 1         676        762                         993
> 
>> oppsum1
>    H_s - HC_s T_s - TC_s (H_s - HC_s + T_s - TC_s)/4
> -1        733        874                        1077
> 0       47292      47065                       46631
> 1         676        762                         993
> 
> 
> But when I made a new matrix:
> 
>> designMa
>    s us
> H  1  0
> H  1  0
> H  1  0
> HC 0  1
> HC 0  1
> HC 0  1
> T  1  0
> T  1  0
> T  1  0
> TC 0  1
> TC 0  1
> TC 0  1
> 
>                                                                         
> contrast.matrix <- makeContrasts(s-us, levels = designMa)                               
> 
> I got a different answer:
> 
>> oppsum2
>    s - us
> -1      8
> 0   48657
> 1      36
> 
> 
> My question now is: Why and what is the right solution? And why divide on 2 or 4 (this I read in the limma user guide, section 8.7)
> 
> Regards,
> Ingrid
> 
> Hi Ingrid,
> 
> I haven't used makeContrasts() for a while now, so I'm not sure I can 
> help with that. However, it isn't difficult to construct your contrast 
> matrix by hand.
> 
> nam <- colnames(design)
> contrast <- matrix(c(1,-1,0,0,0,0,1,-1,0.5,-0.5,0.5,-0.5), ncol = 3,
> 		dimnames = list(nam,c(paste(nam[c(1,3)], nam[c(2,4)],
> 		sep = "-"), "Stimulated-Unstimulated")))
> 
> You might get the same result by dividing by two in your call to 
> makeContrasts() rather than four.
> 
> Best,
> 
> Jim
> 
> 
> 		
> 
> Ingrid H. G. Østensen wrote:
>> Hi
>>
>> I have some problems making my contrast matrix. 
>>
>> I have the following design matrix:
>> 	P_s	P_us	D_s	D_us
>> S1	1	0	0	0
>> S2	1	0	0	0	
>> S3	0	1	0	0
>> S4	0	1	0	0
>> S5	0	0	1	0
>> S6	0	0	1	0	
>> S7	0	0	0	1
>> S8	0	0	0	1
>>
>>
>> Where P = patiens and D = donor, s = stimulated and us = unstimulated
>>
>> What I want is to find the following differences:
>> The differences between stimulated and unstimulated in the patients group, and the differences between stimulated and unstimulated in the donor group. This I am able to make, the two first contrasts.
>>
>> But then I also want to see the difference between the two treatmens undepended of samples: stimulated vs unstimulated. 
>> In other words: (P_s and D_s) vs (P_us and D_us). Is my last contrast correct or should I do something else?
>>                                                                         
>> contrast.matrix <- 
>> makeContrasts(P_s-P_us, D_s-D_us, (P_s-P_us + D_s-D_us)/4, levels = designMa)                                  
>>
>> Regards,
>> Ingrid
>>
>>
>>
>>
>> 	[[alternative HTML version deleted]]
>>
>> _______________________________________________
>> Bioconductor mailing list
>> Bioconductor at stat.math.ethz.ch
>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> 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
Affymetrix and cDNA Microarray Core
University of Michigan Cancer Center
1500 E. Medical Center Drive
7410 CCGC
Ann Arbor MI 48109
734-647-5623



More information about the Bioconductor mailing list