使列相对于自身退缩

时间:2019-09-18 11:46:53

标签: r lm

相对于自身回归变量的斜率应为1。

我有一个数据框,我想将几​​列(包括固定列“ i”)相对于固定列“ i”进行回归。 图需要每个回归的斜率系数。 但是col'i'对自身的回归在摘要中没有给出斜率行。

a <- rnorm(100, 22,4)     # some data
b <- rnorm(100, 30,7)     # only to create a dataframe
df <- data.frame(cbind(a,b))
head(df)
summary(lm(data = df, a~a)) # regress a against itself

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  22.2602     0.3504   63.53   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

为什么没有斜率系数?

2 个答案:

答案 0 :(得分:4)

您的代码生成2条警告,第二条警告是由于第一条引起的:

Warning messages:
1: In model.matrix.default(mt, mf, contrasts) :
  the response appeared on the right-hand side and was dropped
2: In model.matrix.default(mt, mf, contrasts) :
  problem with term 1 in model.matrix: no columns are assigned

因此您感兴趣的列从公式中删除,因此没有斜率系数,只需截取即可。

答案 1 :(得分:4)

这是因为您对因变量和自变量使用了相同的名称。如果您仅将a复制到b变量中,它将起作用:

df <- data.frame(cbind(a,b=a))
summary(lm(data = df, a~b))

Call:
lm(formula = a ~ b, data = df)

Coefficients:
         (Intercept)                     b  
-0.00000000000001137   1.00000000000000044