Page 1 of 1

Problem estimating utility in mdcev model

Posted: 05 Jul 2023, 15:25
by IreneGiraud
I tried to adapt the example given in the website to my data but get the error message "Error in apollo_mdcev(mdcev_settings, functionality) :
The mdcev_settings list for model component "MDCEV needs to include an object called "V"!
What is wrong with what i have written? I am new to r so if anything else is wrong, please let me know, thank you very much!

rm(list = ls())
library(apollo)
apollo_initialise()
apollo_control = list(modelName = "MDCEV_no_outside_good",
modelDescr = "MDCEV model ",
indivID = "id",
outputDirectory = "output"
)
database = read.csv("données.csv",header=TRUE)
database = database[order(database$id), ]
apollo_beta = c(alpha_base = 0,
gamma_public_faible = 1,
gamma_privé_faible = 1,
gamma_public_forte = 1,
gamma_privé_forte = 1,
gamma_public_faible_femme =0,
gamma_privé_faible_femme = 0,
gamma_privé_forte_femme =0,
gamma_public_forte_femme = 0,
delta_public_faible = 0,
delta_privé_faible = 0,
delta_privé_forte = 0,
delta_public_forte = 0,
delta_public_faible_femme =0,
delta_privé_faible_femme = 0,
delta_privé_forte_femme =0,
delta_public_forte_femme = 0,
sig = 1)
apollo_fixed = c("sig","delta_public_forte")
apollo_inputs = apollo_validateInputs()
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 individual alternatives
alternatives = c("public_forte","public_faible","privé_faible", "privé_forte")

### Define availabilities
avail = list(public_forte = 1,
public_faible = 1,
privé_faible = 1,
privé_forte = 1)

### Define continuous consumption for individual alternatives
continuousChoice = list(public_forte = continu_public_forte,
public_faible = continu_public_faible,
privé_faible = continu_privé_faible,
privé_forte = continu_privé_forte)

### Define utilities for individual alternatives
V = list()
V[["public_forte"]] = delta_public_forte+ delta_public_forte_femme * genre + gamma_public_forte_femme * genre
V[["public_faible"]] = delta_public_faible + delta_public_faible_femme * genre + gamma_public_faible_femme * genre
V[["privé_faible"]] = delta_privé_faible + delta_privé_faible_femme * genre + gamma_privé_faible_femme * genre
V[["privé_forte"]] = delta_privé_forte + delta_privé_forte_femme * genre + gamma_privé_forte_femme * genre

### Define alpha parameters
alpha = list(public_forte = 1 /(1 + exp(-alpha_base)),
public_faible = 1 /(1 + exp(-alpha_base)),
privé_faible = 1 /(1 + exp(-alpha_base)),
privé_forte = 1 /(1 + exp(-alpha_base)))

### Define gamma parameters
gamma = list(public_forte = gamma_public_forte,
public_faible = gamma_public_faible,
privé_faible = gamma_privé_faible,
privé_forte = gamma_privé_forte)

### Define costs for individual alternatives
cost = list(public_forte = 1,
public_faible = 1,
privé_faible = 1,
privé_forte = 1)

### Define settings for MDCEV model
mdcev_settings <- list(alternatives = alternatives,
avail = avail,
continuousChoice = continuousChoice,
utilities = V,
alpha = alpha,
gamma = gamma,
sigma = sig,
cost = cost,
budget = budget)
### Compute probabilities using MDCEV model
P[["model"]] = apollo_mdcev(mdcev_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 = apollo_estimate(apollo_beta, apollo_fixed, apollo_probabilities, apollo_inputs)
apollo_modelOutput(model)
apollo_saveOutput(model)
predictions_base = apollo_prediction(model, apollo_probabilities, apollo_inputs)

Re: Problem estimating utility in mdcev model

Posted: 05 Jul 2023, 17:01
by stephanehess
Hi

are you maybe using an old version of Apollo?

Stephane