首页 > 解决方案 > 我可以使用 mapply 拟合不同的回归模型吗?

问题描述

我正在尝试查看是否可以使用 iris 数据集上的 mapply 函数拟合多个回归模型。

我首先定义我的回归模型:

reg<-function(dependent,independent){lm(eval(paste0(dependent,"~",independent,",data=iris")))}

然后我定义我的因变量和自变量向量:

dependent<-c("Sepal.Length","Sepal.Width")
independent<-c("Sepal.Width","Sepal.Length")

最后我尝试应用 mapply 函数:

models_reg<-mapply(reg,dependent,independent)

但是,我收到一条错误消息,声称:

Error in parse(text = x, keep.source = FALSE) : 
  <text>:1:25: unexpected ','
1: Sepal.Length~Sepal.Width,

是否有可能实现我的目标(使用 mapply 拟合不同的回归模型),在这种情况下,我做错了什么?

标签: rmappingevallapply

解决方案


您不需要在这里评估字符串。您可以将公式作为字符串传递lm

reg<- function(dependent,independent) {
   lm(paste0(dependent,"~",independent),data=iris)
}

构造公式的另一种方法是使用reformulate

reg<-function(dependent,independent) {
  lm(reformulate(independent, dependent),data=iris)
}

现在您可以使用以下方式调用Map

Map(reg, dependent, independent)

#$Sepal.Length

#Call:
#lm(formula = reformulate(independent, dependent), data = iris)

#Coefficients:
#(Intercept)  Sepal.Width  
#     6.5262      -0.2234  


#$Sepal.Width

#Call:
#lm(formula = reformulate(independent, dependent), data = iris)

#Coefficients:
# (Intercept)  Sepal.Length  
#     3.41895      -0.06188  

推荐阅读