используйте более 100 функций функции lm в R

#r #lm

#r #lm

Вопрос:

Предположим, у меня есть фрейм данных, состоящий из 101 столбца, где первые 100 имеют имена от data1 до data100, а 101-й столбец называется y.

Если я хочу использовать функцию lm в R, где функции от data1 до data100.

Я знаю, что это можно записать как:

 lin_reg <- lm(y ~ data1 ... data100, dataframe)
  

Есть ли лучший способ сделать это?

Комментарии:

1. Вы не должны этого делать вообще. Регрессия OLS с таким количеством предикторов приведет к некоторым серьезным проблемам. Вы можете ожидать серьезной коллинеарности. Также не удивляйтесь вычислительным проблемам.

Ответ №1:

 lin_reg <- lm(y ~ ., data = dataframe)
  

Это предполагает, что ваши данные действительно состоят только из вашего результата всех переменных функций. Нет дополнительного столбца. «.» означает «взять все остальное из этого фрейма данных».

Поскольку — согласно комментарию — TO хочет исключить определенные столбцы:

 data_frame_subset <- dataframe[, !names(dataframe) %in% c("data5", "data10")]
lin_reg <- lm(y ~ ., data = dataframe_subset)
  

В этом примере я бы исключил столбцы data5 и data10.

Комментарии:

1. Спасибо, но что, если некоторые столбцы следует игнорировать. Например, столбец «data5».

2. Чем вы должны упомянуть об этом в своем вопросе. Тем не менее, см. Обновление к моему сообщению.

3. Другим способом исключения data5 будет: lm(y ~ . - data5, data = dataframe)

Ответ №2:

Вы можете создать формулу динамически с помощью reformulate :

 lin_reg <- lm(reformulate(paste0('data', 1:100), 'y'), dataframe)