7

我一直试图弄清楚subsetRlm()函数中的参数是如何工作的。特别是以下代码对我来说似乎很可疑:

 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² 一起)。帮助没有提供太多关于这个问题的信息:

子集 一个可选向量,指定要在拟合过程中使用的观察子集

4

1 回答 1

13

作为一般原则,用于子集的向量可以是逻辑的(例如,每个元素的 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))
于 2012-07-04T11:23:54.600 回答