如何删除拦截行/仅通过索引包含lm数据的cbind中的系数?它为什么有效?

时间:2013-09-24 00:54:50

标签: r indexing cbind

我设法从挖掘这个网站的过程中删除了矩阵的第一行,但显然有一种更简单的方法。这就是我目前所拥有的:

> prestige.income <- lm(prestige ~ log2(income), data=Prestige)
> prestige.edu <- lm(prestige ~ education, data=Prestige)
> prestige.women <- lm(prestige ~ women, data=Prestige)
> prestige.all <- lm(prestige ~ education + income + women, data=Prestige) 
> comparison <- cbind(INCOME=coef(prestige.income), EDUCATION=coef(prestige.edu),
  WOMEN=coef(prestige.women), ALL=coef(prestige.mod))
> comparison
                 INCOME  EDUCATION       WOMEN           ALL
(Intercept)  -139.85572 -10.731982 48.69299929 -110.96582409
education      14.94173   5.360878 -0.06417284    3.73050783
log2(income) -139.85572 -10.731982 48.69299929    9.31466643
women          14.94173   5.360878 -0.06417284    0.04689514
> remove <- rownames(comparison)[1]
> remove
[1] "(Intercept)"
> comp.noint <- comparison[!rownames(comparison) %in% remove, ]
> comp.noint
             INCOME  EDUCATION       WOMEN        ALL
education      14.94173   5.360878 -0.06417284 3.73050783
log2(income) -139.85572 -10.731982 48.69299929 9.31466643
women          14.94173   5.360878 -0.06417284 0.04689514

这应该是我应该做的更容易的方式/方式,但我不明白它为什么会起作用:

> comparison[-1,-5]
             INCOME  EDUCATION       WOMEN        ALL
education      14.94173   5.360878 -0.06417284 3.73050783
log2(income) -139.85572 -10.731982 48.69299929 9.31466643
women          14.94173   5.360878 -0.06417284 0.04689514

有人告诉我-1排除了第一行,但实际上并没有这样做..

> comparison[-1]
 [1]   14.94173191 -139.85572422   14.94173191  -10.73198197    5.36087773
 [6]  -10.73198197    5.36087773   48.69299929   -0.06417284   48.69299929
[11]   -0.06417284 -110.96582409    3.73050783    9.31466643    0.04689514

我没有解释-5为什么做任何事情。我知道这可能是一个非常基本的问题,但是我的老师无法向我解释为什么这样有效,而且我在谷歌或教科书上找不到任何东西。任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

comparison[-1][]的单个参数一起使用,不再有矩阵,而是一个长度为16(4 x 4)的向量,由comparison连接的所有列组成一个接一个地。否定参数会删除第一个元素(-139.85572),剩下的就剩下15个。请注意,它们是从左到右打印的,而不是像矩阵的列那样从上到下打印。

使用comparison[-1,-5]您仍然有一个矩阵,其中第一行和第五列是droped。哦,等等,没有第五列,所以忽略了-5。例如,尝试comparison[-1,-4]