将向量传递给lm()中的子集函数?

时间:2017-06-21 13:57:50

标签: r subset lm

考虑这个例子:

data <- data.frame(predictor = c(1,2,3,4,5,6), 
dv = c(5,3,5,6,6,1), 
id = c(1,2,3,1,2,3))

model <- lm(dv ~ predictor, subset = id, data = data)
summary(model)

我理解将subset = id==1传递给lm函数意味着什么 - 它只会使用那些具有匹配ID号的观察结果。但是,当我传递整个向量时,回归仍会运行并提供输出。但它是什么意思?

1 个答案:

答案 0 :(得分:1)

根据?lm我们看到

  

subset - 一个可选向量,指定要观察的子集   用于拟合过程。

如果我们运行lmobject$model

,我们可以看到使用的数据
lm(dv ~ predictor, subset = 1, data = data)$model
#  dv predictor
#1  5         1
lm(dv ~ predictor, subset = 1:5, data = data)$model
#  dv predictor
#1  5         1
#2  3         2
#3  5         3
#4  6         4
#5  6         5
data$id
#[1] 1 2 3 1 2 3
lm(dv ~ predictor, subset = id, data = data)$model
#    dv predictor
#1    5         1
#2    3         2
#3    5         3
#1.1  5         1
#2.1  3         2
#3.1  5         3

运行id只会重复数据行。

如果还有什么不清楚,请告诉我。