Использование dplyr для хранения результатов регрессии - PullRequest
0 голосов
/ 28 июня 2018
df.h <- data.frame( 
                hour = factor(rep(1:24, each = 21)),
                price = runif(504, min = -10, max = 125),
                wind = runif(504, min = 0, max = 2500),
                temp = runif(504, min = - 10, max = 25))  

Если я хочу сделать линейную регрессию цены против ветра и цены против температуры, я мог бы сделать это:

df.h %>% group_by(hour) %>% do(mod1 = lm(price ~ wind , data = .), 
                                   mod2 = lm(price ~ temp, data = .)) 

Как бы то ни было, я хочу извлечь остатки из mod1 и mod2 и сохранить остатки как два дополнительных столбцы

df.h %>% group_by(hour) %>% 
         do(mod1 = lm(price ~ wind , data = .), 
            mod2 = lm(price ~ temp, data = .)) %>%
         mutate(mod1.resid = resid(mod1),
                mod2.resid = resid(mod2))

Однако это не работает. Не могли бы вы мне помочь, пожалуйста.

1 Ответ

0 голосов
/ 28 июня 2018
mod <- df.h %>% group_by(hour) %>% do(mod1 = resid(lm(price ~ wind , data = .)), 
                           mod2 = resid(lm(price ~ temp, data = .))) 

df.h <- df.h %>% 
     mutate(res1 = unlist(mod$mod1),
     res2 = unlist(mod$mod2))

Возможно, есть еще более компактное решение, которое я пытаюсь выяснить.

...