如何在R中删除因子变量的级别排序?

21

标题已经说明了一切,我在生成因子变量时订购了它,现在我想删除排序并将其用作无序的因子变量。

另一个问题是,如果我在回归中使用我的因子变量作为预测变量,那么如果它是有序的(ordinal)还是简单的因子变量(categorical),对R有影响吗?


3
你尝试过什么?对于第二个问题,你至少可以进行一些实证测试。 - agstudy
2个回答

32

你所需要的就是

x <- factor( x , ordered = FALSE )

需要翻译的内容已经是一个示例,不需要进一步翻译。
x <- factor( c(1,2,"a") , ordered = TRUE )
x
#[1] 1 2 a
#Levels: 1 < 2 < a

x <- factor( x , ordered = FALSE )
x
#[1] 1 2 a
#Levels: 1 2 a

3
如果您是通过ordered创建变量的,那么重置其类别为factor就很简单了。
f <- ordered(letters)
class(f) <- "factor"
identical(f, factor(letters))

在线性或加性模型中(包括线性回归、逻辑回归和使用lm、glm和gam进行的任何拟合),因子预测变量在整体模型拟合方面与有序预测变量完全相同。无论您使用哪个,您将获得相同的预测值、残差、缺乏拟合统计数据等。
然而,对于这两类变量,它们的对比是不同的。因子使用处理对照(treatment contrasts)方法,即采用通常的虚拟变量编码,其中一个给定水平被视为基准。而有序因子则使用多项式对比,它们基于正交多项式(这是什么意思我不清楚,我从未使用过有序因子)。因此,各个系数的t-stats和P值将不同。

是的,但我猜测(例如交互)显示的结果将基于哪个因素具有“0”的值,不是吗?因此,基本上,如果您想推断某个因素对某个水平的影响,将其变成有序因素是有意义的... - Arun
@Arun 不,如果你有一个参考水平,你应该使用 relevel - Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接