Model run by stephane.hess using Apollo 0.3.6 on R 4.5.1 for Darwin. Please acknowledge the use of Apollo by citing Hess & Palma (2019) DOI 10.1016/j.jocm.2019.100170 www.ApolloChoiceModelling.com Model name : EM_LC_with_covariates Model description : LC model with class allocation model on Swiss route choice data, EM algorithm Model run at : 2025-09-19 14:54:39.405462 Estimation method : EM algorithm (bfgs) -> Maximum likelihood (bfgs) Estimation diagnosis : successful convergence Optimisation diagnosis : Unknown (no Hessian calculated) Number of individuals : 388 Number of rows in database : 3492 Number of modelled outcomes : 3492 Number of cores used : 1 Model without mixing LL(start) : -1755.5 LL (whole model) at equal shares, LL(0) : -2420.47 LL (whole model) at observed shares, LL(C) : -2420.39 LL(final, whole model) : -1558.43 Rho-squared vs equal shares : 0.3561 Adj.Rho-squared vs equal shares : 0.3508 Rho-squared vs observed shares : 0.3561 Adj.Rho-squared vs observed shares : 0.3553 AIC : 3142.85 BIC : 3222.91 LL(0,Class_1) : -2420.47 LL(final,Class_1) : -1777.55 LL(0,Class_2) : -2420.47 LL(final,Class_2) : -2467.34 Estimated parameters : 13 Time taken (hh:mm:ss) : 00:00:11.43 pre-estimation : 00:00:0.64 estimation : 00:00:10.77 post-estimation : 00:00:0.02 Iterations : 36 (EM) & 3 (bfgs) Unconstrained optimisation. Estimates: Estimate s.e. t.rat.(0) Rob.s.e. Rob.t.rat.(0) asc_1_a -0.08345 NA NA NA NA asc_1_b 0.06788 NA NA NA NA asc_2_a 0.00000 NA NA NA NA asc_2_b 0.00000 NA NA NA NA beta_tt_a -0.03678 NA NA NA NA beta_tt_b -0.21233 NA NA NA NA beta_tc_a -0.04914 NA NA NA NA beta_tc_b -0.78314 NA NA NA NA beta_hw_a -0.03414 NA NA NA NA beta_hw_b -0.05479 NA NA NA NA beta_ch_a -0.61016 NA NA NA NA beta_ch_b -2.64666 NA NA NA NA delta_a -0.22002 NA NA NA NA gamma_commute_a -0.47168 NA NA NA NA gamma_car_av_a 0.61213 NA NA NA NA delta_b 0.00000 NA NA NA NA gamma_commute_b 0.00000 NA NA NA NA gamma_car_av_b 0.00000 NA NA NA NA Summary of class allocation for model component : Mean prob. Class_1 0.4702 Class_2 0.5298 Overview of choices for MNL model component Class_1: alt1 alt2 Times available 3492.00 3492.00 Times chosen 1734.00 1758.00 Percentage chosen overall 49.66 50.34 Percentage chosen when available 49.66 50.34 Overview of choices for MNL model component Class_2: alt1 alt2 Times available 3492.00 3492.00 Times chosen 1734.00 1758.00 Percentage chosen overall 49.66 50.34 Percentage chosen when available 49.66 50.34 Classical covariance matrix: asc_1_a asc_1_b beta_tt_a beta_tt_b beta_tc_a asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA beta_tc_b beta_hw_a beta_hw_b beta_ch_a beta_ch_b asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA delta_a gamma_commute_a gamma_car_av_a asc_1_a NA NA NA asc_1_b NA NA NA beta_tt_a NA NA NA beta_tt_b NA NA NA beta_tc_a NA NA NA beta_tc_b NA NA NA beta_hw_a NA NA NA beta_hw_b NA NA NA beta_ch_a NA NA NA beta_ch_b NA NA NA delta_a NA NA NA gamma_commute_a NA NA NA gamma_car_av_a NA NA NA Robust covariance matrix: asc_1_a asc_1_b beta_tt_a beta_tt_b beta_tc_a asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA beta_tc_b beta_hw_a beta_hw_b beta_ch_a beta_ch_b asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA delta_a gamma_commute_a gamma_car_av_a asc_1_a NA NA NA asc_1_b NA NA NA beta_tt_a NA NA NA beta_tt_b NA NA NA beta_tc_a NA NA NA beta_tc_b NA NA NA beta_hw_a NA NA NA beta_hw_b NA NA NA beta_ch_a NA NA NA beta_ch_b NA NA NA delta_a NA NA NA gamma_commute_a NA NA NA gamma_car_av_a NA NA NA Classical correlation matrix: asc_1_a asc_1_b beta_tt_a beta_tt_b beta_tc_a asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA beta_tc_b beta_hw_a beta_hw_b beta_ch_a beta_ch_b asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA delta_a gamma_commute_a gamma_car_av_a asc_1_a NA NA NA asc_1_b NA NA NA beta_tt_a NA NA NA beta_tt_b NA NA NA beta_tc_a NA NA NA beta_tc_b NA NA NA beta_hw_a NA NA NA beta_hw_b NA NA NA beta_ch_a NA NA NA beta_ch_b NA NA NA delta_a NA NA NA gamma_commute_a NA NA NA gamma_car_av_a NA NA NA Robust correlation matrix: asc_1_a asc_1_b beta_tt_a beta_tt_b beta_tc_a asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA beta_tc_b beta_hw_a beta_hw_b beta_ch_a beta_ch_b asc_1_a NA NA NA NA NA asc_1_b NA NA NA NA NA beta_tt_a NA NA NA NA NA beta_tt_b NA NA NA NA NA beta_tc_a NA NA NA NA NA beta_tc_b NA NA NA NA NA beta_hw_a NA NA NA NA NA beta_hw_b NA NA NA NA NA beta_ch_a NA NA NA NA NA beta_ch_b NA NA NA NA NA delta_a NA NA NA NA NA gamma_commute_a NA NA NA NA NA gamma_car_av_a NA NA NA NA NA delta_a gamma_commute_a gamma_car_av_a asc_1_a NA NA NA asc_1_b NA NA NA beta_tt_a NA NA NA beta_tt_b NA NA NA beta_tc_a NA NA NA beta_tc_b NA NA NA beta_hw_a NA NA NA beta_hw_b NA NA NA beta_ch_a NA NA NA beta_ch_b NA NA NA delta_a NA NA NA gamma_commute_a NA NA NA gamma_car_av_a NA NA NA 20 most extreme outliers in terms of lowest average per choice prediction: ID Avg prob per choice 15030 0.2347704 22580 0.3090565 14802 0.3265873 23205 0.3433640 20010 0.3448946 16489 0.3486507 22961 0.3596169 16617 0.3599619 18219 0.3704797 13863 0.3748318 15174 0.3791623 22278 0.3809758 76862 0.3845454 20100 0.3854317 16178 0.3976437 13214 0.4004994 17187 0.4007497 20323 0.4025138 82613 0.4025561 20063 0.4041895 Settings and functions used in model definition: apollo_control -------------- Value modelDescr "LC model with class allocation model on Swiss route choice data, EM algorithm" indivID "ID" noValidation "TRUE" noDiagnostics "TRUE" outputDirectory "output/" debug "FALSE" modelName "EM_LC_with_covariates" nCores "1" workInLogs "FALSE" seed "13" mixing "FALSE" HB "FALSE" calculateLLC "TRUE" analyticHessian "FALSE" memorySaver "FALSE" panelData "TRUE" analyticGrad "TRUE" analyticGrad_manualSet "FALSE" overridePanel "FALSE" preventOverridePanel "FALSE" noModification "FALSE" Hessian routines attempted -------------------------- none apollo_lcPars --------------- function(apollo_beta, apollo_inputs){ lcpars = list() lcpars[["asc_1" ]] = list( asc_1_a, asc_1_b) lcpars[["asc_2" ]] = list( asc_2_a, asc_2_b) lcpars[["beta_tt"]] = list(beta_tt_a, beta_tt_b) lcpars[["beta_tc"]] = list(beta_tc_a, beta_tc_b) lcpars[["beta_hw"]] = list(beta_hw_a, beta_hw_b) lcpars[["beta_ch"]] = list(beta_ch_a, beta_ch_b) V=list() V[["class_a"]] = delta_a + gamma_commute_a*commute + gamma_car_av_a*car_availability V[["class_b"]] = delta_b + gamma_commute_b*commute + gamma_car_av_b*car_availability ### Settings for class allocation models classAlloc_settings = list( classes = c(class_a=1, class_b=2), utilities = V ) lcpars[["pi_values"]] = apollo_classAlloc(classAlloc_settings) return(lcpars) } apollo_probabilities ---------------------- function(apollo_beta, apollo_inputs, functionality="estimate"){ ### Attach inputs and detach after function exit apollo_attach(apollo_beta, apollo_inputs) on.exit(apollo_detach(apollo_beta, apollo_inputs)) ### Create list of probabilities P P = list() ### Define settings for MNL model component that are generic across classes mnl_settings = list( alternatives = c(alt1=1, alt2=2), avail = list(alt1=1, alt2=1), choiceVar = choice ) ### Loop over classes for(s in 1:length(pi_values)){ ### Compute class-specific utilities V=list() V[["alt1"]] = asc_1[[s]] + beta_tc[[s]]*tc1 + beta_tt[[s]]*tt1 + beta_hw[[s]]*hw1 + beta_ch[[s]]*ch1 V[["alt2"]] = asc_2[[s]] + beta_tc[[s]]*tc2 + beta_tt[[s]]*tt2 + beta_hw[[s]]*hw2 + beta_ch[[s]]*ch2 mnl_settings$utilities = V ### Compute within-class choice probabilities using MNL model P[[paste0("Class_",s)]] = apollo_mnl(mnl_settings, functionality) ### Take product across observation for same individual P[[paste0("Class_",s)]] = apollo_panelProd(P[[paste0("Class_",s)]], apollo_inputs ,functionality) } ### Compute latent class model probabilities lc_settings = list(inClassProb = P, classProb=pi_values) P[["model"]] = apollo_lc(lc_settings, apollo_inputs, functionality) ### Prepare and return outputs of function P = apollo_prepareProb(P, apollo_inputs, functionality) return(P) }