Группировка по пользовательскому списку в пользовательской функции в R - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь создать пользовательскую функцию в R, которая позволяет пользователю выполнять линейные регрессии над набором данных. Я бы хотел, чтобы пользователь мог вводить переменные для данных, которые будут сгруппированы, чтобы несколько регрессий выполнялись для набор данных. Проблема, с которой я сталкиваюсь, заключается в попытке получить пользовательский список переменных в пользовательской функции. Ниже я попытался использовать «...», однако это не работает. Если у кого-то есть идеи, как я должен подходить к этому, это было бы здорово. Для справки Для справки - lr.1 = набор данных - ddate = переменная x - alue = переменная y - переменные, по которым должны быть сгруппированы данные)

`grouped.lr = function(lr.1,ddate, value, ...){

  test = lr.1 %>%
    group_by(...) %>%
    nest() %>%
    mutate(mod = map(data, fitmodel.test),
           pars = map(mod, tidy),
           pred = map(mod, augment))}`

1 Ответ

0 голосов
/ 07 января 2019

Кажется, что здесь может быть уместно использовать формулу , поскольку она позволяет пользователю определять отношения предикатор-ответ.

Объект формулы также принимается в качестве формата для различных моделей и, таким образом, может напрямую передаваться в функцию lm ().

# function training a linear model and a random forest
build_my_models <- function(formula, data) {

    lm.fit <- lm(formula, data)
    rf.fit <- randomForest(formula, data)

    return(list(lm.fit, rf.fit))
}

# data frame with three continuous variables
a <- rnorm(100)
b <- rnorm(100, mean = 2, sd = 4)
c <- 2*a + b

my_data <- data.frame(a = a, b = b, c = c)

# build the models
my_models <- build_my_models(a ~ ., my_data)

# here the formula 'a ~ .' defines the relation between response and predictors
# (the dot indicates that 'a' depends on all other variables in the data frame)

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

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