) %>% arrange(client_code) %>%
mutate(pred=
lm(data=.,sum~dif/factor(client_code))$fitted.values
)
и
t1 %>% group_by(client_code) %>% nest() %>%
mutate(pred= lapply(data,function(df) lm(sum~dif,data=df)$fitted.values)) %>% unnest()
Дают разные результаты в предсказании?
При этом для не для всех а для отдельных ошибаются.
Оставил второй вариант - но хотелось бы разобраться конечно
Предположу что сортировка не равна группировке, и где-нибудь здесь кроется ошибка
Звучит похоже конечно , хотя я так и не нащупал где проблема. Но мысли появились куда смотреть еще, спасибо
Вы в первом случай одну модель на всех фитите, а во втором - по отдельности на каждого клиента. Вот и предсказания разные. Или я что-то упускаю?
предполагается что /factor(client_code) должен разделять как раз внутри lm()
А что обозначает знак деления в формуле? Я поискал в документации - ничего не нашел. Если смотреть на результаты регрессии со знаком деления, то коэффициенты разные в зависимости от группы, но константа для всех уровней фактора одинаковая. То есть это не то же самое, что по отдельности делать. По смыслу должно быть *. Извиняюсь за аццкий однострочник: summary( lm(Sepal.Length ~ Sepal.Width*Species, data = iris)$fitted.values - unlist(lapply(lapply(split(iris, iris$Species), lm, formula = Sepal.Length ~ Sepal.Width), `[[`, 'fitted.values')) ) Разница не более 1e-15
В синтетических датасетах все так. Но вот в практике - когда на одном и том же датасете делаю два подхода - вот через nest()
Обсуждают сегодня