Ускорьте функцию Lmer в R

Я хотел бы поделиться некоторыми своими мыслями при попытке улучшить время подгонки модели линейной модели смешанных эффектов вR с использованиемlme4 пакет.

Размер набора данных: Набор данных состоит приблизительно из 400 000 строк и 32 столбцов. К сожалению, никакая информация не может быть передана о природе данных.

Допущения и проверки: Предполагается, что ответная переменная происходит из нормального распределения. До процесса подбора модели переменные были проверены на коллинеарность и мультиколлинеарность с использованием таблиц корреляции иalias функция предусмотрена в R.

Непрерывные переменные были масштабированы, чтобы помочь сходимости.

Структура модели: Модельное уравнение содержит 31 фиксированный эффект (включая перехват) и 30 случайных эффектов (перехват не включен). Случайные эффекты рандомизированы для определенной переменной фактора, которая имеет 2700 уровней. Ковариационная структура - это дисперсионные компоненты, поскольку предполагается, что между случайными эффектами существует независимость.

Пример модельного уравнения:

lmer(Response ~ 1 + Var1 + Var2 + ... + Var30 + (Var1-1| Group) + (Var2-1| Group) + ... + (Var30-1| Group), data=data, REML=TRUE)

Модель была успешно установлена, однако для получения результатов потребовалось около 3,1 часа. Эта же модель в SAS заняла несколько секунд. В Интернете доступна литература о том, как сократить время с помощью алгоритма нелинейной оптимизации.nloptwrap и выключение трудоемкого производного вычисления, которое выполняется после завершения оптимизацииcalc.derivs = FALSE:

https://cran.r-project.org/web/packages/lme4/vignettes/lmerperf.html

Время сократилось на 78%.

Вопрос: Есть ли другой альтернативный способ сократить время подгонки модели, определивlmer входные параметры соответственно? Существует так много различий между R и SAS с точки зрения времени подгонки модели.

Любое предложение приветствуется.

Ответы на вопрос(3)

Ваш ответ на вопрос