【问题标题】:How do you use variables in a regression formula in R?如何在 R 的回归公式中使用变量?
【发布时间】:2015-06-03 03:59:25
【问题描述】:

如何在回归公式中使用变量?

例如,使用“动物”数据集(在 MASS 中),以下工作正常:

data(Animals)
model <- lm(body ~ brain, data = Animals)

但我想做的是:

data(Animals)
x <- "body"
y <- "brain"
model <- lm(x ~ y, data = Animals)

这显然行不通,但我不知道我需要做什么。最终,我试图将公式放入一个循环中,并让它每次运行不同的东西。

对不起,如果答案很明显 - 我已经搜索过,但我无法解决。

非常感谢

【问题讨论】:

  • 你可以使用lm(paste0(x, "~", y), data = Animals)

标签: r regression


【解决方案1】:

您需要根据您的角色值制定一个适当的公式。在这种情况下,最简单的方法是 reformulate() 函数

reformulate(y,x)
# body ~ brain

那么您可以在您的lm() 通话中使用它

lm(reformulate(y,x), data = Animals)
# 
# Call:
# lm(formula = reformulate(y, x), data = Animals)
# 
# Coefficients:
# (Intercept)        brain  
#  4316.32258     -0.06594  

【讨论】:

  • 和lm(formula(paste0(y,'~',x)),data=Animals)有区别吗?
  • reformulate 使使用术语向量变得更容易:reformulate(c("var1","var2"),"respvar") 并具有包含截距的选项。 (但基本上它只是为你做粘贴)。
【解决方案2】:

使用get函数

lm(get(x) ~ get(y), data = Animals)

【讨论】:

  • 假设您以后不需要从模型中执行类似predict() 之类的操作(我假设这不是predict() 安全的吗?)
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 2020-04-26
相关资源
最近更新 更多