[BioC] Any problem with the design matrix or the contrasts? Thanks

Ryan C. Thompson rct at thompsonclan.org
Sat Aug 9 00:36:54 CEST 2014

If there is an interaction term in your model, then there is no way to 
test for an unconditional main effect. You can only test some weighted 
average of the gender-specific pos vs neg effects. The contrast you 
originally spcified was "(F.pos+M.pos-F.neg-M.neg)/2", which can be 
rewritten as "0.5 * (F.pos - F.neg) + 0.5 * (M.pos - M.neg)". This 
represents pos vs neg for a hypothetical 50% male, 50% female 
population, which isn't the same thing as a main effect, although it 
might happen to be similar.

Note that "the interaction term has no significant genes for the 
interaction term" is not the same as "there is no interaction". It 
could be that there is an interaction in some genes, but your 
experiment is not powered to detect it. But I'm afraid I'm not very 
familiar with the details on how else you could test whether there is 
an interaction to worry about, other than relying on prior knowledge. 
Most studies don't go that far in justifying their choice of 
statistical model.


On Fri 08 Aug 2014 03:06:50 PM PDT, Rao,Xiayu wrote:
> Hi, Ryan
> Thanks a lot for your comments! It is good to know that testing for a main effect using only the additive model may not be valid in the presence of an interaction effect, which I agree as I recall that from my statistics course. I did what you suggested and tested for the interaction effect in the interaction model as below. There are no sig diff genes in the end (no interaction effect). So I think now it is safe to apply the additive model. But what if there is an interaction effect? In that case, to test for ARpos vs. ARneg, I think the model should be y=b0 + b1*gender + b2*AR + b3*chip + b3*gender*AR , so the code would be: design <- model.matrix(~0+AR+gender+chip+AR*gender), right ??  In addition, I guess there is no difference in testing for the 2nd question Mpos vs. Fpos using the interaction model, right ??
> Treat <- factor(paste(targets$gender,targets$AR,sep="."))
> design <- model.matrix(~0+Treat+chip)
> cm <- makeContrasts((F.pos-M.pos)-(F.neg-M.neg),levels=design)
> Thanks,
> Xiayu
> -----Original Message-----
> From: Ryan C. Thompson [mailto:rct at thompsonclan.org]
> Sent: Friday, August 08, 2014 4:14 PM
> To: Rao,Xiayu; 'bioconductor at stat.math.ethz.ch'
> Subject: Re: [BioC] Any problem with the design matrix or the contrasts? Thanks
> Hi,
> You're going to need to address your two scientific questions using separate fits. This is because your first question (pos vs neg) is testing a main effect, and you are effectively fitting an interaction model (one coefficient for each combination of AR & gender). So your interaction model is correct for testing the second question, which is testing one factor within only a single level of the other. But for testing the main effect, you'll need to fit an additive model using the formula suggested by Federico. Furthermore, the test for a main effect may not be valid in the presence of an interaction effect, so you should test for that too using the interaction model, and then look closely at the data before trusting probe sets that are significant for both the main effect and interaction effect. The interaction contrast using your design would be ((F.pos-M.pos)-(F.neg-M.neg)).
> -Ryan
> On 08/01/2014 08:07 AM, Rao,Xiayu wrote:
>> Hello,
>> I learned from posts in the forum and analyzed my data using the suggested design and contrasts. It turns out there are no sig genes or few in the end. Could you please help check if the design does not fit the data or the contrasts made are incorrect??
>> #the research questions are 1) to compare between pos and neg for AR,  and 2) Male.pos vs. Female.pos.
>> Treat <- factor(paste(targets$gender,targets$AR,sep="."))
>> chip <- factor(targets$chip)
>> design <- model.matrix(~0+Treat+chip)
>> colnames(design)[1:4] <- levels(Treat) fit <- lmFit(y,design)
>> cm <- makeContrasts(posVSneg=(F.pos+M.pos-F.neg-M.neg)/2,
>> MposVSFpos=M.pos-F.pos, levels=design)
>> fit2 <- contrasts.fit(fit,cm)
>> fit2 <- eBayes(fit2)
>> topTable(fit2, coef="posVSneg", sort.by="p")           #0 sig genes
>> topTable(fit2, n=20,coef="MposVSFpos", sort.by="p")             #4 sig genes
>> targets.txt
>> sample gender AR          chip
>> s1            F              pos         1
>> s2            F              neg        1
>> s3            M            neg        2
>> s4            M            pos         2
>> s5            F              neg        2
>> s6            M            pos         2
>> s7            M            pos         2
>> s8            M            pos         3
>> s9            M            pos         3
>> s10         M            pos         3
>> s11         M            pos         3
>> s12         F              pos         4
>> s13         F              pos         4
>> s14         M            pos         4
>> s15         M            pos         4
>> s16         F              pos         5
>> s17         M            pos         5
>> s18         M            pos         5
>> s19         M            neg        6
>> s20         M            neg        6
>> s21         F              neg        6
>> s22         F              pos         6
>> s23         F              pos         6
>> s24         F              neg        6
>> s25         F              pos         6
>> s26         F              pos         6
>> s27         F              pos         6
>> s28         M            neg        6
>> Thanks,
>> Xiayu
>> 	[[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

More information about the Bioconductor mailing list