如何使用"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)
}
我尝试使用下面的 "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)
}