Jonathan James, "An MM Algorithm for General Mixed Multinomial Logit Models", Journal of Applied Econometrics, Vol. 32, No. 4, 2017, pp. 841-857. The programs described below are for estimating a normally distributed random coefficients mixed logit model applying the MM algorithm. For comparison, programs for alternative estimation methods are also provided. All programs can be run from the file 'main.m', which relies on the following functions: 'datagen.m' is a function that generates simulated data for estimation 'standardlogit' is a function that estimates the parameters of a standard logit model, which are used for starting values for each of the estimators 'vecparm.m' is a function that produces a function handle called 'p2p'. p2p either vectorizes the structure of parameters if the input is a structure, or structurizes the vector of parameters if the input is a vector. 'def_MM.m' is a function that produces a function handle called 'MMstep', which defines the minorization-maximization step. The input to 'MMstep' a structure of parameters, and the output is the updated structure of parameters. The function 'MMstep' calls the function 'lowerbound_inverse.m' which creates the inverse lower bound matrix for updating the fixed coefficients. The parameters are estimated by iterating on the function 'MMstep' until convergence. 'em_alg_eps.m is a function that iterates on the function handle 'MMstep' until the parameters converge using the vector epsilon algorithm in Kuroda and Sakakihara (2006) 'def_EMqn.m' defines the EM step for the EM algorithm using quasi-newton for the inner optimization 'def_EMnr.m' defines the EM step for the EM algorithm using newton-raphson for the inner optimization 'mslAgrad.m' estimates the parameters using maximum simulated likelihood with analytical gradients 'mslNgrad.m' estimates the parameters using maximum simulated likelihood with numerical gradients All of the .m files described above are ASCII files in DOS format. They are zipped in the file jj-files.zip. Unix/Linux users should use "unzip -a".