У меня есть 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.
Есть ли быстрый способ сделать линейную регрессию по группе?