Code owners
Assign users and groups as approvers for specific file changes. Learn more.
clogit_caseA_TR_wtp_log.R 3.42 KiB
#### Apollo standard script #####
library(apollo) # Load apollo package
database <- database_full %>%
filter(Treatment_A == "Treated")
#initialize model
apollo_initialise()
### Set core controls
apollo_control = list(
modelName = "Clogit case A TR wtp log",
modelDescr = "Conditonal logit model case A TR wtp log",
indivID ="id",
mixing = FALSE,
HB= FALSE,
nCores = 1,
outputDirectory = "Estimation_results/clogit"
)
##### Define model parameters depending on your attributes and model specification! ####
# set values to 0 for conditional logit model
apollo_beta=c(mu_natural = 0,
mu_walking = 0,
mu_rent = 0,
ASC_sq = 0)
### specify parameters that should be kept fixed, here = none
apollo_fixed = c()
### validate
apollo_inputs = apollo_validateInputs()
apollo_probabilities=function(apollo_beta, apollo_inputs, functionality="estimate"){
### Function initialisation: do not change the following three commands
### 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 (later integrated in mnl_settings below) ####
# Define utility functions here:
V = list()
V[['alt1']] = -mu_rent*(mu_natural * Naturalness_1 + mu_walking * WalkingDistance_1 - log(Rent_1))
V[['alt2']] = -mu_rent*(mu_natural * Naturalness_2 + mu_walking * WalkingDistance_2 - log(Rent_2))
V[['alt3']] = -mu_rent*(mu_natural * Naturalness_3 + mu_walking * WalkingDistance_3 - log(Rent_3) + ASC_sq)
### Define settings for MNL model component
mnl_settings = list(
alternatives = c(alt1=1, alt2=2, alt3=3),
avail = 1, # all alternatives are available in every choice
choiceVar = choice,
V = V#, # tell function to use list vector defined above
)
### 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)
### Average across inter-individual draws - nur bei Mixed Logit!
#P = apollo_avgInterDraws(P, apollo_inputs, functionality)
### Prepare and return outputs of function
P = apollo_prepareProb(P, apollo_inputs, functionality)
return(P)
}
# ################################################################# #
#### MODEL ESTIMATION ##
# ################################################################# #
# estimate model with bfgs algorithm
clogit_caseA_TR_wtp_log = apollo_estimate(apollo_beta, apollo_fixed,
apollo_probabilities, apollo_inputs,
estimate_settings=list(maxIterations=400,
estimationRoutine="bfgs",
hessianRoutine="analytic"))
# ################################################################# #
#### MODEL OUTPUTS ##
# ################################################################# #
apollo_saveOutput(clogit_caseA_TR_wtp_log)