我刚刚开始使用R.线性回归的一个例子如下:
lm(y ~ x1 + x2 + x3, data)
传递给lm函数的公式似乎包含不在范围内的变量名。这是如何运作的?公式如何解释?
我已经尝试过阅读lm的源代码了,但是对它没有任何意义。
答案 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)