对自身进行列回归

Regressing a column against itself

对变量自身进行回归应该得到 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 个警告,第二个警告的出现是因为第一个:

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

因此您感兴趣的列已从公式中删除,因此没有斜率系数,只是截距。

这是因为您对因变量和自变量使用了相同的名称。如果您只是将 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