1

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

4

2 回答 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 回答