Ошибка при переносе: длинные векторы еще не поддерживаются: в функции glm () - PullRequest
0 голосов
/ 26 февраля 2020

Я нашел несколько вопросов по Stackoverflow относительно этой топи c (некоторые из них без какого-либо ответа), но ничего не связывало (пока) с этой ошибкой в ​​регрессии.

I ' м, запуская пробную модель в r со (я предполагаю) слишком большим количеством фиксированных эффектов (год и место):

myprobit <- glm(factor(Y) ~ factor(T) + factor(X1) + factor(X2) + factor(X3) +
                 factor(YEAR) + factor(PLACE),
                 family = binomial(link = "probit"),
                 data = DT)

Переменная PLACE имеет около 1000 уникальных значений и YEAR 8 значений. Набор данных DT содержит 13 099 225 столбцов и 79 столбцов.

Полученная ошибка:

Error: cannot allocate vector of size 59.3 Gb
Error during wrapup: long vectors not supported yet: ../include/Rinlinedfuns.h:519

Используемая мной машина имеет 128 ГБ ОЗУ.

Итак, я не знаю, что я могу сделать без изменения функции. Кто-нибудь знает, как бороться с этим вопросом? Спасибо!

1 Ответ

0 голосов
/ 04 марта 2020

Чтобы закрыть этот вопрос, я должен упомянуть, что ответ @ Axeman - это единственный подход, подходящий для моей проблемы. Весь вопрос в том, что для управления такой огромной проектной матрицей недостаточно памяти.

Поэтому запустите пробитную регрессию с использованием пакета biglm, а функция bigglm() - единственное решение, которое я нашел до сих пор.

Тем не менее, я понимаю, что из-за того, как пакет biglm работает, принимая итеративные фрагменты данных, использование factor() переменных в RHS проблематично c каждый раз, когда уровень фактора не представлены в куске. Другими словами, если факторная переменная имеет 5 уровней, но в блоке данных отображаются только 4 уровня, у меня будет ошибка в оценке.

Есть несколько вопросов и комментариев по этому поводу Stackoverflow .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...