在R中,lm函数中的公式如何工作?

时间:2014-05-03 21:06:49

标签: r

我刚刚开始使用R.线性回归的一个例子如下:

lm(y ~ x1 + x2 + x3, data)

传递给lm函数的公式似乎包含不在范围内的变量名。这是如何运作的?公式如何解释?

我已经尝试过阅读lm的源代码了,但是对它没有任何意义。

1 个答案:

答案 0 :(得分:2)

当您传递公式和data =参数时,lm将首先尝试解析所提供的data.frame中的变量名称。所以y,x1,x2和x3应该是数据中列的名称。如果在data.frame中找不到,则在当前环境中搜索它们。

#example
x9<-runif(15)
data=data.frame(x1=runif(15), x2=rnorm(15))
data<-transform(data, y=3*x1-2*x9-2+rnorm(15))

#here y,x1,x2 are resolved within data, and x9 comes form the current env
lm(y~x1+x2+x9, data)