我的数据包含一个有多个级别的有序因子变量,例如:
set.seed(1234)
y <- runif(100,0,100)
x <- rep_len(as.character(c(1991:2013)), length.out = 100)
df<-data.frame("x" = factor(x,ordered = TRUE), y)
当我在lm()
中使用这些数据时,R会以我认为牺牲清晰度的方式更改估计系数的名称。
summary(lm(data = df, formula = y~x))
产生以下内容:
...Truncated...
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 43.8665 2.9456 14.892 <2e-16 ***
x.L 0.5284 13.9151 0.038 0.970
x.Q -17.6699 14.1375 -1.250 0.215
x.C 0.3310 13.9882 0.024 0.981
x^4 -0.8420 14.0647 -0.060 0.952
x^5 20.1605 14.0629 1.434 0.156
...Truncated...
为了避免这种情况,我可以“取消订购”因素,但这对我的情况不方便。有没有办法强制R使用实际级别名称?另外,对于前三个估算名称,x.L
,x.Q
和x.C
的解释是什么?
答案 0 :(得分:0)
从缺乏答案看来,实现这些目标的最佳方法是简单地“排序”因子变量,运行线性模型然后“重新排序”因子变量,例如:
df$x <- factor(df$x, ordered = FALSE)
m <- lm(data = df, formula = y~x)
df$x <- factor(df$x, ordered = TRUE)