Существует ли более быстрая функция lm
Я хотел бы получить наклон линейной регрессии, подходящей для 1M отдельных наборов данных (1M * 50 строк для data.frame или 1M * 50 для массива). Теперь я использую функцию lm()
, которая занимает очень много времени (около 10 минут).
Есть ли более быстрая функция для линейной регрессии?
Ответы
Ответ 1
Да есть:
-
В самом себе R имеет lm.fit()
, который больше голых костей: нет нотации формулы, гораздо более простой набор результатов
-
несколько наших Rcpp связанных пакетов имеют реализации fastLm()
: RcppArmadillo, RcppEigen, RcppGSL.
Мы описали fastLm()
в нескольких сообщениях и презентациях в блогах. Если вы хотите это самым быстрым способом, не используйте интерфейс формулы: разбор формулы и подготовка матрицы модели занимает больше времени, чем фактическая регрессия.
Тем не менее, если вы регрессируете один вектор на одном векторе, вы можете упростить это, поскольку пакет матрицы не требуется.
Ответ 2
Так как 3.1.0 есть функция .lm.fit()
. Эта функция должна быть быстрее, чем lm()
и lm.fit()
.
Это описано, и его производительность сравнивается с различными функциями lm
здесь - https://rpubs.com/maechler/fast_lm.
![]()
Ответ 3
speedlm
из speedglm
должен делать это, поскольку он работает с большими наборами данных.