我一直试图弄清楚R subset
函数中的lm()
参数是如何工作的。特别是下面的代码对我来说似乎很可疑:
data(mtcars)
summary(lm(mpg ~ wt, data=mtcars))
summary(lm(mpg ~ wt, cyl, data=mtcars))
在每种情况下,回归都有32次观察
dim(lm(mpg ~ wt, cyl ,data=mtcars)$model)
[1] 32 2
dim(lm(mpg ~ wt ,data=mtcars)$model)
[1] 32 2
然而系数发生变化(与R²一起)。该帮助没有提供太多关于此事的信息:
子集一个可选向量,指定要在拟合过程中使用的观察子集
答案 0 :(得分:12)
作为一般原则,在子集化中使用的向量可以是逻辑的(例如,对于每个元素为TRUE或FALSE)或数字(例如,数字)。作为一个有助于采样的功能,如果它是数字R,如果它出现在子集化数字向量中,它将多次包含相同的元素。
我们来看看cyl
:
> mtcars$cyl
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
所以你得到一个相同长度的data.frame,但它包括第6行,第6行,第4行,第6行等。
如果你自己进行子集化,你可以看到这个:
> head(mtcars[mtcars$cyl,])
mpg cyl disp hp drat wt qsec vs am gear carb
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Valiant.1 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Valiant.2 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Valiant.3 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
你的意思是做这样的事吗?
summary(lm(mpg ~ wt, cyl==6, data=mtcars))