# ################################################################# # #### 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 ="Apollo_MNL2 con costo", modelDescr ="Simple MNL model SP data", indivID ="ID" ) # ################################################################# # #### LOAD DATA AND APPLY ANY TRANSFORMATIONS #### # ################################################################# # database = read.csv("database auto_bus2.csv",sep=";", header=TRUE) # ################################################################# # #### ANALYSIS OF CHOICES #### # ################################################################# # choiceAnalysis_settings <- list( alternatives = c(bus=1, auto=2), avail = 1, choiceVar = database$choice, explanators = database[,c("sex")] ) apollo_choiceAnalysis(choiceAnalysis_settings, apollo_control, database) # ################################################################# # #### DEFINE MODEL PARAMETERS #### # ################################################################# # ### Vector of parameters, including any that are kept fixed in estimation apollo_beta=c(asc_auto = 0, asc_bus = 0, b_tempo = 0, b_costo =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("asc_bus") # ################################################################# # #### 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() ### List of utilities: these must use the same names as in mnl_settings, order is irrelevant V = list() V[['bus']] = asc_bus + b_tempo * tempobus + b_costo * costobuskm V[['auto']] = asc_auto + b_tempo * tempoauto + b_costo * costoautokm ### Define settings for MNL model component mnl_settings = list( alternatives = c(bus=1, auto=2), avail = 1, choiceVar = choice, V = V ) ### Compute probabilities using MNL model P[['model']] = apollo_mnl(mnl_settings, functionality) ### Take product across observation for same individual # P = apollo_panelProd(P, apollo_inputs, functionality) ### Prepare and return outputs of function P = apollo_prepareProb(P, apollo_inputs, functionality) return(P) } # ################################################################# # #### MODEL ESTIMATION #### # ################################################################# # model = apollo_estimate(apollo_beta, apollo_fixed, apollo_probabilities, apollo_inputs) # ################################################################# # #### MODEL OUTPUTS #### # ################################################################# # # ----------------------------------------------------------------- # #---- FORMATTED OUTPUT (TO SCREEN) ---- # ----------------------------------------------------------------- # # apollo_modelOutput(model) apollo_modelOutput(model, modelOutput_settings=list(printPVal=TRUE) ) # ----------------------------------------------------------------- # #---- FORMATTED OUTPUT (TO FILE, using model name) ---- # ----------------------------------------------------------------- # apollo_saveOutput(model)