如何使用"lm"命令编写程序?

How to write the program using "lm" command?

我尝试使用下面的 "lm" 命令来预测 t121 列,

Model<-lm(t121 ~ t1 + t2 + ..... +t120, mydata)

在我的数据中,因变量超过 100 个,所以很难使用 "lm" 命令预测每一列,这就是为什么我想为我的数据编写程序,如下所示,

for(j in 120:179){
model[[j+1]]<-lm(t[j+1] ~ add1(t1:t[j]),mydata)
}

我使用了 add.bigq,sum 命令而不是 add1 地方,但这三个命令不正确请告诉我适合那个地方的命令是什么?

据我了解,您想编写一个循环,允许您将 lm 与不同的公式一起使用。 lm 的好处在于它可以将 class formula 的对象作为第一个参数。让我们看看它是如何工作的。

# Create a data set
df <- data.frame(col1=(1:10+rnorm(10)), col2 = 1:10, col3 = rnorm(10), col4 = rnorm(10))

如果我们想运行 lm on col1作为因变量,col2作为自变量,那么我们可以这样做:

model_a <- lm(col1 ~ col2, data = df)

form_b <- as.formula("col1 ~ col2")
model_b <- lm(form_b, data = df)

all.equal(model_a,model_b)
# [1] "Component “call”: target, current do not match when deparsed"

所以这两个模型之间唯一的区别是函数调用不同(在 model_b 中我们使用 form_b,而不是 col1 ~ col2)。除此之外,模型完全相同。

所以现在你知道如何使用 formula class 到 运行 lm。通过将 collapse 设置为 +

,您可以轻松地使用 paste 构建公式
ind_vars <- paste(names(df)[-1],collapse = " + ")
form_lm <- paste(names(df)[1], "~", ind_vars)
form_lm
# [1] "col1 ~ col2 + col3 + col4"

如果我们想要三个不同的模型,我们可以做一些事情,例如:

lis <- list()
for (i in 2:length(names(df))) {
    ind_vars <- paste(names(df)[2:i], collapse="+")
    form_lm <- paste(names(df)[1], "~", ind_vars)
    lis[[i-1]] <- lm(form_lm,data=df)
}