I would like to run a mixed logit model with both inter- and intra-individual Sobol draws with Faure-Tezuka scrambling.
However, I get an error message "Error in if (!any(scrambling == 0:3)) stop("invalid argument 'scrambling'") : missing value where TRUE/FALSE needed", after I implement the apollo_validateInputs command.
Code: Select all
apollo_inputs <- apollo_validateInputs()
The whole code from the start (everything runs smoothly until the apollo_validateInputs command):
Code: Select all
apollo_initialise()
apollo_control <- list(
modelName = "Apollo_MMNL",
modelDesc = "MMNL model on choice SP data",
indivID = "hhid_uganda",
mixing = TRUE,
nCores = 3,
seed = 123
)
apollo_draws <- list(
interDrawsType = "sobolFaureTezuka",
interNDraws = 50,
interNormDraws = c("inter_draws_child_m",
"inter_draws_child_w",
"inter_draws_child2_m",
"inter_draws_child2_w",
"inter_draws_educHalf_m",
"inter_draws_educHalf_w",
"inter_draws_educAll_m",
"inter_draws_educAll_w",
"inter_draws_healthMed_m",
"inter_draws_healthMed_w",
"inter_draws_healthHigh_m",
"inter_draws_healthHigh_w",
"inter_draws_nutrHalf_m",
"inter_draws_nutrHalf_w",
"inter_draws_nutrAll_m",
"inter_draws_nutrAll_w",
"inter_draws_delta_barg"),
interUnifDraws=c(),
intraDrawsType = "sobolFaureTezuka",
intraNDraws = 50,
intraNormDraws = c("intra_draws_child_m",
"intra_draws_child_w",
"intra_draws_child2_m",
"intra_draws_child2_w",
"intra_draws_educHalf_m",
"intra_draws_educHalf_w",
"intra_draws_educAll_m",
"intra_draws_educAll_w",
"intra_draws_healthMed_m",
"intra_draws_healthMed_w",
"intra_draws_healthHigh_m",
"intra_draws_healthHigh_w",
"intra_draws_nutrHalf_m",
"intra_draws_nutrHalf_w",
"intra_draws_nutrAll_m",
"intra_draws_nutrAll_w",
"intra_draws_delta_barg")
#intraUnifDraws=c()
)
database <- DCE
apollo_beta<- c(
mu_child_m = 0.17,
mu_child_w = 0.11,
mu_child2_m = -0.01,
mu_child2_w = -0.005,
mu_educHalf_m = 1.50,
mu_educHalf_w = 1.98,
mu_educAll_m = 2.76,
mu_educAll_w = 3.25,
mu_healthMed_m = 0.54,
mu_healthMed_w = 0.8,
mu_healthHigh_m = 1.15,
mu_healthHigh_w = 1.32,
mu_nutrHalf_m = 1.69,
mu_nutrHalf_w = 1.63,
mu_nutrAll_m = 1.99,
mu_nutrAll_w = 1.99,
mu_delta_barg = -0.69,
inter_sigma_child_m = 1,
inter_sigma_child_w = 1,
inter_sigma_child2_m = 1,
inter_sigma_child2_w = 1,
inter_sigma_educHalf_m = 1,
inter_sigma_educHalf_w = 1,
inter_sigma_educAll_m = 1,
inter_sigma_educAll_w = 1,
inter_sigma_healthMed_m = 1,
inter_sigma_healthMed_w = 1,
inter_sigma_healthHigh_m = 1,
inter_sigma_healthHigh_w = 1,
inter_sigma_nutrHalf_m = 1,
inter_sigma_nutrHalf_w = 1,
inter_sigma_nutrAll_m = 1,
inter_sigma_nutrAll_w = 1,
inter_sigma_delta_barg = 0.2,
intra_sigma_child_m = 1,
intra_sigma_child_w = 1,
intra_sigma_child2_m = 1,
intra_sigma_child2_w = 1,
intra_sigma_educHalf_m = 1,
intra_sigma_educHalf_w = 1,
intra_sigma_educAll_m = 1,
intra_sigma_educAll_w = 1,
intra_sigma_healthMed_m = 1,
intra_sigma_healthMed_w = 1,
intra_sigma_healthHigh_m = 1,
intra_sigma_healthHigh_w = 1,
intra_sigma_nutrHalf_m = 1,
intra_sigma_nutrHalf_w = 1,
intra_sigma_nutrAll_m = 1,
intra_sigma_nutrAll_w = 1,
intra_sigma_delta_barg = 0.2
)
apollo_fixed <- c()
apollo_inputs <- apollo_validateInputs()
For completeness I also add the full apollo_randCoeff function:
Code: Select all
apollo_randCoeff <- function(apollo_beta, apollo_inputs){
randcoeff=list()
randcoeff[["beta_child_m"]] <- mu_child_m + inter_sigma_child_m * inter_draws_child_m + intra_sigma_child_m * intra_draws_child_m
randcoeff[["beta_child_w"]] <- mu_child_w + inter_sigma_child_w * inter_draws_child_w + intra_sigma_child_w * intra_draws_child_w
randcoeff[["beta_child2_m"]] <- mu_child2_m + inter_sigma_child2_m * inter_draws_child2_m + intra_sigma_child2_m * intra_draws_child2_m
randcoeff[["beta_child2_w"]] <- mu_child2_w + inter_sigma_child2_w * inter_draws_child2_w + intra_sigma_child2_w * intra_draws_child2_w
randcoeff[["beta_educHalf_m"]] <- mu_educHalf_m + inter_sigma_educHalf_m * inter_draws_educHalf_m + intra_sigma_educHalf_m * intra_draws_educHalf_m
randcoeff[["beta_educHalf_w"]] <- mu_educHalf_w + inter_sigma_educHalf_w * inter_draws_educHalf_w + intra_sigma_educHalf_w * intra_draws_educHalf_w
randcoeff[["beta_educAll_m"]] <- mu_educAll_m + inter_sigma_educAll_m * inter_draws_educAll_m + intra_sigma_educAll_m * intra_draws_educAll_m
randcoeff[["beta_educAll_w"]] <- mu_educAll_w + inter_sigma_educAll_w * inter_draws_educAll_w + intra_sigma_educAll_w * intra_draws_educAll_w
randcoeff[["beta_healthMed_m"]] <- mu_healthMed_m + inter_sigma_healthMed_m * inter_draws_healthMed_m + intra_sigma_healthMed_m * intra_draws_healthMed_m
randcoeff[["beta_healthMed_w"]] <- mu_healthMed_w + inter_sigma_healthMed_w * inter_draws_healthMed_w + intra_sigma_healthMed_w * intra_draws_healthMed_w
randcoeff[["beta_healthHigh_m"]] <- mu_healthHigh_m + inter_sigma_healthHigh_m * inter_draws_healthHigh_m + intra_sigma_healthHigh_m * intra_draws_healthHigh_m
randcoeff[["beta_healthHigh_w"]] <- mu_healthHigh_w + inter_sigma_healthHigh_w * inter_draws_healthHigh_w + intra_sigma_healthHigh_w * intra_draws_healthHigh_w
randcoeff[["beta_nutrHalf_m"]] <- mu_nutrHalf_m + inter_sigma_nutrHalf_m * inter_draws_nutrHalf_m + intra_sigma_nutrHalf_m * intra_draws_nutrHalf_m
randcoeff[["beta_nutrHalf_w"]] <- mu_nutrHalf_w + inter_sigma_nutrHalf_w * inter_draws_nutrHalf_w + intra_sigma_nutrHalf_w * intra_draws_nutrHalf_w
randcoeff[["beta_nutrAll_m"]] <- mu_nutrAll_m + inter_sigma_nutrAll_m * inter_draws_nutrAll_m + intra_sigma_nutrAll_m * intra_draws_nutrAll_m
randcoeff[["beta_nutrAll_w"]] <- mu_nutrAll_w + inter_sigma_nutrAll_w * inter_draws_nutrAll_w + intra_sigma_nutrAll_w * intra_draws_nutrAll_w
randcoeff[["delta_barg"]] <- exp(mu_delta_barg + inter_sigma_delta_barg * inter_draws_delta_barg + intra_sigma_delta_barg * intra_draws_delta_barg)
return(randcoeff)
}
Best regards,
Kaat Van Hoyweghen