繁体   English   中英

R公式和结果系数名称

[英]R formulas and resulting coefficient names

在下面的示例中,假设您有一个模型,其中supp是因子变量。

lm(len ~ dose + supp, data = ToothGrowth)

但我想使用不同的基准水平。 我可以直接在公式中指定:

lm(len ~ dose + relevel(supp, "VC"), data = ToothGrowth)

输出将是:

Call:
lm(formula = len ~ dose + relevel(supp, "VC"), data = ToothGrowth)

Coefficients:
      (Intercept)                   dose  relevel(supp, "VC")OJ  
            5.573                  9.764                  3.700 

直接在公式中进行转换非常方便,而不是制作中间数据集或改变现有数据集。 例如,当您使用scale来标准化变量时,必须考虑最终模型中包含的其他变量中的缺失。 但是,通常,输出中的结果系数名称变得非常难看。

我的问题是:是否可以指定在使用公式时由表达式产生的变量的名称? 就像是

lm(len ~ dose + (OJ = relevel(supp, "VC")), data = Toothgrowth)

(这不起作用)。

编辑:虽然G.Grothendieck提出的解决方案很好,但它实际上产生了错误的结果。 以下示例显示了这一点:

# Create some data:
df <- data.frame(x1 = runif(10), x2=runif(10))
df <- transform(df,   y = x1 + x2 + rnorm(10))

# Introduce some missings.
df$x1[2:3] <- NA

# The wrong result:
lm(formula = y ~ z1 + z2, 
   data    = transform(df, z1 = scale(x1), z2=scale(x2)))

# extract a model frame.
df2 <- model.frame(y ~ x1 + x2, df)

# The right result:
lm(formula = y ~ scale(x1) + scale(x2), 
   data    = df2)

# or:
lm(formula = y ~ z1 + z2, 
   data    = transform(model.frame(y ~ x1 + x2, df), 
             z1 = scale(x1), z2 = scale(x2)))

问题在于,当贬低x2时,它会使用不在最终模型中的观察,因为x1有缺失。

所以对我来说问题仍然存在,公式界面是否有办法处理这种情况,而没有使用额外公式和提取模型框架的烦人中间步骤,然后可以“转换”。

我希望这个问题很清楚。

data=参数中而不是在formula=参数中修改它:

lm(len ~ dose + OJ, data = transform(ToothGrowth, OJ = relevel(supp, "VC")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM