Specifically assign contrasts in R model.matrix
If I have a variable (condition) of 2 levels and want to create a model.matrix R automatically assigns conditionB as the term in the design matrix.
condition <- as.factor( c("A","A","A","B","B","B"))
df <- data.frame(condition)
design <- model.matrix( ~ condition)
> df
condition
1 A
2 A
3 A
4 B
5 B
6 B
> design
(Intercept) conditionB
1 1 0
2 1 0
3 1 0
4 1 1
5 1 1
6 1 1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$condition
[1] "contr.treatment"
Question: I would like to have my results relative to conditionA. How can I specify this in model.matrix() ?
(A workaround would be to inverse the resulting FCs)
– Obama
Jul 3 at 9:38
– LAP
Jul 3 at 9:43
– Obama
Jul 3 at 9:54
1 Answer
1
You can use the C
function to determine the base that you want to be taken into consideration:
C
Taking A as the base:
model.matrix(~C(condition,base=1))
(Intercept) C(condition, base = 1)2
1 1 0
2 1 0
3 1 0
4 1 1
5 1 1
6 1 1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$`C(condition, base = 1)`
2
A 0
B 1
Taking B as the base:
model.matrix(~C(condition,base=2))
(Intercept) C(condition, base = 2)1
1 1 1
2 1 1
3 1 1
4 1 0
5 1 0
6 1 0
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$`C(condition, base = 2)`
1
A 1
B 0
– Obama
Jul 3 at 10:13
By clicking “Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
– Onyambu
Jul 3 at 9:35