我在R中使用带有数值变量和因子的标准lm()模型。对于因子R,给每个级别的系数只有一个,即一个为0。
是否可以选择此级别?
例如,这是我的模型的输出:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.847e+00 1.499e-02 656.984 <2e-16 ***
base$km -3.343e-06 5.669e-08 -58.974 <2e-16 ***
log(base$nbJour + 1) 2.395e-02 1.743e-03 13.738 <2e-16 ***
id_boite2 -5.980e-02 4.741e-03 -12.615 <2e-16 ***
cylindre2.0 1.125e-01 8.174e-03 13.762 <2e-16 ***
cylindre2.7 2.291e-01 1.056e-02 21.692 <2e-16 ***
cylindre3.0 3.393e-01 1.061e-02 31.970 <2e-16 ***
变量id_boite
可以有2个值,1或2。
默认情况下,R已将id_boite1
设置为0,将id_boite2
设置为-5.980e-02。
我想知道是否有可能强制它将另一个级别设置为0,或者更全局地将其设置为具有最负面效果的级别为0,以使我的所有系数都为正。
答案 0 :(得分:1)
我认为您正在寻找relevel()函数。在运行线性模型之前(假设数据框名为df),您可以执行以下操作:
df$id_boite = relevel(df$id_boite, ref=2)
答案 1 :(得分:0)
您可以使用df <- transform(df,id_boite=relevel(id_boite,response_var))
(假设您的数据位于数据框df
中且response_var
是响应变量),这将按增加的顺序设置因子级别(边际) )平均反应。这并不能保证复杂回归模型中的正系数,其中与每个级别关联的条件均值可能与其边际均值不同,但一般来说它可能运作得相当好。