has large Estimates and Std.
Posted: 31 Oct 2024, 23:37
Hi,
I am reaching out to you again! I used effected coding as input variabels. When I use latent class model and also adjust the intial value of variables, it estimates very large estimates and Std as below. I attached my code after the results.
I also try the EM_LC. EM_LC can estimates proper weights but still with large Std. Is it caused by dataset? Or we have other solution for this?
Thank you in advance!
Best regards,
kiki
mu_agecombine1_A 0 NA NA NA NA
mu_agecombine4_A 0 NA NA NA NA
mu_male_A 0 NA NA NA NA
mu_hhincombine1_A 0 NA NA NA NA
mu_hhincombine5_A 0 NA NA NA NA
mu_hhincombine9_A 0 NA NA NA NA
mu_composition1_A 0 NA NA NA NA
mu_composition3_A 0 NA NA NA NA
mu_agecombine1_B -83.2135570007629 4737.64344975588 -0.0175643350714902 16.4513057974797 -5.05817337694318
mu_agecombine4_B 93.3843188251887 5263.55773464753 0.0177416727493048 17.0914482127562 5.46380374926283
mu_male_B -65.4640115521348 3871.91169753977 -0.0169074133570068 11.9501379686124 -5.47809671520775
mu_hhincombine1_B -17.7615826038814 6430.96719618672 -0.00276188356463912 8.37234385537564 -2.12145880660135
mu_hhincombine5_B -52.6943007777475 3536.15585646304 -0.0149015775652077 7.99574751260397 -6.59029073825601
mu_hhincombine9_B 20.2411876675291 2833.37856891902 0.00714383453364351 8.48404875286343 2.38579341740552
mu_composition1_B 28.4716257611836 1869.84643254619 0.0152267187644996 8.56417737248296 3.32450211186238
mu_composition3_B -116.681117738717 6639.29420303333 -0.0175743255488526 24.290894789095 -4.80349195662811
delta_A 0 NA NA NA NA
delta_B 25.4460833819998 2395.67648564759 0.0106216693006949 4.68335215366583 5.43330557837343
# ################################################################# #
#### LOAD LIBRARY AND DEFINE CORE SETTINGS ####
# ################################################################# #
### Initialise
rm(list = ls())
library(apollo)
apollo_initialise()
### Set core controls
apollo_control = list(
modelName = "Hybrid_LC_OL_and_MMNL",
modelDescr = "Hybrid latent class choice model, using ordered measurement model for indicators",
indivID = "ID",
nCores = 5,
outputDirectory = "output"
)
# ################################################################# #
#### LOAD DATA AND APPLY ANY TRANSFORMATIONS ####
# ################################################################# #
### Loading data from package
### if data is to be loaded from a file (e.g. called data.csv),
### the code would be: database = read.csv("data.csv",header=TRUE)
database = read.csv("/Users/romeechow/Desktop/数据预处理/DataProcess_III/datacombine2_effectcode2.csv",header=TRUE)
### for data dictionary, use ?apollo_swissRouteChoiceData
# ################################################################# #
#### DEFINE MODEL PARAMETERS ####
# ################################################################# #
### Vector of parameters, including any that are kept fixed in estimation
apollo_beta = c(
asc2=0,
mu_asc3 =0, sigma_asc3=0,
# Choice parameters
# CPD attributes
# context attributes
b_acquaint1_A=0,b_acquaint2_A=0,b_acquaint3_A=0,
b_passport_A=0,
b_tele_A=0,b_home_A=0,
# alternative-specific attributes
b_DetourdistP1_A=0, b_DetourdistP2_A=0, b_DetourdistP3_A=0,
b_DetourdistD1_A=0, b_DetourdistD2_A=0, b_DetourdistD3_A=0,
b_size1_A=0,b_size2_A=0,b_size3_A=0,
b_weight1_A=0,b_weight2_A=0,b_weight3_A=0,
b_vulner_A=0,
b_co2_A=0,
b_incentive1_A=0,b_incentive2_A=0,b_incentive3_A=0,
b_dpenalty1_A=0, b_dpenalty2_A=0, b_dpenalty3_A=0,
b_retailer_A=0,
b_tariff1_A=0, b_tariff2_A=0, b_tariff3_A=0,
b_acquaint1_B=0,b_acquaint2_B=0,b_acquaint3_B=0,
b_passport_B=0,
b_tele_B=0,b_home_B=0,
# alternative-specific attributes
b_DetourdistP1_B=0, b_DetourdistP2_B=0, b_DetourdistP3_B=0,
b_DetourdistD1_B=0, b_DetourdistD2_B=0, b_DetourdistD3_B=0,
b_size1_B=0,b_size2_B=0,b_size3_B=0,
b_weight1_B=0,b_weight2_B=0,b_weight3_B=0,
b_vulner_B=0,
b_co2_B=0,
b_incentive1_B=0,b_incentive2_B=0,b_incentive3_B=0,
b_dpenalty1_B=0, b_dpenalty2_B=0, b_dpenalty3_B=0,
b_retailer_B=0,
b_tariff1_B=0, b_tariff2_B=0, b_tariff3_B=0,
# travel parameters
# travel parameters
b_purpose1_A = -0.094, b_purpose4_A = 0.406, b_purpose7_A = 0.164, b_purpose9_A = 0.47,
b_trfrequency1_A=-0.355, b_trfrequency2_A=0.18, b_trfrequency7_A=-0.02,
b_trpressure1_A = -0.481, b_trpressure2_A = -0.034,
b_nrow1_A = 0.531,b_nrow2_A = 0.94,b_nrow3_A = -0.48,
b_firstmode1_A=-0.068,b_firstmode2_A=-0.47,b_firstmode3_A=-0.48,b_firstmode4_A=0.81,
b_firstmode5_A=-0.27,b_firstmode6_A=-0.94,b_firstmode7_A=1.048,
b_weather1_A=0.335, b_weather3_A=-0.23,
b_purpose1_B = -0.094, b_purpose4_B = 0.406, b_purpose7_B = 0.164, b_purpose9_B = 0.47,
b_trfrequency1_B=-0.355, b_trfrequency2_B=0.18, b_trfrequency7_B=-0.02,
b_trpressure1_B = -0.481, b_trpressure2_B = -0.034,
b_nrow1_B = 0.531,b_nrow2_B = 0.94,b_nrow3_B = -0.48,
b_firstmode1_B=-0.068,b_firstmode2_B=-0.47,b_firstmode3_B=-0.48,b_firstmode4_B=0.81,
b_firstmode5_B=-0.27,b_firstmode6_B=-0.94,b_firstmode7_B=1.048,
b_weather1_B=0.335, b_weather3_B=-0.23,
# socio-demos coefficients in structual component
gamma_LV_en_age1=0,gamma_LV_en_age4=0,
gamma_LV_en_male=0 ,
gamma_LV_en_hhincome1=0, gamma_LV_en_hhincome5=0, gamma_LV_en_hhincome9=0,
gamma_LV_en_composition1=0,gamma_LV_en_composition3=0,
gamma_LV_ec_age1=0,gamma_LV_ec_age4=0,
gamma_LV_ec_male=0 ,
gamma_LV_ec_hhincome1=0, gamma_LV_ec_hhincome5=0, gamma_LV_ec_hhincome9=0,
gamma_LV_ec_composition1=0,gamma_LV_ec_composition3=0,
gamma_LV_so_age1=0,gamma_LV_so_age4=0,
gamma_LV_so_male=0 ,
gamma_LV_so_hhincome1=0, gamma_LV_so_hhincome5=0, gamma_LV_so_hhincome9=0,
gamma_LV_so_composition1=0,gamma_LV_so_composition3=0,
## socio-demo coefficients in class
mu_agecombine1_A =0, mu_agecombine4_A =0,
mu_male_A=0,
mu_hhincombine1_A=0,mu_hhincombine5_A=0,mu_hhincombine9_A=0,
mu_composition1_A=0, mu_composition3_A=0,
mu_agecombine1_B =0.6, mu_agecombine4_B =-0.25,
mu_male_B=0.322,
mu_hhincombine1_B=0.06,mu_hhincombine5_B=0.179,mu_hhincombine9_B=0.396,
mu_composition1_B=0.022, mu_composition3_B=0.531,
delta_A = 0, delta_B = 0,
# LV
lambda_environ_A = 1, lambda_environ_B = 1,
lambda_eco_A = 1, lambda_eco_B = 1,
lambda_social_A = 1, lambda_social_B = 1,
# Measurement equations parameters-environment
zeta_environ1 = 1, zeta_environ2 = 1, zeta_environ3 = 1,
tau_environ1_1 =-2, tau_environ1_2 =-1, tau_environ1_3 = 1, tau_environ1_4 = 2,
tau_environ2_1 =-2, tau_environ2_2 =-1, tau_environ2_3 = 1, tau_environ2_4 = 2,
tau_environ3_1 =-2, tau_environ3_2 =-1, tau_environ3_3 = 1, tau_environ3_4 = 2,
zeta_eco2 = 1, zeta_eco3 = 1,
tau_eco2_1 =-2, tau_eco2_2 =-1, tau_eco2_3 = 1, tau_eco2_4 = 2,
tau_eco3_1 =-2, tau_eco3_2 =-1, tau_eco3_3 = 1, tau_eco3_4 = 2,
zeta_social2 = 1, zeta_social3 = 1,
tau_social2_1 =-2, tau_social2_2 =-1, tau_social2_3 = 1, tau_social2_4 = 2,
tau_social3_1 =-2, tau_social3_2 =-1, tau_social3_3 = 1, tau_social3_4 = 2
)
### Vector with names (in quotes) of parameters to be kept fixed at their starting value in apollo_beta,
# Use apollo_beta_fixed = c() if all parameters are to be estimated.
apollo_fixed = c("delta_A","mu_agecombine1_A" , "mu_agecombine4_A" ,
"mu_male_A",
"mu_hhincombine1_A","mu_hhincombine5_A","mu_hhincombine9_A",
"mu_composition1_A", "mu_composition3_A"
)
# ################################################################# #
#### DEFINE RANDOM COMPONENTS ####
# ################################################################# #
### Set parameters for generating draws
apollo_draws = list(
interDrawsType = "MLHS",
interNDraws = 400,
interNormDraws = c("draw_asc3",
"eta_en","eta_ec","eta_so")
)
### Create random parameters
apollo_randCoeff=function(apollo_beta, apollo_inputs){
randcoeff = list()
randcoeff[["asc3"]] = (mu_asc3 + sigma_asc3*draw_asc3)
randcoeff[["LV_en"]] =(gamma_LV_en_age1*age_combine_1 + gamma_LV_en_age4*age_combine_4
+ gamma_LV_en_male*gender_1
+ gamma_LV_en_hhincome1*hh_income_combine_1 + gamma_LV_en_hhincome5*hh_income_combine_5+ gamma_LV_en_hhincome9*hh_income_combine_9
+ gamma_LV_en_composition1*composition_combine_1 + gamma_LV_en_composition3*composition_combine_3
+ eta_en) # 这儿是不是没有sigma!! check !!
randcoeff[['LV_ec']] = (gamma_LV_ec_age1*age_combine_1 + gamma_LV_ec_age4*age_combine_4
+ gamma_LV_ec_male*gender_1
+ gamma_LV_ec_hhincome1*hh_income_combine_1 + gamma_LV_ec_hhincome5*hh_income_combine_5+ gamma_LV_ec_hhincome9*hh_income_combine_9
+ gamma_LV_ec_composition1*composition_combine_1 + gamma_LV_ec_composition3*composition_combine_3
+ eta_ec)
randcoeff[['LV_so']] = (gamma_LV_so_age1*age_combine_1 + gamma_LV_so_age4*age_combine_4
+ gamma_LV_so_male*gender_1
+ gamma_LV_so_hhincome1*hh_income_combine_1 + gamma_LV_so_hhincome5*hh_income_combine_5+ gamma_LV_so_hhincome9*hh_income_combine_9
+ gamma_LV_so_composition1*composition_combine_1 + gamma_LV_so_composition3*composition_combine_3
+ eta_so)
return(randcoeff)
}
# ################################################################# #
#### DEFINE LATENT CLASS COMPONENTS ####
# ################################################################# #
apollo_lcPars=function(apollo_beta, apollo_inputs){
lcpars = list()
# CPD attribute
lcpars[["b_acquaint1" ]] = list(b_acquaint1_A , b_acquaint1_B )
lcpars[["b_acquaint2" ]] = list(b_acquaint2_A , b_acquaint2_B )
lcpars[["b_acquaint3" ]] = list(b_acquaint3_A , b_acquaint3_B )
lcpars[["b_passport" ]] = list(b_passport_A , b_passport_B )
lcpars[["b_tele" ]] = list(b_tele_A , b_tele_B )
lcpars[["b_home" ]] = list(b_home_A , b_home_B )
lcpars[["b_size1" ]] = list(b_size1_A , b_size1_B )
lcpars[["b_size2" ]] = list(b_size2_A , b_size2_B )
lcpars[["b_size3" ]] = list(b_size3_A , b_size3_B )
lcpars[["b_weight1" ]] = list(b_weight1_A , b_weight1_B )
lcpars[["b_weight2" ]] = list(b_weight2_A , b_weight2_B )
lcpars[["b_weight3" ]] = list(b_weight3_A , b_weight3_B )
lcpars[["b_retailer" ]] = list(b_retailer_A , b_retailer_B )
lcpars[["b_vulner"]] = list(b_vulner_A, b_vulner_B)
lcpars[["b_incentive1" ]] = list(b_incentive1_A , b_incentive1_B )
lcpars[["b_incentive2" ]] = list(b_incentive2_A , b_incentive2_B )
lcpars[["b_incentive3" ]] = list(b_incentive3_A , b_incentive3_B )
lcpars[["b_dpenalty1" ]] = list(b_dpenalty1_A , b_dpenalty1_B )
lcpars[["b_dpenalty2" ]] = list(b_dpenalty2_A , b_dpenalty2_B )
lcpars[["b_dpenalty3" ]] = list(b_dpenalty3_A , b_dpenalty3_B )
lcpars[["b_tariff1" ]] = list(b_tariff1_A , b_tariff1_B )
lcpars[["b_tariff2" ]] = list(b_tariff2_A , b_tariff2_B )
lcpars[["b_tariff3" ]] = list(b_tariff3_A , b_tariff3_B )
lcpars[["b_co2" ]] = list(b_co2_A , b_co2_B )
lcpars[["b_DetourdistP1" ]] = list(b_DetourdistP1_A , b_DetourdistP1_B )
lcpars[["b_DetourdistP2" ]] = list(b_DetourdistP2_A , b_DetourdistP2_B )
lcpars[["b_DetourdistP3" ]] = list(b_DetourdistP3_A , b_DetourdistP3_B )
lcpars[["b_DetourdistD1" ]] = list(b_DetourdistD1_A , b_DetourdistD1_B )
lcpars[["b_DetourdistD2" ]] = list(b_DetourdistD2_A , b_DetourdistD2_B )
lcpars[["b_DetourdistD3" ]] = list(b_DetourdistD3_A , b_DetourdistD3_B )
# travel variables
lcpars[["b_purpose1" ]] = list(b_purpose1_A , b_purpose1_B )
lcpars[["b_purpose4" ]] = list(b_purpose4_A , b_purpose4_B )
lcpars[["b_purpose7" ]] = list(b_purpose7_A , b_purpose7_B )
lcpars[["b_purpose9" ]] = list(b_purpose9_A , b_purpose9_B )
lcpars[["b_trfrequency1" ]] = list(b_trfrequency1_A , b_trfrequency1_B )
lcpars[["b_trfrequency2" ]] = list(b_trfrequency2_A , b_trfrequency2_B )
lcpars[["b_trfrequency7" ]] = list(b_trfrequency7_A , b_trfrequency7_B )
lcpars[["b_trpressure1" ]] = list(b_trpressure1_A , b_trpressure1_B )
lcpars[["b_trpressure2" ]] = list(b_trpressure2_A , b_trpressure2_B )
lcpars[["b_nrow1" ]] = list(b_nrow1_A , b_nrow1_B )
lcpars[["b_nrow2" ]] = list(b_nrow2_A , b_nrow2_B )
lcpars[["b_nrow3" ]] = list(b_nrow3_A , b_nrow3_B )
lcpars[["b_firstmode1" ]] = list(b_firstmode1_A , b_firstmode1_B )
lcpars[["b_firstmode2" ]] = list(b_firstmode2_A , b_firstmode2_B )
lcpars[["b_firstmode3" ]] = list(b_firstmode3_A , b_firstmode3_B )
lcpars[["b_firstmode4" ]] = list(b_firstmode4_A , b_firstmode4_B )
lcpars[["b_firstmode5" ]] = list(b_firstmode5_A , b_firstmode5_B )
lcpars[["b_firstmode6" ]] = list(b_firstmode6_A , b_firstmode6_B )
lcpars[["b_firstmode7" ]] = list(b_firstmode7_A , b_firstmode7_B )
lcpars[["b_weather1" ]] = list(b_weather1_A , b_weather1_B )
lcpars[["b_weather3" ]] = list(b_weather3_A , b_weather3_B )
lcpars[["lambda_environ" ]] = list(lambda_environ_A , lambda_environ_B )
lcpars[["lambda_eco" ]] = list(lambda_eco_A , lambda_eco_B )
lcpars[["lambda_social" ]] = list(lambda_social_A , lambda_social_B )
V = list()
V[['class_a']] = (delta_A
# ? when we consider these, their parameters are either too big or too small
# but if we remove this, how to know the effect of socio-demos on class-membership component
+ mu_agecombine1_A*age_combine_1 + mu_agecombine4_A*age_combine_4
+ mu_male_A*gender_1
+ mu_hhincombine1_A*hh_income_combine_1+ mu_hhincombine5_A*hh_income_combine_5+ mu_hhincombine9_A*hh_income_combine_9
+ mu_composition1_A*composition_combine_1 + mu_composition3_A*composition_combine_3
+ lambda_environ_A*LV_en + lambda_eco_A*LV_ec + lambda_social_A*LV_so)
V[['class_b']] = (delta_B
+ mu_agecombine1_B*age_combine_1 + mu_agecombine4_B*age_combine_4
+ mu_male_B*gender_1
+ mu_hhincombine1_B*hh_income_combine_1+ mu_hhincombine5_B*hh_income_combine_5+ mu_hhincombine9_B*hh_income_combine_9
+ mu_composition1_B*composition_combine_1 + mu_composition3_B*composition_combine_3
+ lambda_environ_B*LV_en + lambda_eco_B*LV_ec + lambda_social_B*LV_so)
### 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)
}
# ################################################################# #
#### GROUP AND VALIDATE INPUTS ####
# ################################################################# #
apollo_inputs = apollo_validateInputs()
# ################################################################# #
#### DEFINE MODEL AND LIKELIHOOD FUNCTION ####
# ################################################################# #
apollo_probabilities=function(apollo_beta, apollo_inputs, functionality="estimate"){
### Initialise
apollo_attach(apollo_beta, apollo_inputs)
on.exit(apollo_detach(apollo_beta, apollo_inputs))
P = list()
### Likelihood of indicators_en
ol_settings1 = list(outcomeOrdered = environ1,
V = zeta_environ1*LV_en,
tau = list(tau_environ1_1, tau_environ1_2, tau_environ1_3, tau_environ1_4),
rows = (task==1),
componentName = "indic_environ1")
ol_settings2 = list(outcomeOrdered = environ2,
V = zeta_environ2*LV_en,
tau = list(tau_environ2_1, tau_environ2_2, tau_environ2_3, tau_environ2_4),
rows = (task==1),
componentName = "indic_environ2")
ol_settings3 = list(outcomeOrdered = environ3,
V = zeta_environ3*LV_en,
tau = list(tau_environ3_1, tau_environ3_2, tau_environ3_3, tau_environ3_4),
rows = (task==1),
componentName = "indic_environ3")
P[["indic_environ1"]] = apollo_ol(ol_settings1, functionality)
P[["indic_environ2"]] = apollo_ol(ol_settings2, functionality)
P[["indic_environ3"]] = apollo_ol(ol_settings3, functionality)
P[["indic_environ1"]] = apollo_panelProd(P[["indic_environ1"]] , apollo_inputs, functionality)
P[["indic_environ2"]] = apollo_panelProd(P[["indic_environ2"]] , apollo_inputs, functionality)
P[["indic_environ3"]] = apollo_panelProd(P[["indic_environ3"]] , apollo_inputs, functionality)
### Likelihood of indicators_eco
ol_settings5 = list(outcomeOrdered = eco2,
V = zeta_eco2*LV_ec,
tau = list(tau_eco2_1, tau_eco2_2, tau_eco2_3, tau_eco2_4),
rows = (task==1),
componentName = "indic_eco2")
ol_settings6 = list(outcomeOrdered = eco3,
V = zeta_eco3*LV_ec,
tau = list(tau_eco3_1, tau_eco3_2, tau_eco3_3, tau_eco3_4),
rows = (task==1),
componentName = "indic_eco3")
P[["indic_eco2"]] = apollo_ol(ol_settings5, functionality)
P[["indic_eco3"]] = apollo_ol(ol_settings6, functionality)
P[["indic_eco2"]] = apollo_panelProd(P[["indic_eco2"]] , apollo_inputs, functionality)
P[["indic_eco3"]] = apollo_panelProd(P[["indic_eco3"]] , apollo_inputs, functionality)
### Likelihood of indicators_so
ol_settings11 = list(outcomeOrdered = social2,
V = zeta_social2*LV_so,
tau = list(tau_social2_1, tau_social2_2, tau_social2_3, tau_social2_4),
rows = (task==1),
componentName = "indic_social2")
ol_settings12 = list(outcomeOrdered = social3,
V = zeta_social3*LV_so,
tau = list(tau_social3_1, tau_social3_2, tau_social3_3, tau_social3_4),
rows = (task==1),
componentName = "indic_social3")
P[["indic_social2"]] = apollo_ol(ol_settings11, functionality)
P[["indic_social3"]] = apollo_ol(ol_settings12, functionality)
P[["indic_social2"]] = apollo_panelProd(P[["indic_social2"]] , apollo_inputs, functionality)
P[["indic_social3"]] = apollo_panelProd(P[["indic_social3"]] , apollo_inputs, functionality)
### Likelihood of choices inside each class
S <- 2
for(s in 1:S){
### Utilities for alternatives
V = list()
V[["alt1"]] =
(b_acquaint1[[s]]*acquaint_1+ b_acquaint2[[s]]*acquaint_2+ b_acquaint3[[s]]*acquaint_3
+ b_tele[[s]]*tele_1 + b_passport[[s]]*passport_1 + b_home[[s]]*home_1
# alternative-specific attributes
+ b_DetourdistP1[[s]]*DetourdistP1_1+ b_DetourdistP2[[s]]*DetourdistP1_2+ b_DetourdistP3[[s]]*DetourdistP1_3
+ b_DetourdistD1[[s]]*DetourdistD1_1+ b_DetourdistD2[[s]]*DetourdistD1_2+ b_DetourdistD3[[s]]*DetourdistD1_3
+ b_size1[[s]]*dummysize1_1 + b_size2[[s]]*dummysize1_2 + b_size3[[s]]*dummysize1_3
+ b_weight1[[s]]*dummyweight1_1 + b_weight2[[s]]*dummyweight1_2 + b_weight3[[s]]*dummyweight1_3
+ b_vulner[[s]]*dummyvulner1_1
+ b_co2[[s]]*dummyco1_1
+ b_incentive1[[s]]*dummyincentive1_1 + b_incentive2[[s]]*dummyincentive1_2 + b_incentive3[[s]]*dummyincentive1_3
+ b_dpenalty1[[s]]*dummydpenalty1_1 + b_dpenalty2[[s]]*dummydpenalty1_2+ b_dpenalty3[[s]]*dummydpenalty1_3
+ b_retailer[[s]]*dummypickpoint1_1
+ b_tariff1[[s]]*dummytariff1_1 + b_tariff2[[s]]*dummytariff1_2 + b_tariff3[[s]]*dummytariff1_3
# travel variables
+ b_purpose1[[s]]*purpose_combine_1 + b_purpose4[[s]]*purpose_combine_4
+ b_purpose7[[s]]*purpose_combine_7 + b_purpose9[[s]]*purpose_combine_9
+ b_trfrequency1[[s]]*trfrequency_combine_1 + b_trfrequency2[[s]]*trfrequency_combine_2
+ b_trfrequency7[[s]]*trfrequency_combine_7
+ b_trpressure1[[s]]*trpressure_combine_1 + b_trpressure2[[s]]*trpressure_combine_2
+ b_nrow1[[s]]*nrow_new_combine_1+ b_nrow2[[s]]*nrow_new_combine_2+ b_nrow3[[s]]*nrow_new_combine_3
+ b_firstmode1[[s]]*firstmode_combine_1+ b_firstmode2[[s]]*firstmode_combine_2+ b_firstmode3[[s]]*firstmode_combine_3
+ b_firstmode4[[s]]*firstmode_combine_4+ b_firstmode5[[s]]*firstmode_combine_5+ b_firstmode6[[s]]*firstmode_combine_6
+ b_firstmode7[[s]]*firstmode_combine_7
+ b_weather1[[s]]*weather_web1_combine_1+ b_weather3[[s]]*weather_web1_combine_3
# LV
+ lambda_environ[[s]]*LV_en + lambda_eco[[s]]*LV_ec+lambda_social[[s]]*LV_so)
V[["alt2"]] = (asc2+ b_acquaint1[[s]]*acquaint_1+ b_acquaint2[[s]]*acquaint_2+ b_acquaint3[[s]]*acquaint_3
+ b_tele[[s]]*tele_1 + b_passport[[s]]*passport_1 + b_home[[s]]*home_1
# alternative-specific attributes
+ b_DetourdistP1[[s]]*DetourdistP2_1+ b_DetourdistP2[[s]]*DetourdistP2_2+ b_DetourdistP3[[s]]*DetourdistP2_3
+ b_DetourdistD1[[s]]*DetourdistD2_1+ b_DetourdistD2[[s]]*DetourdistD2_2+ b_DetourdistD3[[s]]*DetourdistD2_3
+ b_size1[[s]]*dummysize2_1 + b_size2[[s]]*dummysize2_2 + b_size3[[s]]*dummysize2_3
+ b_weight1[[s]]*dummyweight2_1 + b_weight2[[s]]*dummyweight2_2 + b_weight3[[s]]*dummyweight2_3
+ b_vulner[[s]]*dummyvulner2_1
+ b_co2[[s]]*dummyco2_1
+ b_incentive1[[s]]*dummyincentive2_1 + b_incentive2[[s]]*dummyincentive2_2 + b_incentive3[[s]]*dummyincentive2_3
+ b_dpenalty1[[s]]*dummydpenalty2_1 + b_dpenalty2[[s]]*dummydpenalty2_2+ b_dpenalty3[[s]]*dummydpenalty2_3
+ b_retailer[[s]]*dummypickpoint2_1
+ b_tariff1[[s]]*dummytariff2_1 + b_tariff2[[s]]*dummytariff2_2 + b_tariff3[[s]]*dummytariff2_3
+ b_purpose1[[s]]*purpose_combine_1 + b_purpose4[[s]]*purpose_combine_4
+ b_purpose7[[s]]*purpose_combine_7 + b_purpose9[[s]]*purpose_combine_9
+ b_trfrequency1[[s]]*trfrequency_combine_1 + b_trfrequency2[[s]]*trfrequency_combine_2
+ b_trfrequency7[[s]]*trfrequency_combine_7
+ b_trpressure1[[s]]*trpressure_combine_1 + b_trpressure2[[s]]*trpressure_combine_2
+ b_nrow1[[s]]*nrow_new_combine_1+ b_nrow2[[s]]*nrow_new_combine_2+ b_nrow3[[s]]*nrow_new_combine_3
+ b_firstmode1[[s]]*firstmode_combine_1+ b_firstmode2[[s]]*firstmode_combine_2+ b_firstmode3[[s]]*firstmode_combine_3
+ b_firstmode4[[s]]*firstmode_combine_4+ b_firstmode5[[s]]*firstmode_combine_5+ b_firstmode6[[s]]*firstmode_combine_6
+ b_firstmode7[[s]]*firstmode_combine_7
+ b_weather1[[s]]*weather_web1_combine_1+ b_weather3[[s]]*weather_web1_combine_3)
V[["alt3"]] =(asc3)
### Define settings for MNL model component
mnl_settings = list(
alternatives = c(alt1=1, alt2=2,alt3=3),
choiceVar = choice,
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[paste0("Class_", 1:S)], classProb=pi_values)
P[["choice"]] = apollo_lc(lc_settings, apollo_inputs, functionality)
### Comment out as necessary
P = apollo_combineModels(P, apollo_inputs, functionality)
P = apollo_avgInterDraws(P, apollo_inputs, functionality)
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}
# ################################################################# #
#### CALCULATE LL AT STARTING VALUES ####
# ################################################################# #
apollo_llCalc(apollo_beta, apollo_probabilities, apollo_inputs)
# ################################################################# #
#### MODEL ESTIMATION ####
# ################################################################# #
model = apollo_estimate(apollo_beta, apollo_fixed, apollo_probabilities, apollo_inputs)
# ################################################################# #
#### MODEL OUTPUTS ####
# ################################################################# #
# ----------------------------------------------------------------- #
#---- FORMATTED OUTPUT (TO SCREEN) ----
# ----------------------------------------------------------------- #
apollo_modelOutput(model)
# ----------------------------------------------------------------- #
#---- FORMATTED OUTPUT (TO FILE, using model name) ----
# ----------------------------------------------------------------- #
apollo_saveOutput(model)
I am reaching out to you again! I used effected coding as input variabels. When I use latent class model and also adjust the intial value of variables, it estimates very large estimates and Std as below. I attached my code after the results.
I also try the EM_LC. EM_LC can estimates proper weights but still with large Std. Is it caused by dataset? Or we have other solution for this?
Thank you in advance!
Best regards,
kiki
mu_agecombine1_A 0 NA NA NA NA
mu_agecombine4_A 0 NA NA NA NA
mu_male_A 0 NA NA NA NA
mu_hhincombine1_A 0 NA NA NA NA
mu_hhincombine5_A 0 NA NA NA NA
mu_hhincombine9_A 0 NA NA NA NA
mu_composition1_A 0 NA NA NA NA
mu_composition3_A 0 NA NA NA NA
mu_agecombine1_B -83.2135570007629 4737.64344975588 -0.0175643350714902 16.4513057974797 -5.05817337694318
mu_agecombine4_B 93.3843188251887 5263.55773464753 0.0177416727493048 17.0914482127562 5.46380374926283
mu_male_B -65.4640115521348 3871.91169753977 -0.0169074133570068 11.9501379686124 -5.47809671520775
mu_hhincombine1_B -17.7615826038814 6430.96719618672 -0.00276188356463912 8.37234385537564 -2.12145880660135
mu_hhincombine5_B -52.6943007777475 3536.15585646304 -0.0149015775652077 7.99574751260397 -6.59029073825601
mu_hhincombine9_B 20.2411876675291 2833.37856891902 0.00714383453364351 8.48404875286343 2.38579341740552
mu_composition1_B 28.4716257611836 1869.84643254619 0.0152267187644996 8.56417737248296 3.32450211186238
mu_composition3_B -116.681117738717 6639.29420303333 -0.0175743255488526 24.290894789095 -4.80349195662811
delta_A 0 NA NA NA NA
delta_B 25.4460833819998 2395.67648564759 0.0106216693006949 4.68335215366583 5.43330557837343
# ################################################################# #
#### LOAD LIBRARY AND DEFINE CORE SETTINGS ####
# ################################################################# #
### Initialise
rm(list = ls())
library(apollo)
apollo_initialise()
### Set core controls
apollo_control = list(
modelName = "Hybrid_LC_OL_and_MMNL",
modelDescr = "Hybrid latent class choice model, using ordered measurement model for indicators",
indivID = "ID",
nCores = 5,
outputDirectory = "output"
)
# ################################################################# #
#### LOAD DATA AND APPLY ANY TRANSFORMATIONS ####
# ################################################################# #
### Loading data from package
### if data is to be loaded from a file (e.g. called data.csv),
### the code would be: database = read.csv("data.csv",header=TRUE)
database = read.csv("/Users/romeechow/Desktop/数据预处理/DataProcess_III/datacombine2_effectcode2.csv",header=TRUE)
### for data dictionary, use ?apollo_swissRouteChoiceData
# ################################################################# #
#### DEFINE MODEL PARAMETERS ####
# ################################################################# #
### Vector of parameters, including any that are kept fixed in estimation
apollo_beta = c(
asc2=0,
mu_asc3 =0, sigma_asc3=0,
# Choice parameters
# CPD attributes
# context attributes
b_acquaint1_A=0,b_acquaint2_A=0,b_acquaint3_A=0,
b_passport_A=0,
b_tele_A=0,b_home_A=0,
# alternative-specific attributes
b_DetourdistP1_A=0, b_DetourdistP2_A=0, b_DetourdistP3_A=0,
b_DetourdistD1_A=0, b_DetourdistD2_A=0, b_DetourdistD3_A=0,
b_size1_A=0,b_size2_A=0,b_size3_A=0,
b_weight1_A=0,b_weight2_A=0,b_weight3_A=0,
b_vulner_A=0,
b_co2_A=0,
b_incentive1_A=0,b_incentive2_A=0,b_incentive3_A=0,
b_dpenalty1_A=0, b_dpenalty2_A=0, b_dpenalty3_A=0,
b_retailer_A=0,
b_tariff1_A=0, b_tariff2_A=0, b_tariff3_A=0,
b_acquaint1_B=0,b_acquaint2_B=0,b_acquaint3_B=0,
b_passport_B=0,
b_tele_B=0,b_home_B=0,
# alternative-specific attributes
b_DetourdistP1_B=0, b_DetourdistP2_B=0, b_DetourdistP3_B=0,
b_DetourdistD1_B=0, b_DetourdistD2_B=0, b_DetourdistD3_B=0,
b_size1_B=0,b_size2_B=0,b_size3_B=0,
b_weight1_B=0,b_weight2_B=0,b_weight3_B=0,
b_vulner_B=0,
b_co2_B=0,
b_incentive1_B=0,b_incentive2_B=0,b_incentive3_B=0,
b_dpenalty1_B=0, b_dpenalty2_B=0, b_dpenalty3_B=0,
b_retailer_B=0,
b_tariff1_B=0, b_tariff2_B=0, b_tariff3_B=0,
# travel parameters
# travel parameters
b_purpose1_A = -0.094, b_purpose4_A = 0.406, b_purpose7_A = 0.164, b_purpose9_A = 0.47,
b_trfrequency1_A=-0.355, b_trfrequency2_A=0.18, b_trfrequency7_A=-0.02,
b_trpressure1_A = -0.481, b_trpressure2_A = -0.034,
b_nrow1_A = 0.531,b_nrow2_A = 0.94,b_nrow3_A = -0.48,
b_firstmode1_A=-0.068,b_firstmode2_A=-0.47,b_firstmode3_A=-0.48,b_firstmode4_A=0.81,
b_firstmode5_A=-0.27,b_firstmode6_A=-0.94,b_firstmode7_A=1.048,
b_weather1_A=0.335, b_weather3_A=-0.23,
b_purpose1_B = -0.094, b_purpose4_B = 0.406, b_purpose7_B = 0.164, b_purpose9_B = 0.47,
b_trfrequency1_B=-0.355, b_trfrequency2_B=0.18, b_trfrequency7_B=-0.02,
b_trpressure1_B = -0.481, b_trpressure2_B = -0.034,
b_nrow1_B = 0.531,b_nrow2_B = 0.94,b_nrow3_B = -0.48,
b_firstmode1_B=-0.068,b_firstmode2_B=-0.47,b_firstmode3_B=-0.48,b_firstmode4_B=0.81,
b_firstmode5_B=-0.27,b_firstmode6_B=-0.94,b_firstmode7_B=1.048,
b_weather1_B=0.335, b_weather3_B=-0.23,
# socio-demos coefficients in structual component
gamma_LV_en_age1=0,gamma_LV_en_age4=0,
gamma_LV_en_male=0 ,
gamma_LV_en_hhincome1=0, gamma_LV_en_hhincome5=0, gamma_LV_en_hhincome9=0,
gamma_LV_en_composition1=0,gamma_LV_en_composition3=0,
gamma_LV_ec_age1=0,gamma_LV_ec_age4=0,
gamma_LV_ec_male=0 ,
gamma_LV_ec_hhincome1=0, gamma_LV_ec_hhincome5=0, gamma_LV_ec_hhincome9=0,
gamma_LV_ec_composition1=0,gamma_LV_ec_composition3=0,
gamma_LV_so_age1=0,gamma_LV_so_age4=0,
gamma_LV_so_male=0 ,
gamma_LV_so_hhincome1=0, gamma_LV_so_hhincome5=0, gamma_LV_so_hhincome9=0,
gamma_LV_so_composition1=0,gamma_LV_so_composition3=0,
## socio-demo coefficients in class
mu_agecombine1_A =0, mu_agecombine4_A =0,
mu_male_A=0,
mu_hhincombine1_A=0,mu_hhincombine5_A=0,mu_hhincombine9_A=0,
mu_composition1_A=0, mu_composition3_A=0,
mu_agecombine1_B =0.6, mu_agecombine4_B =-0.25,
mu_male_B=0.322,
mu_hhincombine1_B=0.06,mu_hhincombine5_B=0.179,mu_hhincombine9_B=0.396,
mu_composition1_B=0.022, mu_composition3_B=0.531,
delta_A = 0, delta_B = 0,
# LV
lambda_environ_A = 1, lambda_environ_B = 1,
lambda_eco_A = 1, lambda_eco_B = 1,
lambda_social_A = 1, lambda_social_B = 1,
# Measurement equations parameters-environment
zeta_environ1 = 1, zeta_environ2 = 1, zeta_environ3 = 1,
tau_environ1_1 =-2, tau_environ1_2 =-1, tau_environ1_3 = 1, tau_environ1_4 = 2,
tau_environ2_1 =-2, tau_environ2_2 =-1, tau_environ2_3 = 1, tau_environ2_4 = 2,
tau_environ3_1 =-2, tau_environ3_2 =-1, tau_environ3_3 = 1, tau_environ3_4 = 2,
zeta_eco2 = 1, zeta_eco3 = 1,
tau_eco2_1 =-2, tau_eco2_2 =-1, tau_eco2_3 = 1, tau_eco2_4 = 2,
tau_eco3_1 =-2, tau_eco3_2 =-1, tau_eco3_3 = 1, tau_eco3_4 = 2,
zeta_social2 = 1, zeta_social3 = 1,
tau_social2_1 =-2, tau_social2_2 =-1, tau_social2_3 = 1, tau_social2_4 = 2,
tau_social3_1 =-2, tau_social3_2 =-1, tau_social3_3 = 1, tau_social3_4 = 2
)
### Vector with names (in quotes) of parameters to be kept fixed at their starting value in apollo_beta,
# Use apollo_beta_fixed = c() if all parameters are to be estimated.
apollo_fixed = c("delta_A","mu_agecombine1_A" , "mu_agecombine4_A" ,
"mu_male_A",
"mu_hhincombine1_A","mu_hhincombine5_A","mu_hhincombine9_A",
"mu_composition1_A", "mu_composition3_A"
)
# ################################################################# #
#### DEFINE RANDOM COMPONENTS ####
# ################################################################# #
### Set parameters for generating draws
apollo_draws = list(
interDrawsType = "MLHS",
interNDraws = 400,
interNormDraws = c("draw_asc3",
"eta_en","eta_ec","eta_so")
)
### Create random parameters
apollo_randCoeff=function(apollo_beta, apollo_inputs){
randcoeff = list()
randcoeff[["asc3"]] = (mu_asc3 + sigma_asc3*draw_asc3)
randcoeff[["LV_en"]] =(gamma_LV_en_age1*age_combine_1 + gamma_LV_en_age4*age_combine_4
+ gamma_LV_en_male*gender_1
+ gamma_LV_en_hhincome1*hh_income_combine_1 + gamma_LV_en_hhincome5*hh_income_combine_5+ gamma_LV_en_hhincome9*hh_income_combine_9
+ gamma_LV_en_composition1*composition_combine_1 + gamma_LV_en_composition3*composition_combine_3
+ eta_en) # 这儿是不是没有sigma!! check !!
randcoeff[['LV_ec']] = (gamma_LV_ec_age1*age_combine_1 + gamma_LV_ec_age4*age_combine_4
+ gamma_LV_ec_male*gender_1
+ gamma_LV_ec_hhincome1*hh_income_combine_1 + gamma_LV_ec_hhincome5*hh_income_combine_5+ gamma_LV_ec_hhincome9*hh_income_combine_9
+ gamma_LV_ec_composition1*composition_combine_1 + gamma_LV_ec_composition3*composition_combine_3
+ eta_ec)
randcoeff[['LV_so']] = (gamma_LV_so_age1*age_combine_1 + gamma_LV_so_age4*age_combine_4
+ gamma_LV_so_male*gender_1
+ gamma_LV_so_hhincome1*hh_income_combine_1 + gamma_LV_so_hhincome5*hh_income_combine_5+ gamma_LV_so_hhincome9*hh_income_combine_9
+ gamma_LV_so_composition1*composition_combine_1 + gamma_LV_so_composition3*composition_combine_3
+ eta_so)
return(randcoeff)
}
# ################################################################# #
#### DEFINE LATENT CLASS COMPONENTS ####
# ################################################################# #
apollo_lcPars=function(apollo_beta, apollo_inputs){
lcpars = list()
# CPD attribute
lcpars[["b_acquaint1" ]] = list(b_acquaint1_A , b_acquaint1_B )
lcpars[["b_acquaint2" ]] = list(b_acquaint2_A , b_acquaint2_B )
lcpars[["b_acquaint3" ]] = list(b_acquaint3_A , b_acquaint3_B )
lcpars[["b_passport" ]] = list(b_passport_A , b_passport_B )
lcpars[["b_tele" ]] = list(b_tele_A , b_tele_B )
lcpars[["b_home" ]] = list(b_home_A , b_home_B )
lcpars[["b_size1" ]] = list(b_size1_A , b_size1_B )
lcpars[["b_size2" ]] = list(b_size2_A , b_size2_B )
lcpars[["b_size3" ]] = list(b_size3_A , b_size3_B )
lcpars[["b_weight1" ]] = list(b_weight1_A , b_weight1_B )
lcpars[["b_weight2" ]] = list(b_weight2_A , b_weight2_B )
lcpars[["b_weight3" ]] = list(b_weight3_A , b_weight3_B )
lcpars[["b_retailer" ]] = list(b_retailer_A , b_retailer_B )
lcpars[["b_vulner"]] = list(b_vulner_A, b_vulner_B)
lcpars[["b_incentive1" ]] = list(b_incentive1_A , b_incentive1_B )
lcpars[["b_incentive2" ]] = list(b_incentive2_A , b_incentive2_B )
lcpars[["b_incentive3" ]] = list(b_incentive3_A , b_incentive3_B )
lcpars[["b_dpenalty1" ]] = list(b_dpenalty1_A , b_dpenalty1_B )
lcpars[["b_dpenalty2" ]] = list(b_dpenalty2_A , b_dpenalty2_B )
lcpars[["b_dpenalty3" ]] = list(b_dpenalty3_A , b_dpenalty3_B )
lcpars[["b_tariff1" ]] = list(b_tariff1_A , b_tariff1_B )
lcpars[["b_tariff2" ]] = list(b_tariff2_A , b_tariff2_B )
lcpars[["b_tariff3" ]] = list(b_tariff3_A , b_tariff3_B )
lcpars[["b_co2" ]] = list(b_co2_A , b_co2_B )
lcpars[["b_DetourdistP1" ]] = list(b_DetourdistP1_A , b_DetourdistP1_B )
lcpars[["b_DetourdistP2" ]] = list(b_DetourdistP2_A , b_DetourdistP2_B )
lcpars[["b_DetourdistP3" ]] = list(b_DetourdistP3_A , b_DetourdistP3_B )
lcpars[["b_DetourdistD1" ]] = list(b_DetourdistD1_A , b_DetourdistD1_B )
lcpars[["b_DetourdistD2" ]] = list(b_DetourdistD2_A , b_DetourdistD2_B )
lcpars[["b_DetourdistD3" ]] = list(b_DetourdistD3_A , b_DetourdistD3_B )
# travel variables
lcpars[["b_purpose1" ]] = list(b_purpose1_A , b_purpose1_B )
lcpars[["b_purpose4" ]] = list(b_purpose4_A , b_purpose4_B )
lcpars[["b_purpose7" ]] = list(b_purpose7_A , b_purpose7_B )
lcpars[["b_purpose9" ]] = list(b_purpose9_A , b_purpose9_B )
lcpars[["b_trfrequency1" ]] = list(b_trfrequency1_A , b_trfrequency1_B )
lcpars[["b_trfrequency2" ]] = list(b_trfrequency2_A , b_trfrequency2_B )
lcpars[["b_trfrequency7" ]] = list(b_trfrequency7_A , b_trfrequency7_B )
lcpars[["b_trpressure1" ]] = list(b_trpressure1_A , b_trpressure1_B )
lcpars[["b_trpressure2" ]] = list(b_trpressure2_A , b_trpressure2_B )
lcpars[["b_nrow1" ]] = list(b_nrow1_A , b_nrow1_B )
lcpars[["b_nrow2" ]] = list(b_nrow2_A , b_nrow2_B )
lcpars[["b_nrow3" ]] = list(b_nrow3_A , b_nrow3_B )
lcpars[["b_firstmode1" ]] = list(b_firstmode1_A , b_firstmode1_B )
lcpars[["b_firstmode2" ]] = list(b_firstmode2_A , b_firstmode2_B )
lcpars[["b_firstmode3" ]] = list(b_firstmode3_A , b_firstmode3_B )
lcpars[["b_firstmode4" ]] = list(b_firstmode4_A , b_firstmode4_B )
lcpars[["b_firstmode5" ]] = list(b_firstmode5_A , b_firstmode5_B )
lcpars[["b_firstmode6" ]] = list(b_firstmode6_A , b_firstmode6_B )
lcpars[["b_firstmode7" ]] = list(b_firstmode7_A , b_firstmode7_B )
lcpars[["b_weather1" ]] = list(b_weather1_A , b_weather1_B )
lcpars[["b_weather3" ]] = list(b_weather3_A , b_weather3_B )
lcpars[["lambda_environ" ]] = list(lambda_environ_A , lambda_environ_B )
lcpars[["lambda_eco" ]] = list(lambda_eco_A , lambda_eco_B )
lcpars[["lambda_social" ]] = list(lambda_social_A , lambda_social_B )
V = list()
V[['class_a']] = (delta_A
# ? when we consider these, their parameters are either too big or too small
# but if we remove this, how to know the effect of socio-demos on class-membership component
+ mu_agecombine1_A*age_combine_1 + mu_agecombine4_A*age_combine_4
+ mu_male_A*gender_1
+ mu_hhincombine1_A*hh_income_combine_1+ mu_hhincombine5_A*hh_income_combine_5+ mu_hhincombine9_A*hh_income_combine_9
+ mu_composition1_A*composition_combine_1 + mu_composition3_A*composition_combine_3
+ lambda_environ_A*LV_en + lambda_eco_A*LV_ec + lambda_social_A*LV_so)
V[['class_b']] = (delta_B
+ mu_agecombine1_B*age_combine_1 + mu_agecombine4_B*age_combine_4
+ mu_male_B*gender_1
+ mu_hhincombine1_B*hh_income_combine_1+ mu_hhincombine5_B*hh_income_combine_5+ mu_hhincombine9_B*hh_income_combine_9
+ mu_composition1_B*composition_combine_1 + mu_composition3_B*composition_combine_3
+ lambda_environ_B*LV_en + lambda_eco_B*LV_ec + lambda_social_B*LV_so)
### 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)
}
# ################################################################# #
#### GROUP AND VALIDATE INPUTS ####
# ################################################################# #
apollo_inputs = apollo_validateInputs()
# ################################################################# #
#### DEFINE MODEL AND LIKELIHOOD FUNCTION ####
# ################################################################# #
apollo_probabilities=function(apollo_beta, apollo_inputs, functionality="estimate"){
### Initialise
apollo_attach(apollo_beta, apollo_inputs)
on.exit(apollo_detach(apollo_beta, apollo_inputs))
P = list()
### Likelihood of indicators_en
ol_settings1 = list(outcomeOrdered = environ1,
V = zeta_environ1*LV_en,
tau = list(tau_environ1_1, tau_environ1_2, tau_environ1_3, tau_environ1_4),
rows = (task==1),
componentName = "indic_environ1")
ol_settings2 = list(outcomeOrdered = environ2,
V = zeta_environ2*LV_en,
tau = list(tau_environ2_1, tau_environ2_2, tau_environ2_3, tau_environ2_4),
rows = (task==1),
componentName = "indic_environ2")
ol_settings3 = list(outcomeOrdered = environ3,
V = zeta_environ3*LV_en,
tau = list(tau_environ3_1, tau_environ3_2, tau_environ3_3, tau_environ3_4),
rows = (task==1),
componentName = "indic_environ3")
P[["indic_environ1"]] = apollo_ol(ol_settings1, functionality)
P[["indic_environ2"]] = apollo_ol(ol_settings2, functionality)
P[["indic_environ3"]] = apollo_ol(ol_settings3, functionality)
P[["indic_environ1"]] = apollo_panelProd(P[["indic_environ1"]] , apollo_inputs, functionality)
P[["indic_environ2"]] = apollo_panelProd(P[["indic_environ2"]] , apollo_inputs, functionality)
P[["indic_environ3"]] = apollo_panelProd(P[["indic_environ3"]] , apollo_inputs, functionality)
### Likelihood of indicators_eco
ol_settings5 = list(outcomeOrdered = eco2,
V = zeta_eco2*LV_ec,
tau = list(tau_eco2_1, tau_eco2_2, tau_eco2_3, tau_eco2_4),
rows = (task==1),
componentName = "indic_eco2")
ol_settings6 = list(outcomeOrdered = eco3,
V = zeta_eco3*LV_ec,
tau = list(tau_eco3_1, tau_eco3_2, tau_eco3_3, tau_eco3_4),
rows = (task==1),
componentName = "indic_eco3")
P[["indic_eco2"]] = apollo_ol(ol_settings5, functionality)
P[["indic_eco3"]] = apollo_ol(ol_settings6, functionality)
P[["indic_eco2"]] = apollo_panelProd(P[["indic_eco2"]] , apollo_inputs, functionality)
P[["indic_eco3"]] = apollo_panelProd(P[["indic_eco3"]] , apollo_inputs, functionality)
### Likelihood of indicators_so
ol_settings11 = list(outcomeOrdered = social2,
V = zeta_social2*LV_so,
tau = list(tau_social2_1, tau_social2_2, tau_social2_3, tau_social2_4),
rows = (task==1),
componentName = "indic_social2")
ol_settings12 = list(outcomeOrdered = social3,
V = zeta_social3*LV_so,
tau = list(tau_social3_1, tau_social3_2, tau_social3_3, tau_social3_4),
rows = (task==1),
componentName = "indic_social3")
P[["indic_social2"]] = apollo_ol(ol_settings11, functionality)
P[["indic_social3"]] = apollo_ol(ol_settings12, functionality)
P[["indic_social2"]] = apollo_panelProd(P[["indic_social2"]] , apollo_inputs, functionality)
P[["indic_social3"]] = apollo_panelProd(P[["indic_social3"]] , apollo_inputs, functionality)
### Likelihood of choices inside each class
S <- 2
for(s in 1:S){
### Utilities for alternatives
V = list()
V[["alt1"]] =
(b_acquaint1[[s]]*acquaint_1+ b_acquaint2[[s]]*acquaint_2+ b_acquaint3[[s]]*acquaint_3
+ b_tele[[s]]*tele_1 + b_passport[[s]]*passport_1 + b_home[[s]]*home_1
# alternative-specific attributes
+ b_DetourdistP1[[s]]*DetourdistP1_1+ b_DetourdistP2[[s]]*DetourdistP1_2+ b_DetourdistP3[[s]]*DetourdistP1_3
+ b_DetourdistD1[[s]]*DetourdistD1_1+ b_DetourdistD2[[s]]*DetourdistD1_2+ b_DetourdistD3[[s]]*DetourdistD1_3
+ b_size1[[s]]*dummysize1_1 + b_size2[[s]]*dummysize1_2 + b_size3[[s]]*dummysize1_3
+ b_weight1[[s]]*dummyweight1_1 + b_weight2[[s]]*dummyweight1_2 + b_weight3[[s]]*dummyweight1_3
+ b_vulner[[s]]*dummyvulner1_1
+ b_co2[[s]]*dummyco1_1
+ b_incentive1[[s]]*dummyincentive1_1 + b_incentive2[[s]]*dummyincentive1_2 + b_incentive3[[s]]*dummyincentive1_3
+ b_dpenalty1[[s]]*dummydpenalty1_1 + b_dpenalty2[[s]]*dummydpenalty1_2+ b_dpenalty3[[s]]*dummydpenalty1_3
+ b_retailer[[s]]*dummypickpoint1_1
+ b_tariff1[[s]]*dummytariff1_1 + b_tariff2[[s]]*dummytariff1_2 + b_tariff3[[s]]*dummytariff1_3
# travel variables
+ b_purpose1[[s]]*purpose_combine_1 + b_purpose4[[s]]*purpose_combine_4
+ b_purpose7[[s]]*purpose_combine_7 + b_purpose9[[s]]*purpose_combine_9
+ b_trfrequency1[[s]]*trfrequency_combine_1 + b_trfrequency2[[s]]*trfrequency_combine_2
+ b_trfrequency7[[s]]*trfrequency_combine_7
+ b_trpressure1[[s]]*trpressure_combine_1 + b_trpressure2[[s]]*trpressure_combine_2
+ b_nrow1[[s]]*nrow_new_combine_1+ b_nrow2[[s]]*nrow_new_combine_2+ b_nrow3[[s]]*nrow_new_combine_3
+ b_firstmode1[[s]]*firstmode_combine_1+ b_firstmode2[[s]]*firstmode_combine_2+ b_firstmode3[[s]]*firstmode_combine_3
+ b_firstmode4[[s]]*firstmode_combine_4+ b_firstmode5[[s]]*firstmode_combine_5+ b_firstmode6[[s]]*firstmode_combine_6
+ b_firstmode7[[s]]*firstmode_combine_7
+ b_weather1[[s]]*weather_web1_combine_1+ b_weather3[[s]]*weather_web1_combine_3
# LV
+ lambda_environ[[s]]*LV_en + lambda_eco[[s]]*LV_ec+lambda_social[[s]]*LV_so)
V[["alt2"]] = (asc2+ b_acquaint1[[s]]*acquaint_1+ b_acquaint2[[s]]*acquaint_2+ b_acquaint3[[s]]*acquaint_3
+ b_tele[[s]]*tele_1 + b_passport[[s]]*passport_1 + b_home[[s]]*home_1
# alternative-specific attributes
+ b_DetourdistP1[[s]]*DetourdistP2_1+ b_DetourdistP2[[s]]*DetourdistP2_2+ b_DetourdistP3[[s]]*DetourdistP2_3
+ b_DetourdistD1[[s]]*DetourdistD2_1+ b_DetourdistD2[[s]]*DetourdistD2_2+ b_DetourdistD3[[s]]*DetourdistD2_3
+ b_size1[[s]]*dummysize2_1 + b_size2[[s]]*dummysize2_2 + b_size3[[s]]*dummysize2_3
+ b_weight1[[s]]*dummyweight2_1 + b_weight2[[s]]*dummyweight2_2 + b_weight3[[s]]*dummyweight2_3
+ b_vulner[[s]]*dummyvulner2_1
+ b_co2[[s]]*dummyco2_1
+ b_incentive1[[s]]*dummyincentive2_1 + b_incentive2[[s]]*dummyincentive2_2 + b_incentive3[[s]]*dummyincentive2_3
+ b_dpenalty1[[s]]*dummydpenalty2_1 + b_dpenalty2[[s]]*dummydpenalty2_2+ b_dpenalty3[[s]]*dummydpenalty2_3
+ b_retailer[[s]]*dummypickpoint2_1
+ b_tariff1[[s]]*dummytariff2_1 + b_tariff2[[s]]*dummytariff2_2 + b_tariff3[[s]]*dummytariff2_3
+ b_purpose1[[s]]*purpose_combine_1 + b_purpose4[[s]]*purpose_combine_4
+ b_purpose7[[s]]*purpose_combine_7 + b_purpose9[[s]]*purpose_combine_9
+ b_trfrequency1[[s]]*trfrequency_combine_1 + b_trfrequency2[[s]]*trfrequency_combine_2
+ b_trfrequency7[[s]]*trfrequency_combine_7
+ b_trpressure1[[s]]*trpressure_combine_1 + b_trpressure2[[s]]*trpressure_combine_2
+ b_nrow1[[s]]*nrow_new_combine_1+ b_nrow2[[s]]*nrow_new_combine_2+ b_nrow3[[s]]*nrow_new_combine_3
+ b_firstmode1[[s]]*firstmode_combine_1+ b_firstmode2[[s]]*firstmode_combine_2+ b_firstmode3[[s]]*firstmode_combine_3
+ b_firstmode4[[s]]*firstmode_combine_4+ b_firstmode5[[s]]*firstmode_combine_5+ b_firstmode6[[s]]*firstmode_combine_6
+ b_firstmode7[[s]]*firstmode_combine_7
+ b_weather1[[s]]*weather_web1_combine_1+ b_weather3[[s]]*weather_web1_combine_3)
V[["alt3"]] =(asc3)
### Define settings for MNL model component
mnl_settings = list(
alternatives = c(alt1=1, alt2=2,alt3=3),
choiceVar = choice,
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[paste0("Class_", 1:S)], classProb=pi_values)
P[["choice"]] = apollo_lc(lc_settings, apollo_inputs, functionality)
### Comment out as necessary
P = apollo_combineModels(P, apollo_inputs, functionality)
P = apollo_avgInterDraws(P, apollo_inputs, functionality)
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}
# ################################################################# #
#### CALCULATE LL AT STARTING VALUES ####
# ################################################################# #
apollo_llCalc(apollo_beta, apollo_probabilities, apollo_inputs)
# ################################################################# #
#### MODEL ESTIMATION ####
# ################################################################# #
model = apollo_estimate(apollo_beta, apollo_fixed, apollo_probabilities, apollo_inputs)
# ################################################################# #
#### MODEL OUTPUTS ####
# ################################################################# #
# ----------------------------------------------------------------- #
#---- FORMATTED OUTPUT (TO SCREEN) ----
# ----------------------------------------------------------------- #
apollo_modelOutput(model)
# ----------------------------------------------------------------- #
#---- FORMATTED OUTPUT (TO FILE, using model name) ----
# ----------------------------------------------------------------- #
apollo_saveOutput(model)