Thanks for all the help you provide through this forum.
I am having some problems running this model. When producing a two class model it appears to work fine, however when producing a three class or above the model produces NA for all SE, and the estimates look very suspicious.
Subsequently, I have also ran 3 and 4 class models with just regular Latent Class modelling with no issues (however at 5 classes it fails with NAs, I assume because it is over specified? I have also tried running the three class model with random parameters in just Delta A, Delta B and one choice option Areaplay (A,b &C), with the same issue.
In addition, I've tried playing around with the number of draws and types of draws.
Script
# ################################################################# #
#### LOAD LIBRARY AND DEFINE CORE SETTINGS ####
# ################################################################# #
### Clear memory
rm(list = ls())
### Load Apollo library
library(apollo)
### Initialise code
apollo_initialise()
### Set core controls
apollo_control = list(
modelName = "MM-MNL Test run v1 500",
modelDescr = "MM-MNL model on Belsay Hall, covariates in class allocation model",
indivID = "RID",
mixing = TRUE,
nCores = 6,
outputDirectory = "output"
)
# ################################################################# #
#### LOAD DATA AND APPLY ANY TRANSFORMATIONS ####
# ################################################################# #
### Loading data from package
database = read.csv("~/Visitor_demo.csv", header=TRUE)
choiceAnalysis_settings <- list(
alternatives = c(a1=1, a2=2, a3=3),
avail = list(a1=database$a1_x1, a2=database$a2_x1, a3=database$a3_x1),
choiceVar = database$pref1)
# ################################################################# #
#### DEFINE MODEL PARAMETERS ####
# ################################################################# #
### Vector of parameters, including any that are kept fixed in estimation
apollo_beta = c(
mu_log_b_areaplay_a = 0,
mu_log_b_areaplay_b = 0,
mu_log_b_areaplay_c = 0,
mu_log_b_castle_a = 0 ,
mu_log_b_castle_b = 0 ,
mu_log_b_castle_c = 0 ,
mu_log_b_cno_a = 0,
mu_log_b_cno_b = 0,
mu_log_b_cno_c = 0,
mu_log_b_educadults_a = 0,
mu_log_b_educadults_b = 0,
mu_log_b_educadults_c = 0,
mu_log_b_eno_a = 0,
mu_log_b_eno_b = 0,
mu_log_b_eno_c = 0,
mu_log_b_eventschild_a = 0,
mu_log_b_eventschild_b = 0,
mu_log_b_eventschild_c = 0,
mu_log_b_hall_a = 0,
mu_log_b_hall_b = 0,
mu_log_b_hall_c = 0,
mu_log_b_price_a = 0,
mu_log_b_price_b = 0,
mu_log_b_price_c = 0,
mu_log_b_sno_a = 0,
mu_log_b_sno_b = 0,
mu_log_b_sno_c = 0,
mu_log_b_social_a = 0,
mu_log_b_social_b = 0,
mu_log_b_social_c = 0,
sigma_log_b_areaplay_a = 0,
sigma_log_b_areaplay_b = 0,
sigma_log_b_areaplay_c = 0,
sigma_log_b_castle_a = 0 ,
sigma_log_b_castle_b = 0 ,
sigma_log_b_castle_c = 0 ,
sigma_log_b_cno_a = 0,
sigma_log_b_cno_b = 0,
sigma_log_b_cno_c = 0,
sigma_log_b_educadults_a = 0,
sigma_log_b_educadults_b = 0,
sigma_log_b_educadults_c = 0,
sigma_log_b_eno_a = 0,
sigma_log_b_eno_b = 0,
sigma_log_b_eno_c = 0,
sigma_log_b_eventschild_a = 0,
sigma_log_b_eventschild_b = 0,
sigma_log_b_eventschild_c = 0,
sigma_log_b_hall_a = 0,
sigma_log_b_hall_b = 0,
sigma_log_b_hall_c = 0,
sigma_log_b_price_a = 0,
sigma_log_b_price_b = 0,
sigma_log_b_price_c = 0,
sigma_log_b_sno_a = 0,
sigma_log_b_sno_b = 0,
sigma_log_b_sno_c = 0,
sigma_log_b_social_a = 0,
sigma_log_b_social_b = 0,
sigma_log_b_social_c = 0,
gamma_englishheritage_a =0,
gamma_englishheritage_b =0,
gamma_englishheritage_c =0,
gamma_highincome_a =0,
gamma_highincome_b=0,
gamma_highincome_c =0,
gamma_children_a =0,
gamma_children_b =0,
gamma_children_c=0,
gamma_highereducation_a =0,
gamma_highereducation_b =0,
gamma_highereducation_c =0,
gamma_heritage_very_future_a = 0,
gamma_heritage_very_future_b = 0,
gamma_heritage_very_future_c =0,
gamma_heritage_visit_a = 0,
gamma_heritage_visit_b = 0,
gamma_heritage_visit_c =0,
delta_a = 0,
delta_b = 0,
b_delta_c = 0,
sigma_delta_a = 0,
sigma_delta_b = 0
)
### Vector with names (in quotes) of parameters to be kept fixed at their starting value in apollo_beta, use apollo_beta_fixed = c() if none
apollo_fixed = c("b_delta_c",
"mu_log_b_cno_a", "mu_log_b_sno_a", "mu_log_b_eno_a",
"mu_log_b_cno_b", "mu_log_b_sno_b", "mu_log_b_eno_b",
"mu_log_b_cno_c", "mu_log_b_sno_c", "mu_log_b_eno_c",
"gamma_children_c", "gamma_englishheritage_c", "gamma_highincome_c", "gamma_highereducation_c",
"gamma_heritage_very_future_c", "gamma_heritage_visit_c")
### Set parameters for generating draws
apollo_draws = list(
interDrawsType = "mlhs", ##changed to pmc draws
interNDraws = 500,
interUnifDraws = c(),
interNormDraws = c(
"draws_educadults_a", "draws_social_a", "draws_price_a", "draws_cno_a","draws_hall_a","draws_castle_a","draws_eno_a", "draws_areaplay_a", "draws_eventschild_a", "draws_sno_a",
"draws_educadults_b", "draws_social_b", "draws_price_b", "draws_cno_b","draws_hall_b","draws_castle_b","draws_eno_b", "draws_areaplay_b", "draws_eventschild_b", "draws_sno_b",
"draws_educadults_c", "draws_social_c", "draws_price_c", "draws_cno_c","draws_hall_c","draws_castle_c","draws_eno_c", "draws_areaplay_c", "draws_eventschild_c", "draws_sno_c",
"draws_pi_a", "draws_pi_b", "draws_pi_c"),
intraDrawsType = "pmc",
intraNDraws = 0,
intraUnifDraws = c(),
intraNormDraws = c()
)
###Random coeffecients##
apollo_randCoeff = function(apollo_beta, apollo_inputs){
randcoeff = list()
randcoeff[["b_cno_a"]] = ( mu_log_b_cno_a + 0*sigma_log_b_cno_a * 0*draws_cno_a)
randcoeff[["b_hall_a"]] = ( mu_log_b_hall_a + 0*sigma_log_b_hall_a * 0*draws_hall_a)
randcoeff[["b_castle_a"]] = ( mu_log_b_castle_a + 0*sigma_log_b_castle_a * 0*draws_castle_a)
randcoeff[["b_eno_a"]] = ( mu_log_b_eno_a + 0*sigma_log_b_eno_a * 0*draws_eno_a)
randcoeff[["b_areaplay_a"]] = ( mu_log_b_areaplay_a + 0*sigma_log_b_areaplay_a * 0*draws_areaplay_a)
randcoeff[["b_eventschild_a"]] = ( mu_log_b_eventschild_a + 0*sigma_log_b_eventschild_a * 0*draws_eventschild_a)
randcoeff[["b_sno_a"]] = ( mu_log_b_sno_a + 0*sigma_log_b_sno_a * 0*draws_sno_a)
randcoeff[["b_educadults_a"]] = ( mu_log_b_educadults_a + 0*sigma_log_b_educadults_a * 0*draws_educadults_a)
randcoeff[["b_social_a"]] = ( mu_log_b_social_a + 0*sigma_log_b_social_a * 0*draws_social_a)
randcoeff[["b_price_a"]] = ( mu_log_b_price_a + 0*sigma_log_b_price_a * 0*draws_price_a)
randcoeff[["b_delta_a"]] = ( delta_a + 0*sigma_delta_a * 0*draws_pi_a)
randcoeff[["b_cno_b"]] = ( mu_log_b_cno_b + 0*sigma_log_b_cno_b * 0*draws_cno_b)
randcoeff[["b_hall_b"]] = ( mu_log_b_hall_b + 0*sigma_log_b_hall_b * 0*draws_hall_b)
randcoeff[["b_castle_b"]] = ( mu_log_b_castle_b + 0*sigma_log_b_castle_b * 0*draws_castle_b)
randcoeff[["b_eno_b"]] = ( mu_log_b_eno_b + 0*sigma_log_b_eno_b * 0*draws_eno_b)
randcoeff[["b_areaplay_b"]] = ( mu_log_b_areaplay_b + 0*sigma_log_b_areaplay_b * 0*draws_areaplay_b)
randcoeff[["b_eventschild_b"]] = ( mu_log_b_eventschild_b + 0*sigma_log_b_eventschild_b * 0*draws_eventschild_b)
randcoeff[["b_sno_b"]] = ( mu_log_b_sno_b + 0*sigma_log_b_sno_b * 0*draws_sno_b)
randcoeff[["b_educadults_b"]] = ( mu_log_b_educadults_b + 0*sigma_log_b_educadults_b * 0*draws_educadults_b)
randcoeff[["b_social_b"]] = ( mu_log_b_social_b + 0*sigma_log_b_social_b * 0*draws_social_b)
randcoeff[["b_price_b"]] = ( mu_log_b_price_b + 0*sigma_log_b_price_b * 0*draws_price_b)
randcoeff[["b_delta_b"]] = ( delta_b + 0*sigma_delta_b * 0*draws_pi_b)
randcoeff[["b_cno_c"]] = ( mu_log_b_cno_c + 0*sigma_log_b_cno_c * 0*draws_cno_c)
randcoeff[["b_hall_c"]] = ( mu_log_b_hall_c + 0*sigma_log_b_hall_c * 0*draws_hall_c)
randcoeff[["b_castle_c"]] = ( mu_log_b_castle_c + 0*sigma_log_b_castle_c * 0*draws_castle_c)
randcoeff[["b_eno_c"]] = ( mu_log_b_eno_c + 0*sigma_log_b_eno_c * 0*draws_eno_c)
randcoeff[["b_areaplay_c"]] = ( mu_log_b_areaplay_c + 0*sigma_log_b_areaplay_c * 0*draws_areaplay_c)
randcoeff[["b_eventschild_c"]] = ( mu_log_b_eventschild_c + 0*sigma_log_b_eventschild_c * 0*draws_eventschild_c)
randcoeff[["b_sno_c"]] = ( mu_log_b_sno_c + 0*sigma_log_b_sno_c* 0*draws_sno_c)
randcoeff[["b_educadults_c"]] = ( mu_log_b_educadults_c + 0*sigma_log_b_educadults_c * 0*draws_educadults_c)
randcoeff[["b_social_c"]] = ( mu_log_b_social_c + 0*sigma_log_b_social_c * 0*draws_social_c)
randcoeff[["b_price_c"]] = ( mu_log_b_price_c + 0*sigma_log_b_price_c * 0*draws_price_c)
return(randcoeff)
}
# ################################################################# #
#### DEFINE LATENT CLASS COMPONENTS ####
# ################################################################# #
apollo_lcPars=function(apollo_beta, apollo_inputs){
lcpars = list()
lcpars[["b_cno"]] = list(b_cno_a, b_cno_b, b_cno_c)
lcpars[["b_hall"]] = list( b_hall_a, b_hall_b, b_hall_c)
lcpars[["b_castle"]] = list( b_castle_a, b_castle_b, b_castle_c)
lcpars[["b_eno"]] = list( b_eno_a, b_eno_b, b_eno_c)
lcpars[["b_areaplay"]] = list( b_areaplay_a, b_areaplay_b, b_areaplay_c)
lcpars[["b_eventschild"]] = list( b_eventschild_a, b_eventschild_b, b_eventschild_c)
lcpars[["b_sno"]] = list( b_sno_a, b_sno_b, b_sno_c)
lcpars[["b_educadults"]] = list( b_educadults_a, b_educadults_b, b_educadults_c)
lcpars[["b_social"]] = list( b_social_a, b_social_b, b_social_c)
lcpars[["b_price"]] = list( b_price_a, b_price_b, b_price_c)
### Utilities of class allocation model
V=list()
V[["class_a"]] = (b_delta_a
+ gamma_englishheritage_a * (( q5 == 1) *1
+ (q5 == 2) * 0)
+ gamma_highincome_a * ( ( ( income ==1)
+ (income ==2)
+( income == 3)
+ (income == 4) *1
+ (income == 5) * 1 ) )
+gamma_children_a *(( children == 1) *1
+ (children == 2) * 0)
+ gamma_highereducation_a *
(((education == 4) * 0)
+ ((education == 3) )
+((education == 2) *1)
+((education == 1) *1))
+ gamma_heritage_very_future_a * ((q4 == 1) *1
+(q4 == 2) * 0
+(q4 == 3) )
+ gamma_heritage_visit_a * ((q2 == 1) * 0
+(q2 == 2) * 0
+(q2 == 3) *1)
)
V[["class_b"]] = (b_delta_b
+ gamma_englishheritage_b * (( q5 == 1) *1
+ (q5 == 2) * 0)
+ gamma_highincome_b * ( ( ( income ==1)
+ (income ==2)
+( income == 3)
+ (income == 4) *1
+ (income == 5) * 1 ) )
+gamma_children_b *(( children == 1) *1
+ (children == 2) * 0)
+ gamma_highereducation_b *
(((education == 4) * 0)
+ ((education == 3) )
+((education == 2) *1)
+((education == 1) *1))
+ gamma_heritage_very_future_b * ((q4 == 1) *1
+(q4 == 2) * 0
+(q4 == 3) )
+ gamma_heritage_visit_b * ((q2 == 1) * 0
+(q2 == 2) * 0
+(q2 == 3) *1)
)
V[["class_c"]] = (b_delta_c
+ gamma_englishheritage_c * (( q5 == 1) *1
+ (q5 == 2) * 0)
+ gamma_highincome_c * ( ( ( income ==1)
+ (income ==2)
+( income == 3)
+ (income == 4) *1
+ (income == 5) * 1 ) )
+ gamma_children_c *(( children == 1) *1
+ (children == 2) * 0)
+ gamma_highereducation_c *
(((education == 4) * 0)
+ ((education == 3) )
+((education == 2) *1)
+((education == 1) *1))
+ gamma_heritage_very_future_c * ((q4 == 1) *1
+(q4 == 2) * 0
+(q4 == 3) )
+ gamma_heritage_visit_c * ((q2 == 1) * 0
+(q2 == 2) * 0
+(q2 == 3) *1)
)
classAlloc_settings = list(
classes = c(class_a=1, class_b=2, class_c=3),
utilities = V
)
lcpars[["pi_values"]] = apollo_classAlloc(classAlloc_settings)
return(lcpars)
}
# ################################################################# #
#### GROUP AND VALIDATE INPUTS ####
# ################################################################# #
apollo_inputs = apollo_validateInputs()
# ################################################################# #
#### DEFINE MODEL AND LIKELIHOOD FUNCTION ####
# ################################################################# #
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()
### Loop over classes
for(s in 1:3){
### Compute class-specific utilities
V = list()
V[['A']] = (
b_cno[[s]] * ( a1_x1 == 1)
+ b_hall[[s]] * ( a1_x1 == 2)
+ b_castle[[s]] * ( a1_x1 == 3)
+ b_eno[[s]] * ( a1_x2 == 1)
+ b_areaplay[[s]] * ( a1_x2 == 2)
+ b_eventschild[[s]] * ( a1_x2 == 3)
+ b_sno[[s]] * ( a1_x3 == 1)
+ b_educadults[[s]] * ( a1_x3 == 2)
+ b_social[[s]] * ( a1_x3 == 3)
+ b_price[[s]] * ( ( a1_x4 == 1) * 2
+( a1_x4 == 2) * 4
+( a1_x4 == 3) * 6
+( a1_x4 == 4) * 8
+( a1_x4 ==5) * 10
+( a1_x4 ==6) * 12 ))
V[['B']] = (
b_cno[[s]] * ( a2_x1 == 1)
+ b_hall[[s]] * ( a2_x1 == 2)
+ b_castle[[s]] * ( a2_x1 == 3)
+ b_eno[[s]] * ( a2_x2 == 1)
+ b_areaplay[[s]] * ( a2_x2 == 2)
+ b_eventschild[[s]] * ( a2_x2 == 3)
+ b_sno[[s]] * ( a2_x3 == 1)
+ b_educadults[[s]] * ( a2_x3 == 2)
+ b_social[[s]] * ( a2_x3 == 3)
+ b_price[[s]] * ( ( a2_x4 == 1) *2
+ ( a2_x4==2) *4
+ (a2_x4==3) *6
+ (a2_x4==4) *8
+ (a2_x4==5) *10
+ (a2_x4==6) *12 ))
V[['C']] = (
b_cno[[s]] * ( a3_x1 == 1)
+ b_eno[[s]] * ( a3_x2 == 1)
+ b_sno[[s]] * ( a3_x3 == 1)
+ b_price[[s]] * ( a3_x4 == 1) )
### Define settings for MNL model component that are generic across classes
mnl_settings = list(
alternatives = c(A=1,B=2, C=3),
choiceVar = pref1
)
mnl_settings$utilities = V
mnl_settings$componentName = paste0("Class_",s)
### 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)
### Average across inter-individual draws within classes
P[[paste0("Class_",s)]] = apollo_avgInterDraws(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)
### Average across inter-individual draws in class allocation probabilities
P[["model"]] = apollo_avgInterDraws(P[["model"]], apollo_inputs, functionality)
### Prepare and return outputs of function
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}
Output
Model run by TColwill using Apollo 0.2.7 on R 4.1.2 for Windows.
www.ApolloChoiceModelling.com
Model name : Visit MM-MNL Class 3 V1 pmc
Model description : Visit Simple LC model on Belsay Hall, no covariates in class allocation model
Model run at : 2022-03-17 10:09:29
Estimation method : bfgs
Model diagnosis : successful convergence
Number of individuals : 190
Number of rows in database : 1140
Number of modelled outcomes : 1140
Number of cores used : 6
Number of inter-individual draws : 100 (pmc)
LL(start) : -1252.42
LL(0, whole model) : -1252.42
LL(C, whole model) : -1211.06
LL(final, whole model) : -875.52
Rho-square (0) : 0.3009
Adj.Rho-square (0) : 0.2474
Rho-square (C) : 0.2771
Adj.Rho-square (C) : 0.2217
AIC : 1885.03
BIC : 2222.63
LL(0,Class_1) : -1252.42
LL(final,Class_1) : -1133.6
LL(0,Class_2) : -1252.42
LL(final,Class_2) : -Inf Likelihood equal to zero for at least
one individual in this component.
LL(0,Class_3) : -1252.42
LL(final,Class_3) : -Inf Likelihood equal to zero for at least
one individual in this component.
Estimated parameters : 67
Time taken (hh:mm:ss) : 00:22:14.37
pre-estimation : 00:01:51.09
estimation : 00:10:58.7
post-estimation : 00:09:24.58
Iterations : 366
Unconstrained optimisation.
Estimates:
Estimate s.e. t.rat.(0) Rob.s.e. Rob.t.rat.(0)
mu_log_b_areaplay_a -0.16928 NA NA NA NA
mu_log_b_areaplay_b 3004.36005 NA NA NA NA
mu_log_b_areaplay_c -326.31949 NA NA NA NA
mu_log_b_castle_a 0.30221 NA NA NA NA
mu_log_b_castle_b 2457.89438 NA NA NA NA
mu_log_b_castle_c 6614.35597 NA NA NA NA
mu_log_b_cno_a 0.00000 NA NA NA NA
mu_log_b_cno_b 0.00000 NA NA NA NA
mu_log_b_cno_c 0.00000 NA NA NA NA
mu_log_b_educadults_a 0.01917 NA NA NA NA
mu_log_b_educadults_b 830.86443 NA NA NA NA
mu_log_b_educadults_c -141.59485 NA NA NA NA
mu_log_b_eno_a 0.00000 NA NA NA NA
mu_log_b_eno_b 0.00000 NA NA NA NA
mu_log_b_eno_c 0.00000 NA NA NA NA
mu_log_b_eventschild_a -0.29509 NA NA NA NA
mu_log_b_eventschild_b 1707.29144 NA NA NA NA
mu_log_b_eventschild_c -940.36912 NA NA NA NA
mu_log_b_hall_a 0.31901 NA NA NA NA
mu_log_b_hall_b 2181.92695 NA NA NA NA
mu_log_b_hall_c 4478.03264 NA NA NA NA
mu_log_b_price_a -0.05604 NA NA NA NA
mu_log_b_price_b -148.93076 NA NA NA NA
mu_log_b_price_c -590.92589 NA NA NA NA
mu_log_b_sno_a 0.00000 NA NA NA NA
mu_log_b_sno_b 0.00000 NA NA NA NA
mu_log_b_sno_c 0.00000 NA NA NA NA
mu_log_b_social_a -0.02015 NA NA NA NA
mu_log_b_social_b 1180.19742 NA NA NA NA
mu_log_b_social_c -1499.99203 NA NA NA NA
sigma_log_b_areaplay_a -0.08176 NA NA NA NA
sigma_log_b_areaplay_b -505.52589 NA NA NA NA
sigma_log_b_areaplay_c 2325.31844 NA NA NA NA
sigma_log_b_castle_a 0.95924 NA NA NA NA
sigma_log_b_castle_b -1161.89618 NA NA NA NA
sigma_log_b_castle_c -531.21592 NA NA NA NA
sigma_log_b_cno_a -0.30539 NA NA NA NA
sigma_log_b_cno_b 901.70966 NA NA NA NA
sigma_log_b_cno_c -1813.21190 NA NA NA NA
sigma_log_b_educadults_a -0.06946 NA NA NA NA
sigma_log_b_educadults_b 1107.43212 NA NA NA NA
sigma_log_b_educadults_c -424.59087 NA NA NA NA
sigma_log_b_eno_a 0.82920 NA NA NA NA
sigma_log_b_eno_b 1354.58093 NA NA NA NA
sigma_log_b_eno_c 1691.90057 NA NA NA NA
sigma_log_b_eventschild_a -0.18289 NA NA NA NA
sigma_log_b_eventschild_b 260.40792 NA NA NA NA
sigma_log_b_eventschild_c -900.31635 NA NA NA NA
sigma_log_b_hall_a 0.77380 NA NA NA NA
sigma_log_b_hall_b 463.41418 NA NA NA NA
sigma_log_b_hall_c -2239.05269 NA NA NA NA
sigma_log_b_price_a 0.05705 NA NA NA NA
sigma_log_b_price_b -201.84341 NA NA NA NA
sigma_log_b_price_c 585.59683 NA NA NA NA
sigma_log_b_sno_a -0.28233 NA NA NA NA
sigma_log_b_sno_b 1399.26160 NA NA NA NA
sigma_log_b_sno_c 2208.94517 NA NA NA NA
sigma_log_b_social_a 0.62873 NA NA NA NA
sigma_log_b_social_b -439.00748 NA NA NA NA
sigma_log_b_social_c 451.31010 NA NA NA NA
gamma_englishheritage_a 1024.01459 NA NA NA NA
gamma_englishheritage_b 958.55245 NA NA NA NA
gamma_englishheritage_c 0.00000 NA NA NA NA
gamma_highincome_a -3965.36036 NA NA NA NA
gamma_highincome_b -2818.90149 NA NA NA NA
gamma_highincome_c 0.00000 NA NA NA NA
gamma_children_a 8527.20836 NA NA NA NA
gamma_children_b 3266.26965 NA NA NA NA
gamma_children_c 0.00000 NA NA NA NA
gamma_highereducation_a 7480.63409 NA NA NA NA
gamma_highereducation_b 2864.21271 NA NA NA NA
gamma_highereducation_c 0.00000 NA NA NA NA
gamma_heritage_very_future_a -858.05016 NA NA NA NA
gamma_heritage_very_future_b 1873.29907 NA NA NA NA
gamma_heritage_very_future_c 0.00000 NA NA NA NA
gamma_heritage_visit_a -3072.30863 NA NA NA NA
gamma_heritage_visit_b -879.06421 NA NA NA NA
gamma_heritage_visit_c 0.00000 NA NA NA NA
delta_a -6755.58876 NA NA NA NA
delta_b -2040.71110 NA NA NA NA
b_delta_c 0.00000 NA NA NA NA
sigma_delta_a 1753.52771 NA NA NA NA
sigma_delta_b 179.13502 NA NA NA NA
Summary of class allocation for LC model component :
Mean prob.
Class_1 0.1753
Class_2 0.5269
Class_3 0.2978
Overview of choices for MNL model component Class_1:
A B C
Times available 1140.00 1140.00 1140.00
Times chosen 431.00 467.00 242.00
Percentage chosen overall 37.81 40.96 21.23
Percentage chosen when available 37.81 40.96 21.23
Overview of choices for MNL model component Class_2:
A B C
Times available 1140.00 1140.00 1140.00
Times chosen 431.00 467.00 242.00
Percentage chosen overall 37.81 40.96 21.23
Percentage chosen when available 37.81 40.96 21.23
Overview of choices for MNL model component Class_3:
A B C
Times available 1140.00 1140.00 1140.00
Times chosen 431.00 467.00 242.00
Percentage chosen overall 37.81 40.96 21.23
Percentage chosen when available 37.81 40.96 21.23
mu_log_b_areaplay_a NA
mu_log_b_areaplay_b NA
mu_log_b_areaplay_c NA
mu_log_b_castle_a NA
mu_log_b_castle_b NA
mu_log_b_castle_c NA
mu_log_b_educadults_a NA
mu_log_b_educadults_b NA
mu_log_b_educadults_c NA
mu_log_b_eventschild_a NA
mu_log_b_eventschild_b NA
mu_log_b_eventschild_c NA
mu_log_b_hall_a NA
mu_log_b_hall_b NA
mu_log_b_hall_c NA
mu_log_b_price_a NA
mu_log_b_price_b NA
mu_log_b_price_c NA
mu_log_b_social_a NA
mu_log_b_social_b NA
mu_log_b_social_c NA
sigma_log_b_areaplay_a NA
sigma_log_b_areaplay_b NA
sigma_log_b_areaplay_c NA
sigma_log_b_castle_a NA
sigma_log_b_castle_b NA
sigma_log_b_castle_c NA
sigma_log_b_cno_a NA
sigma_log_b_cno_b NA
sigma_log_b_cno_c NA
sigma_log_b_educadults_a NA
sigma_log_b_educadults_b NA
sigma_log_b_educadults_c NA
sigma_log_b_eno_a NA
sigma_log_b_eno_b NA
sigma_log_b_eno_c NA
sigma_log_b_eventschild_a NA
sigma_log_b_eventschild_b NA
sigma_log_b_eventschild_c NA
sigma_log_b_hall_a NA
sigma_log_b_hall_b NA
sigma_log_b_hall_c NA
sigma_log_b_price_a NA
sigma_log_b_price_b NA
sigma_log_b_price_c NA
sigma_log_b_sno_a NA
sigma_log_b_sno_b NA
sigma_log_b_sno_c NA
sigma_log_b_social_a NA
sigma_log_b_social_b NA
sigma_log_b_social_c NA
gamma_englishheritage_a NA
gamma_englishheritage_b NA
gamma_highincome_a NA
gamma_highincome_b NA
gamma_children_a NA
gamma_children_b NA
gamma_highereducation_a NA
gamma_highereducation_b NA
gamma_heritage_very_future_a NA
gamma_heritage_very_future_b NA
gamma_heritage_visit_a NA
gamma_heritage_visit_b NA
delta_a NA
delta_b NA
sigma_delta_a NA
sigma_delta_b NA
20 worst outliers in terms of lowest average per choice prediction:
ID Avg prob per choice
941 0.1712810
1035 0.2564993
1087 0.2635812
1030 0.2680049
1145 0.2687322
1110 0.2701354
1080 0.2717807
1131 0.2823847
1153 0.2831397
1036 0.2860580
1078 0.2869393
1109 0.2949251
1054 0.2949613
1122 0.2968025
1062 0.2979753
1140 0.2981836
1127 0.2983129
1160 0.3025875
1051 0.3030202
1066 0.3031365
Changes in parameter estimates from starting values:
Initial Estimate Difference
mu_log_b_areaplay_a 0.000 -0.16928 -0.16928
mu_log_b_areaplay_b 0.000 3004.36005 3004.36005
mu_log_b_areaplay_c 0.000 -326.31949 -326.31949
mu_log_b_castle_a 0.000 0.30221 0.30221
mu_log_b_castle_b 0.000 2457.89438 2457.89438
mu_log_b_castle_c 0.000 6614.35597 6614.35597
mu_log_b_cno_a 0.000 0.00000 0.00000
mu_log_b_cno_b 0.000 0.00000 0.00000
mu_log_b_cno_c 0.000 0.00000 0.00000
mu_log_b_educadults_a 0.000 0.01917 0.01917
mu_log_b_educadults_b 0.000 830.86443 830.86443
mu_log_b_educadults_c 0.000 -141.59485 -141.59485
mu_log_b_eno_a 0.000 0.00000 0.00000
mu_log_b_eno_b 0.000 0.00000 0.00000
mu_log_b_eno_c 0.000 0.00000 0.00000
mu_log_b_eventschild_a 0.000 -0.29509 -0.29509
mu_log_b_eventschild_b 0.000 1707.29144 1707.29144
mu_log_b_eventschild_c 0.000 -940.36912 -940.36912
mu_log_b_hall_a 0.000 0.31901 0.31901
mu_log_b_hall_b 0.000 2181.92695 2181.92695
mu_log_b_hall_c 0.000 4478.03264 4478.03264
mu_log_b_price_a 0.000 -0.05604 -0.05604
mu_log_b_price_b 0.000 -148.93076 -148.93076
mu_log_b_price_c 0.000 -590.92589 -590.92589
mu_log_b_sno_a 0.000 0.00000 0.00000
mu_log_b_sno_b 0.000 0.00000 0.00000
mu_log_b_sno_c 0.000 0.00000 0.00000
mu_log_b_social_a 0.000 -0.02015 -0.02015
mu_log_b_social_b 0.000 1180.19742 1180.19742
mu_log_b_social_c 0.000 -1499.99203 -1499.99203
sigma_log_b_areaplay_a 0.000 -0.08176 -0.08176
sigma_log_b_areaplay_b 0.000 -505.52589 -505.52589
sigma_log_b_areaplay_c 0.000 2325.31844 2325.31844
sigma_log_b_castle_a 0.000 0.95924 0.95924
sigma_log_b_castle_b 0.000 -1161.89618 -1161.89618
sigma_log_b_castle_c 0.000 -531.21592 -531.21592
sigma_log_b_cno_a 0.000 -0.30539 -0.30539
sigma_log_b_cno_b 0.000 901.70966 901.70966
sigma_log_b_cno_c 0.000 -1813.21190 -1813.21190
sigma_log_b_educadults_a 0.000 -0.06946 -0.06946
sigma_log_b_educadults_b 0.000 1107.43212 1107.43212
sigma_log_b_educadults_c 0.000 -424.59087 -424.59087
sigma_log_b_eno_a 0.000 0.82920 0.82920
sigma_log_b_eno_b 0.000 1354.58093 1354.58093
sigma_log_b_eno_c 0.000 1691.90057 1691.90057
sigma_log_b_eventschild_a 0.000 -0.18289 -0.18289
sigma_log_b_eventschild_b 0.000 260.40792 260.40792
sigma_log_b_eventschild_c 0.000 -900.31635 -900.31635
sigma_log_b_hall_a 0.000 0.77380 0.77380
sigma_log_b_hall_b 0.000 463.41418 463.41418
sigma_log_b_hall_c 0.000 -2239.05269 -2239.05269
sigma_log_b_price_a 0.000 0.05705 0.05705
sigma_log_b_price_b 0.000 -201.84341 -201.84341
sigma_log_b_price_c 0.000 585.59683 585.59683
sigma_log_b_sno_a 0.000 -0.28233 -0.28233
sigma_log_b_sno_b 0.000 1399.26160 1399.26160
sigma_log_b_sno_c 0.000 2208.94517 2208.94517
sigma_log_b_social_a 0.000 0.62873 0.62873
sigma_log_b_social_b 0.000 -439.00748 -439.00748
sigma_log_b_social_c 0.000 451.31010 451.31010
gamma_englishheritage_a 0.000 1024.01459 1024.01459
gamma_englishheritage_b 0.000 958.55245 958.55245
gamma_englishheritage_c 0.000 0.00000 0.00000
gamma_highincome_a 0.000 -3965.36036 -3965.36036
gamma_highincome_b 0.000 -2818.90149 -2818.90149
gamma_highincome_c 0.000 0.00000 0.00000
gamma_children_a 0.000 8527.20836 8527.20836
gamma_children_b 0.000 3266.26965 3266.26965
gamma_children_c 0.000 0.00000 0.00000
gamma_highereducation_a 0.000 7480.63409 7480.63409
gamma_highereducation_b 0.000 2864.21271 2864.21271
gamma_highereducation_c 0.000 0.00000 0.00000
gamma_heritage_very_future_a 0.000 -858.05016 -858.05016
gamma_heritage_very_future_b 0.000 1873.29907 1873.29907
gamma_heritage_very_future_c 0.000 0.00000 0.00000
gamma_heritage_visit_a 0.000 -3072.30863 -3072.30863
gamma_heritage_visit_b 0.000 -879.06421 -879.06421
gamma_heritage_visit_c 0.000 0.00000 0.00000
delta_a 0.000 -6755.58876 -6755.58876
delta_b 0.000 -2040.71110 -2040.71110
b_delta_c 0.000 0.00000 0.00000
sigma_delta_a 0.000 1753.52771 1753.52771
sigma_delta_b 0.000 179.13502 179.13502
Settings and functions used in model definition:
apollo_control
--------------
Value
modelName "Visit MM-MNL Class 3 V1 pmc"
modelDescr "Visit Simple LC model on Belsay Hall, no covariates in class allocation model"
indivID "RID"
mixing "TRUE"
nCores "6"
outputDirectory "output/"
debug "FALSE"
workInLogs "FALSE"
seed "13"
HB "FALSE"
noValidation "FALSE"
noDiagnostics "FALSE"
calculateLLC "TRUE"
panelData "TRUE"
analyticGrad "TRUE"
analyticGrad_manualSet "FALSE"
Hessian routines attempted
--------------
numerical jacobian of LL analytical gradient
Scaling in estimation
--------------
Value
mu_log_b_areaplay_a 1.681677e-01
mu_log_b_areaplay_b 2.803410e+03
mu_log_b_areaplay_c 3.263594e+02
mu_log_b_castle_a 3.084298e-01
mu_log_b_castle_b 2.387801e+03
mu_log_b_castle_c 6.591531e+03
mu_log_b_educadults_a 1.913314e-02
mu_log_b_educadults_b 8.204261e+02
mu_log_b_educadults_c 1.415768e+02
mu_log_b_eventschild_a 2.891355e-01
mu_log_b_eventschild_b 1.644573e+03
mu_log_b_eventschild_c 9.411673e+02
mu_log_b_hall_a 3.206292e-01
mu_log_b_hall_b 2.163831e+03
mu_log_b_hall_c 4.464013e+03
mu_log_b_price_a 5.657223e-02
mu_log_b_price_b 1.464994e+02
mu_log_b_price_c 5.908180e+02
mu_log_b_social_a 2.014402e-02
mu_log_b_social_b 1.178308e+03
mu_log_b_social_c 1.498977e+03
sigma_log_b_areaplay_a 8.174196e-02
sigma_log_b_areaplay_b 5.004401e+02
sigma_log_b_areaplay_c 2.325589e+03
sigma_log_b_castle_a 9.660690e-01
sigma_log_b_castle_b 1.133048e+03
sigma_log_b_castle_c 5.310414e+02
sigma_log_b_cno_a 3.107990e-01
sigma_log_b_cno_b 8.916439e+02
sigma_log_b_cno_c 1.814123e+03
sigma_log_b_educadults_a 6.936703e-02
sigma_log_b_educadults_b 1.099849e+03
sigma_log_b_educadults_c 4.243019e+02
sigma_log_b_eno_a 8.304969e-01
sigma_log_b_eno_b 1.307996e+03
sigma_log_b_eno_c 1.696654e+03
sigma_log_b_eventschild_a 1.840628e-01
sigma_log_b_eventschild_b 2.631237e+02
sigma_log_b_eventschild_c 9.025027e+02
sigma_log_b_hall_a 7.785056e-01
sigma_log_b_hall_b 4.581843e+02
sigma_log_b_hall_c 2.237547e+03
sigma_log_b_price_a 5.668826e-02
sigma_log_b_price_b 1.983826e+02
sigma_log_b_price_c 5.903603e+02
sigma_log_b_sno_a 2.817422e-01
sigma_log_b_sno_b 1.368183e+03
sigma_log_b_sno_c 2.196609e+03
sigma_log_b_social_a 6.283991e-01
sigma_log_b_social_b 4.296221e+02
sigma_log_b_social_c 4.513092e+02
gamma_englishheritage_a 1.022535e+03
gamma_englishheritage_b 9.556722e+02
gamma_highincome_a 3.941580e+03
gamma_highincome_b 2.827438e+03
gamma_children_a 8.422864e+03
gamma_children_b 3.276342e+03
gamma_highereducation_a 7.403916e+03
gamma_highereducation_b 2.883096e+03
gamma_heritage_very_future_a 8.414569e+02
gamma_heritage_very_future_b 1.836735e+03
gamma_heritage_visit_a 3.030201e+03
gamma_heritage_visit_b 8.863527e+02
delta_a 6.620170e+03
delta_b 2.003061e+03
sigma_delta_a 1.718152e+03
sigma_delta_b 1.744937e+02
Scaling used in computing Hessian
--------------
Value
mu_log_b_areaplay_a 1.692759e-01
mu_log_b_areaplay_b 3.004360e+03
mu_log_b_areaplay_c 3.263195e+02
mu_log_b_castle_a 3.022086e-01
mu_log_b_castle_b 2.457894e+03
mu_log_b_castle_c 6.614356e+03
mu_log_b_educadults_a 1.916761e-02
mu_log_b_educadults_b 8.308644e+02
mu_log_b_educadults_c 1.415948e+02
mu_log_b_eventschild_a 2.950926e-01
mu_log_b_eventschild_b 1.707291e+03
mu_log_b_eventschild_c 9.403691e+02
mu_log_b_hall_a 3.190099e-01
mu_log_b_hall_b 2.181927e+03
mu_log_b_hall_c 4.478033e+03
mu_log_b_price_a 5.603745e-02
mu_log_b_price_b 1.489308e+02
mu_log_b_price_c 5.909259e+02
mu_log_b_social_a 2.015416e-02
mu_log_b_social_b 1.180197e+03
mu_log_b_social_c 1.499992e+03
sigma_log_b_areaplay_a 8.176051e-02
sigma_log_b_areaplay_b 5.055259e+02
sigma_log_b_areaplay_c 2.325318e+03
sigma_log_b_castle_a 9.592374e-01
sigma_log_b_castle_b 1.161896e+03
sigma_log_b_castle_c 5.312159e+02
sigma_log_b_cno_a 3.053948e-01
sigma_log_b_cno_b 9.017097e+02
sigma_log_b_cno_c 1.813212e+03
sigma_log_b_educadults_a 6.945674e-02
sigma_log_b_educadults_b 1.107432e+03
sigma_log_b_educadults_c 4.245909e+02
sigma_log_b_eno_a 8.291966e-01
sigma_log_b_eno_b 1.354581e+03
sigma_log_b_eno_c 1.691901e+03
sigma_log_b_eventschild_a 1.828888e-01
sigma_log_b_eventschild_b 2.604079e+02
sigma_log_b_eventschild_c 9.003164e+02
sigma_log_b_hall_a 7.738004e-01
sigma_log_b_hall_b 4.634142e+02
sigma_log_b_hall_c 2.239053e+03
sigma_log_b_price_a 5.705048e-02
sigma_log_b_price_b 2.018434e+02
sigma_log_b_price_c 5.855968e+02
sigma_log_b_sno_a 2.823324e-01
sigma_log_b_sno_b 1.399262e+03
sigma_log_b_sno_c 2.208945e+03
sigma_log_b_social_a 6.287303e-01
sigma_log_b_social_b 4.390075e+02
sigma_log_b_social_c 4.513101e+02
gamma_englishheritage_a 1.024015e+03
gamma_englishheritage_b 9.585525e+02
gamma_highincome_a 3.965360e+03
gamma_highincome_b 2.818901e+03
gamma_children_a 8.527208e+03
gamma_children_b 3.266270e+03
gamma_highereducation_a 7.480634e+03
gamma_highereducation_b 2.864213e+03
gamma_heritage_very_future_a 8.580502e+02
gamma_heritage_very_future_b 1.873299e+03
gamma_heritage_visit_a 3.072309e+03
gamma_heritage_visit_b 8.790642e+02
delta_a 6.755589e+03
delta_b 2.040711e+03
sigma_delta_a 1.753528e+03
sigma_delta_b 1.791350e+02
Rand Coeff. deleted for character limit
}
<bytecode: 0x000002097359d120>
)
classAlloc_settings = list(
classes = c(class_a=1, class_b=2, class_c=3),
utilities = V
)
lcpars[["pi_values"]] = apollo_classAlloc(classAlloc_settings)
return(lcpars)
}
<bytecode: 0x000002091808ed90>
### Define settings for MNL model component that are generic across classes
mnl_settings = list(
alternatives = c(A=1,B=2, C=3),
choiceVar = pref1
)
mnl_settings$utilities = V
mnl_settings$componentName = paste0("Class_",s)
### 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)
### Average across inter-individual draws within classes
P[[paste0("Class_",s)]] = apollo_avgInterDraws(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)
### Average across inter-individual draws in class allocation probabilities
P[["model"]] = apollo_avgInterDraws(P[["model"]], apollo_inputs, functionality)
### Prepare and return outputs of function
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}
<bytecode: 0x000002097bceaf38>
Any help will be greatly appreciated.
Thanks
Tom