Skip to contents

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.

Usage

conjoint_instrument(design, question = "Which profile do you prefer?")

Arguments

design

A conjoint_design() tibble (columns task, profile, one column per attribute, and the attribute list in attr(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)
} # }