несколько линейных моделей в одном кадре данных - PullRequest
0 голосов
/ 02 мая 2019

У меня есть функция, которая принимает фрейм данных, первый столбец должен быть Y, и пользователь выбирает, какой столбец будет X. Мне нужно запустить несколько линейных моделей в одном и том же data.frame (найти, какой lm имеет лучшие результатыдля моего пользователя).

Используя набор данных mtcars, что у меня есть только для одной линейной модели:

    results_LM <- function(data, var) {
        fm1 <- as.formula(paste(colnames(data)[1], "~", var))
        lm1(fm, data = data)
        return(lm1)
    }

    fit <- results_LM(mtcars, "disp")

Я бы сделал то же самое для каждой линейной модели, которую я протестирую (и сохраню вокончательный список, который я буду использовать позже):

    results_LM <- function(data, var) {
        fm1 <- as.formula(paste(colnames(data)[1], "~", var))
        lm1(fm, data = data)

        fm2 <- as.formula(paste(colnames(data)[1], "~", var, "+ I(", var, "^2)"))
        lm2(fm, data = data)

        all_lm <- list("FirstLM" = lm1, "SeconLM" = lm2)

        return(all_lm)
    }

И это продолжается для fm3, lm3 ... fm99, lm 99

Это будет работать, но я думаю, что этоНАМНОГО лучший способ сделать это

Есть идеи, как запустить несколько линейных моделей в одном фрейме данных?

1 Ответ

0 голосов
/ 03 мая 2019

Alreay решил, глядя на эту запись Я поместил все свои модели в список, как и использовал lapply для запуска всех из них

results_LM <- function(data, var) {
       formulas <- list(as.formula(paste(colnames(data)[1], "~", var),
                        as.formula(paste(colnames(data)[1], "~", var, "+ I(", var, "^2)")))

       models <- lapply(formulas, lm, data = data)

       return(models)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...