拟合多个线性回归模型时避免重复编写模型公式

时间:2018-09-07 16:22:41

标签: r regression formula linear-regression lm

我想在R中运行许多类似的线性回归模型,例如

lm(y ~ x1 + x2 + x3 + x4 + x5, data = df)
lm(y ~ x1 + x2 + x3 + x4 + x5 + x6, data = df)
lm(y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7, data = df)

如何将其中一部分分配给“基本”公式,以避免重复多次?这将是基础:

y ~ x1 + x2 + x3 + x4 + x5

那我该如何做以下事情(显然不起作用)?

lm(base + x6, data = df)

搜索堆栈溢出时,我意识到我可以制作仅包含感兴趣变量的数据框,并使用.来缩短模型公式,但是我想知道是否可以避免这种情况。

1 个答案:

答案 0 :(得分:3)

您可以使用update.formula更新模型公式。例如:

base <- y ~ x1 + x2 + x3 + x4 + x5
update.formula(base, . ~ . + x6)
#y ~ x1 + x2 + x3 + x4 + x5 + x6

如果要提供新的变量名称作为字符,则为字符串版本:

## `deparse` damp a model formula to a string
formula(paste(deparse(base), "x6", sep = " + "))

实际上,您甚至可以直接更新模型

fit <- lm(base, dat); update.default(fit, . ~ . + x6)

  

这种更新整个模型的想法效果最好。在我的情况下,只需update()

我写了update.defaultupdate.formula,以便您知道在为文档做?时要寻找什么功能。