Я хотел бы поделиться некоторыми своими соображениями, пытаясь улучшить время моделирования модели линейной модели смешанных эффектов в R
с помощью пакета lme4
.
Размер набора данных:. Набор данных состоит приблизительно из 400 000 строк и 32 столбца. К сожалению, информация о характере данных не может быть передана.
Предположения и проверки: Предполагается, что переменная ответа поступает из нормального распределения. До процесса подгонки модели переменные тестировались на коллинеарность и мультиколлинеарность с использованием корреляционных таблиц и функции alias
, предоставленной в R.
Непрерывные переменные были масштабированы, чтобы помочь сходимость.
Структура модели:. Уравнение модели содержит 31 фиксированный эффект (включая перехват) и 30 случайных эффектов (перехват не включен). Случайные эффекты рандомизированы для определенной фактор-переменной, которая имеет 2700 уровней. Структура ковариации - это компоненты Variance Components, поскольку предполагается, что существует независимость между случайными эффектами.
Пример уравнения модели:
lmer(Response ~ 1 + Var1 + Var2 + ... + Var30 + (Var1-1| Group) + (Var2-1| Group) + ... + (Var30-1| Group), data=data, REML=TRUE)
Модель была успешно установлена, однако для получения результатов потребовалось около 3,1 часа. Та же модель в SAS заняла несколько секунд. В Интернете есть доступная литература о том, как сократить время с помощью алгоритма нелинейной оптимизации nloptwrap
и отсрочить вычисление производных затрат времени, которое выполняется после завершения optmization calc.derivs = FALSE
:
https://cran.r-project.org/web/packages/lme4/vignettes/lmerperf.html
Время сократилось на 78%.
Вопрос: Есть ли другой альтернативный способ уменьшить время подбора модели, определяя соответственно входные параметры lmer
? Существует так много разницы между R и SAS с точки зрения времени подбора модели.
Любое предложение оценивается.