我有属于字符列的分类变量。例如,一个字符列,其值全部为“yes”或“no”。即使我将它们保留为字符列,R 建模包是否会正确地将它们作为名义分类变量处理,或者这些包是否要求它们是无序因子?
2 回答
2
每个函数都可以自由地做它想做的事情,但是如果函数使用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"
于 2019-07-27T17:06:10.463 回答
1
跟进@GaborGrothendieck 的回答:答案是“通常是的”,因为大多数统计建模包都model.matrix()用来处理各种类型的预测变量、交互等。
也就是说,最好的做法是明确转换为因子,以便您可以控制/知道发生了什么。有什么缺点?显式转换为因子还允许您控制级别、对比度等的顺序。
于 2019-07-27T18:56:11.217 回答