Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ExperimentalDesign.R 1.44 KiB
rm(list = ls(all = TRUE))
#Get package for Experimental design ready 
#install.packages("spdesign")
#install.packages("stats")
library(spdesign)
library(stats)

# Define list of utility functions ----
utility <- list(
   alt1 = "b_x1[0.1] * x1[seq(1, 100, by = 25)] + b_x2[0.3] * x2[c(0, 1)] +  b_x3[0.1] * x3[c(0, 1)]  +  b_x4[-0.2] * x4[seq(1, 1.5, 0.1)]",
   alt2 = "b_x1      * x1                       + b_x2      * x2          +  b_x3      * x3           +  b_x4       * x4"
   )

# Use the full factorial as the candidate set
candidate_set <- full_factorial(
   list(
     alt1_x1 = seq(1, 100, by = 25),
     alt1_x2 = c(0, 1),
     alt1_x3 = c(0, 1),
     alt1_x4 = seq(1, 1.5, 0.1),
     alt2_x1 = seq(1, 100, by = 25),
     alt2_x2 = c(0, 1),
     alt2_x3 = c(0, 1),
     alt2_x4 = seq(1, 1.5, 0.1)
      )
   )

#candidate_set <- candidate_set[!(candidate_set$alt1_x1 == 2 & candidate_set$alt1_x2 == 0 & candidate_set$alt1_x3 == 0), ]
#candidate_set <- candidate_set[!(candidate_set$alt2_x2 == 1 & candidate_set$alt2_x3 == 1), ]
 
# Generate designs ----
design <- generate_design(utility, rows = 20,
                           model = "mnl", efficiency_criteria = "d-error",
                           algorithm = "federov", draws = "scrambled-sobol",
                           candidate_set = candidate_set)

#Summary
summary(design)

saveRDS(design$design, "Projects/CSA/Designs/design1.RDS")

write.csv2(design$design, "Projects/CSA/Designs/design1.csv")