如何更好地控制有序因子的lm()估计标签?

时间:2016-10-17 21:41:48

标签: r lm r-factor

我的数据包含一个有多个级别的有序因子变量,例如:

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.Lx.Qx.C的解释是什么?

1 个答案:

答案 0 :(得分:0)

从缺乏答案看来,实现这些目标的最佳方法是简单地“排序”因子变量,运行线性模型然后“重新排序”因子变量,例如:

df$x <- factor(df$x, ordered = FALSE)
m <- lm(data = df, formula = y~x)
df$x <- factor(df$x, ordered = TRUE)