R 建模包是否将字符变量视为与无序因子相同?

Do R modeling packages treat character variables the same as unordered factors?

我有属于字符列的分类变量。例如,一个字符列,其值全部为 "yes" 或 "no"。即使我将它们保留为字符列,R 建模包是否会正确地将它们处理为名义分类变量,或者这些包是否要求它们是无序因子?

每个函数都可以自由地做它想做的事,但如果函数使用 model.matrix 那么它会将字符串视为因子。

2 级

x2 <- c("yes", "no", "yes")
model.matrix(~ x2)

给予:

  (Intercept) xyes
1           1    1
2           1    0
3           1    1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$x
[1] "contr.treatment"

3 级

x3 <- letters[1:3]
model.matrix(~ x3)

给予:

  (Intercept) xxb xxc
1           1   0   0
2           1   1   0
3           1   0   1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$xx
[1] "contr.treatment"

跟进@GaborGrothendieck 的回答:答案是 "usually yes",因为大多数统计建模包都使用 model.matrix() 来处理各种类型的预测变量、交互等。

也就是说,最好的做法可能是明确地转换为因子,这样您就可以 control/know 知道发生了什么。缺点是什么?显式转换为因子还允许您控制级别、对比度等的顺序。