Могу ли я подобрать различные регрессионные модели с помощью mapply? - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь понять, смогу ли я уместить несколько регрессионных моделей, используя функцию mapply в наборе данных радужной оболочки глаза.

Я начинаю с определения моей регрессионной модели:

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

Затем я определяю свои векторы зависимых и независимых переменных:

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

Наконец, я пытаюсь применить сопоставление function:

models_reg<-mapply(reg,dependent,independent)

Однако я получаю сообщение об ошибке, в котором утверждается, что:

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

Возможно ли достичь моей цели (установка различных регрессионных моделей с использованием mapply) и в этом случае , что я делаю не так?

1 Ответ

2 голосов
/ 19 июня 2020

Здесь не нужно оценивать строку. Вы можете передать формулу в виде строки в 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  
...