Приложение: "group_by_simpleLM.cpp"
& A возникает изКак сделать group_by и lm быстрыми? где OP пытался сделать простую линейную регрессию на группу для большого фрейма данных.
Теоретически, серия групповой регрессииy ~ x | g
эквивалентно одной объединенной регрессииy ~ x * g
, Последнее очень привлекательно, потому что статистический тест между различными группами прост. Но на практике сделать эту большую регрессию не легко в вычислительном отношении. Мой ответ на связанные пакеты отзывов и ответовspeedlm
а такжеglm4
, но отметил, что они не могут хорошо решить эту проблему.
Большая проблема регрессии трудна, особенно когда есть факторные переменные. Это может объяснить, почему многие люди отказываются от этой идеи и предпочитают разбивать данные по группам и подбирать модели по группам. Нет смысла перечислять методы регрессии по группам (см.Линейная регрессия и группировка по R). Меня волнует скорость.
Для простой линейной регрессии какy ~ x | g
разделение данных по группам с использованием стандартных процедур подбора моделей, таких какlm
является убийцей производительности. Прежде всего, поднабор большого фрейма данных неэффективен. Во-вторых, стандартные процедуры подгонки модели следуют приведенной ниже процедуре, что накладные расходы на полезные вычисления регрессии.
terms.formula
);построить каркас модели (используяmodel.frame.default
);построить матрицу модели (используяmodel.matrix.default
).Есть умные вычислительные хитрости для простой линейной регрессии. Как я продемонстрировал вБыстрая попарная простая линейная регрессия между переменными в кадре данныхметод ковариации очень быстрый. Можем ли мы адаптировать его к группе с помощью простой линейной регрессии черезgroup_by_simpleLM
функционировать?