Converts a conjoint_design() into one forced-choice item per task:
the profiles are rendered as labeled descriptions, and the respondent
is asked to pick one by label.
Arguments
- design
A
conjoint_design()tibble (columnstask,profile, one column per attribute, and the attribute list inattr(design, "attributes")).- question
Question text shown above each task's profiles.
Value
A panel_instrument whose items are task-level choice items
(ids task_1, task_2, ...; options "Profile 1", "Profile 2",
...) and whose $conjoint field carries the design for amce().
Details
Only option order is randomized; item order stays fixed so the task ids remain interpretable. Attribute order inside each profile description follows the design's column order.
Examples
set.seed(110)
panel <- panel_from_margins(list(group = c(A = .5, B = .5)), n = 4)
design <- conjoint_design(
list(economy = c("weak", "strong"), taxes = c("lower", "higher")),
n_tasks = 3)
instr <- conjoint_instrument(design, "Which candidate do you prefer?")
instr
cfg <- LLMR::llm_config("groq", "openai/gpt-oss-20b")
if (FALSE) { # \dontrun{
panel_administer(panel, instr, cfg)
} # }