我对model.matrix中的一个问题不太理解。当我输入一个没有截距的单个二进制变量时,它返回两个级别。
> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x, data = temp.data)
> head(temp.data.table)
xA xB
1 1 0
2 0 1
3 0 1
4 0 1
5 1 0
6 0 1
然而,当我进入另一个二进制级别时,它只创建了3列。为什么会这样呢?是什么导致函数的行为突然不同?我应该如何避免这种情况?
> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE),
+ 'y' = sample(c('J', 'D'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x + y, data = temp.data)
> head(temp.data.table)
xA xB yJ
1 0 1 0
2 0 1 1
3 0 1 1
4 0 1 0
5 1 0 1
6 0 1 0
model.matrix
旨在构建线性模型的设计矩阵,这作为默认行为是有道理的。 - jackkamm