Я пытаюсь использовать R для оценки многочленной логитной модели с ручной спецификацией. Я нашел несколько пакетов, которые позволяют вам оценивать модели MNL здесь или здесь.
Я нашел несколько других статей о "прокатке" вашей собственной функции MLE здесь. Однако, из-за моего копания - все эти функции и пакеты полагаются на внутреннюю функцию optim
.
В моих тестовых тестах optim
является узким местом. Используя смоделированный набор данных с ~ 16000 наблюдениями и 7 параметрами, R занимает около 90 секунд на моей машине. Эквивалентная модель в Biogeme занимает ~ 10 секунд. Коллега, который пишет свой собственный код в Ox, сообщает около 4 секунд для этой же модели.
Есть ли у кого-нибудь опыт написания собственной функции MLE или можно указать мне в сторону чего-то, что оптимизировано за пределами функции optim
по умолчанию (каламбур не предназначен)?
Если кто-то хочет, чтобы R-код воссоздал модель, дайте мне знать - я получу ее. Я не предоставил его, поскольку он не имеет прямого отношения к проблеме оптимизации функции optim
и для сохранения пространства...
EDIT: Спасибо всем за ваши мысли. Основываясь на множестве комментариев ниже, мы смогли получить R в том же самом поле, что и Biogeme, для более сложных моделей, и R действительно быстрее для нескольких более мелких/более простых моделей, которые мы запускали. Я думаю, что долгосрочное решение этой проблемы будет связано с написанием отдельной функции максимизации, которая опирается на fortran или библиотеку C, но, безусловно, открыта для других подходов.