Specifically assign contrasts in R model.matrix


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)





What do you mean by relative to condition A?
– Onyambu
Jul 3 at 9:35





If you run the code, you will see that the resulting design matrix has two terms: (Intercept) conditionB. I would like to have conditionA instead of B.
– Obama
Jul 3 at 9:38






Possible duplicate of How to force R to use a specified factor level as reference in a regression?
– LAP
Jul 3 at 9:43





My question is specific to the model.matrix() function, cant see this in the mentioned post.
– 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





I think just re-leveling does not work. It indeed changes the term in the designmatrix to conditionA, but If you compare with the dataframe (see main post) the "1" is still "B". Just relevelling would potentially compare the wrong cases.
– 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.

Popular posts from this blog

api-platform.com Unable to generate an IRI for the item of type

How to set up datasource with Spring for HikariCP?

Display dokan vendor name on Woocommerce single product pages