Ich versuche, mit R ein multinomiales Logit-Modell mit einer manuellen Spezifikation zu schätzen. Ich habe ein paar Pakete gefunden, mit denen man MNL-Modelle schätzen kann aquí o aquí .
Ich habe einige andere Schriften über das "Rollen" Ihrer eigenen MLE-Funktion gefunden aquí . Wie auch immer, nach meinen Recherchen sind alle diese Funktionen und Pakete auf die interne optim
Funktion.
In meinen Benchmark-Tests, optim
ist der Engpass. Bei Verwendung eines simulierten Datensatzes mit ~16000 Beobachtungen und 7 Parametern benötigt R auf meinem Rechner etwa 90 Sekunden. Das entsprechende Modell in Biogeme dauert ~10 Sekunden. Ein Kollege, der seinen eigenen Code in Ox meldet etwa 4 Sekunden für dasselbe Modell.
Hat jemand Erfahrung mit dem Schreiben einer eigenen MLE-Funktion oder kann mich auf etwas hinweisen, das über die Standardfunktion hinaus optimiert ist? optim
Funktion (kein Wortspiel beabsichtigt)?
Wenn jemand den R-Code zur Erstellung des Modells haben möchte, kann er ihn mir gerne zur Verfügung stellen. Ich habe ihn nicht zur Verfügung gestellt, da er nicht direkt für das Problem der Optimierung der optim
Funktion und um Platz zu sparen...
EDIT: Vielen Dank an alle für ihre Gedanken. Ausgehend von einer Vielzahl von Kommentaren unten konnten wir R für kompliziertere Modelle in die gleiche Größenordnung wie Biogeme bringen, und R war sogar schneller für mehrere kleinere / einfachere Modelle, die wir ausgeführt haben. Ich denke, die langfristige Lösung für dieses Problem wird das Schreiben einer separaten Maximierungsfunktion beinhalten, die sich auf eine Fortran- oder C-Bibliothek stützt, aber ich bin sicherlich offen für andere Ansätze.