У меня есть 500 тыс. пользователей, и мне нужно вычислить линейную регрессию (с перехватом) для каждого из них.
Каждый пользователь имеет около 30 записей.
Я пробовал с dplyr
и lm
, и это слишком медленно.
Пользователь в течение 2 секунд.
df%>%
group_by(user_id, add = FALSE) %>%
do(lm = lm(Y ~ x, data = .)) %>%
mutate(lm_b0 = summary(lm)$coeff[1],
lm_b1 = summary(lm)$coeff[2]) %>%
select(user_id, lm_b0, lm_b1) %>%
ungroup()
)
Я попытался использовать lm.fit
, который, как известно, работает быстрее, но он не кажется совместимым с dplyr
.
Есть ли быстрый способ сделать линейную регрессию по группе?