cbc_choices {cbcTools} | R Documentation |
Simulate choices for a survey design
Description
Simulate choices for a survey design, either randomly or according to a utility model defined by user-provided prior parameters. All choices are simulated using the 'logitr' package. For more details see the JSS article on the 'logitr' package (Helveston, 2023).
Usage
cbc_choices(design, obsID = "obsID", priors = NULL, n_draws = 100)
Arguments
design |
A data frame of a survey design. |
obsID |
The name of the column in |
priors |
A list of one or more prior parameters that define a prior
(assumed) utility model used to simulate choices for the |
n_draws |
The number of Halton draws to use for simulated choices
for mixed logit models. Defaults to |
Value
Returns the design
data frame with an additional choice
column
identifying the simulated choices.
References
Helveston, J. P. (2023). logitr: Fast Estimation of Multinomial and Mixed Logit Models with Preference Space and Willingness-to-Pay Space Utility Parameterizations. Journal of Statistical Software, 105(10), 1–37, doi:10.18637/jss.v105.i10
Examples
library(cbcTools)
# A simple conjoint experiment about apples
# Generate all possible profiles
profiles <- cbc_profiles(
price = c(1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5),
type = c("Fuji", "Gala", "Honeycrisp"),
freshness = c('Poor', 'Average', 'Excellent')
)
# Make a survey design from all possible profiles
# (This is the default setting where method = 'full' for "full factorial")
design <- cbc_design(
profiles = profiles,
n_resp = 300, # Number of respondents
n_alts = 3, # Number of alternatives per question
n_q = 6 # Number of questions per respondent
)
# Simulate random choices
data <- cbc_choices(
design = design,
obsID = "obsID"
)
# Simulate choices according to a prior utility model
data <- cbc_choices(
design = design,
obsID = "obsID",
priors = list(
price = 0.1,
type = c(0.1, 0.2),
freshness = c(0.1, 0.2)
)
)
# Simulate choices according to a prior model with interactions
data <- cbc_choices(
design = design,
obsID = "obsID",
priors = list(
price = 0.1,
type = c(0.1, 0.2),
freshness = c(0.1, 0.2),
`price*type` = c(0.1, 0.5)
)
)
# Simulate choices according to a prior utility model with random parameters
data <- cbc_choices(
design = design,
obsID = "obsID",
priors = list(
price = 0.1,
type = randN(mean = c(0.1, 0.2), sd = c(1, 2)),
freshness = c(0.1, 0.2)
)
)