对自身进行列回归
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
对变量自身进行回归应该得到 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