Hello,
I'm trying to remove batch effect from a dataset that include three experimental conditions (C_25,C_50,C_CTRL) and three batches (1,2,4). I prepared a table with all these information (targets) and then I tried to create a design matrix using ~0+group+batch in my model formula. I would like to know if this approach is correct or it's better to put ~batch+group. I tried also this last approach but I found some problems later setting the contrasts because one experimental condition didn't appear in the matrix (C_CTRL). For the following analysis I used makeContrasts, glmQLFit, glmQLFTest functions of EdgeR package. The code and the outputs are the following:
group <- factor(targets$CONDITION)
batch <- factor(targets$BATCH)
design <- model.matrix(~0+group+batch,data=log2.cpm.filtered.norm.df)
design
groupC_CTRL groupC_T25 groupC_T50 batch2 batch4
1 1 0 0 0 1
2 1 0 0 1 0
3 1 0 0 0 0
4 0 0 1 0 1
5 0 0 1 1 0
6 0 0 1 0 0
7 0 1 0 0 1
8 0 1 0 1 0
9 0 1 0 0 0
attr(,"assign")
[1] 1 1 1 2 2
attr(,"contrasts")
attr(,"contrasts")$group
[1] "contr.treatment"
attr(,"contrasts")$batch
[1] "contr.treatment"
This is the other script and output:
group <- factor(targets$CONDITION)
batch <- factor(targets$BATCH)
design <- model.matrix(~batch+group,data=log2.cpm.filtered.norm.df)
design
(Intercept) batch2 batch4 groupC_T25 groupC_T50
1 1 0 1 0 0
2 1 1 0 0 0
3 1 0 0 0 0
4 1 0 1 0 1
5 1 1 0 0 1
6 1 0 0 0 1
7 1 0 1 1 0
8 1 1 0 1 0
9 1 0 0 1 0
attr(,"assign")
[1] 0 1 1 2 2
attr(,"contrasts")
attr(,"contrasts")$batch
[1] "contr.treatment"
attr(,"contrasts")$group
[1] "contr.treatment"
The fact that in this last matrix two elements are missing (one batch and one experimental condition) does it mean that the function took these two as intercepts so I could consider groupC_T50 and groupC _T25 as contrasts? So later prepearing the contrast.matrix I could use the following script? Is it right? I think that anyway in this case there is a problem related to the direction of the contrast.. because I want C_T50 vs CTRL and not the opposite.
contrast.matrix <- makeContrasts(C_T50vsC_CTRL = groupC_T50 ,
C_T25vsC_CTRL=groupC_T25,
levels=design)
sessionInfo( ) R version 4.2.1 (2022-06-23 ucrt) Running under: Windows 10 x64 (build 22621)
Thanks in advance for your help
Greta