运行 对数据框的某些部分进行回归并提取估计值 + 误差

Run a regression on certain parts of a data frame and extract estimates + errors

我尝试 运行 对数据框的选定部分进行多次回归。 有 22 列。一个是 "DATE",一个是 "INDEX" 和 S1, S2, S3 ... S20.

我运行这样回归:

Regression <- lm(as.matrix(df[c('S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19', 'S20')]) ~ df$INDEX)
Regression$coefficients

1) 如何让代码更短?就像用区间告诉R一样:将S1到S20列作为解释变量,运行用因变量INDEX对它们进行回归。

2) 回归公式为:a + b*INDEX + error 然后从回归中提取所有 "b" 估计值。假设列有 10 行,因此必须有 10 个估计值。 同样提取所有的错误:那一定是每列有10个错误,总共有10*20=200个错误。

由于我没有使用R的经验,欢迎各种帮助!谢谢!

您可以使用 paste() 而不是手动写出所有列名来大幅缩短代码:

Regression <- lm(as.matrix(df[paste0("S", 1:20)]) ~ df$INDEX)

要访问回归估计,请使用 Regression$fitted.values。对于错误,使用 Regression$residuals.

使用 iris 数据的示例:

data(iris)
Regression <- lm(Sepal.Length + Sepal.Width ~ Petal.Length, data = iris)

head(Regression$fitted.values)
  Sepal.Length Sepal.Width
1     4.879095    3.306775
2     4.879095    3.306775
3     4.838202    3.317354
4     4.919987    3.296197
5     4.879095    3.306775
6     5.001771    3.275039

head(Regression$residuals)
  Sepal.Length Sepal.Width
1    0.2209054   0.1932249
2    0.0209054  -0.3067751
3   -0.1382024  -0.1173536
4   -0.3199868  -0.1961965
5    0.1209054   0.2932249
6    0.3982287   0.6249605

如果您有 22 列,只需使用列在数据框中的位置。在他的回答中使用与 LAP 相同的数据集:

# load iris dataset
date(iris)
# run regression
Regression <- lm(as.matrix(iris[1:3]) ~ Petal.Width, data = iris)

在您的情况下,这将转化为类似以下内容:

# run the regression
Regression <- lm(as.matrix(df[3:22]) ~ INDEX, data = df)

假设您的因变量在第 3 列到第 22 列(第一列是日期,第二列是索引,或类似的东西)