Модель линейной регрессии по различным комбинациям столбцов

#r

Вопрос:

У меня есть некоторые данные, которые выглядят так:

          date Moratalaz Cuatro_Caminos Barrio_de_Pilar Vallecas
1  2010-01-01        35             19              23       21
2  2010-01-02        62             40              40       44
3  2010-01-03        76             65              53       55
4  2010-01-04        69             64              52       56
5  2010-01-05        67             52              40       54
6  2010-01-06        48             33              29       37
7  2010-01-07        37             50              28       28
8  2010-01-08        39             37              19       26
9  2010-01-09        47             33              31       33
10 2010-01-10        66             51              41       47
 

Я могу запустить модель линейной регрессии по отдельным столбцам, используя:

   lm(data$Moratalaz ~ data$Cuatro_Caminos)
 

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

Я попробовал что-то вроде следующего, но не смог заставить это работать:

 formula_list <- list(as.formula('data$Moratalaz ~ data$Barrio_de_Pilar'),
                   as.formula('data$Barrio_de_Pilar ~ data$Cuatro_Caminos')
                   )

lapply(formula_list, FUN = lm, data = data)
 

Данные

 data <- structure(list(date = structure(c(14610, 14611, 14612, 14613, 
14614, 14615, 14616, 14617, 14618, 14619), class = "Date"), Moratalaz = c(35, 
62, 76, 69, 67, 48, 37, 39, 47, 66), Cuatro_Caminos = c(19, 40, 
65, 64, 52, 33, 50, 37, 33, 51), Barrio_de_Pilar = c(23, 40, 
53, 52, 40, 29, 28, 19, 31, 41), Vallecas = c(21, 44, 55, 56, 
54, 37, 28, 26, 33, 47)), row.names = c(NA, 10L), class = "data.frame")
 

Ответ №1:

Рассмотрите возможность использования

 combn(names(data)[-1], 2, FUN = function(x)
 lm(reformulate(x[1], response = x[2]), data = data), simplify = FALSE)
 

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

1. Я получаю следующую ошибку Error in terms.formula(formula, data = data) : se intenta usar un nombre de varible de longitud cero При попытке использовать имя переменной нулевой длины.

2. @user113156 это не дало мне ошибки, хотя. Но я думаю, что ваш вопрос состоит в том, чтобы получить все попарно. который я обновил

3. Хорошо, ошибка возникает при полной выборке данных.

4. Спасибо! Вот и все.

5. Еще один вопрос: как я могу задать имена списков для различных комбинаций имен столбцов? Код генерирует формулы, и я просто думаю, могу ли я назвать имена списков формулам.