I want to set up a design for a conjoint-analysis with 5 Variables X1, X2, X3, X4, X5. All variables are factors.

X1 can have 5 different realisations, X2 can have 3, X3 can have 4, X4 can have 3 and X5 can have 2. So there are 360 different combinations of the 5 variables.

I will have around 500 to 600 participants. Each of them will see 8 different choice-sets + 2 additional hold-out-task sets.

Every participant can choose between 3 different offers or the "no-choice" option.

My goal is to find out how important each of the 5 variables is. But I am expecting an interactions-effect between X1 und X3.

All combinations of the 5 variables are plausible in real life and therefor should be used.

My approach to this problem so far:

Im generating a full design with gen.factorial:

dat <- gen.factorial(c(5,3,4,3,2), factors="all")

After this I am using optFederov (which doesn't do anything since its a full design I guess?)

dat.frac <- optFederov(~.^2,dat,nTrials=360, criterion="D", nRepeats=20)

To split the design into Blocks I use optBlock

dat.frac.block2 <- optBlock(~.^2,dat.frac$design,blocksize=rep(8,45),criterion="D", nRepeats = 10)

I am not sure if this function does more than randomising, since it is a full design?

So far i think my approach is ok? I have my set for alternative 1 for all the 360 possible combinations:


The first 8 lines in there are Block1, the second 8 Block2 and so on.

Unfortunately I am not sure about how to creating the additional alternative 2 and alternative 3.

I tried the function rotation.design like this:

des_number <- rotation.design(
  candidate.array = data_set,
  attribute.names = list(
    X1 = c("1", "2", "3", "4", "5"),
    X2 = c("1", "2", "3"),
    X3 = c("1", "2", "3", "4"),
    X4 = c("1", "2", "3"),
    X5 = c("1", "2")),
  nalternatives = 3,
  nblocks = 1,
  row.renames = FALSE,
  randomize = TRUE,
  seed = 123)

Using this function does rearrange my Blocks (but I think I don't want them to be rearranged, because I used optBlock just before to arrange them the way they are).

Is rotation.design an appropriate function for my problem and I simply have to reorder my data again (back to the order after optBlock)?

Is there anything I have to take into account specifically when trying to include a 2-way interaction?

For data-analyzing I want to use hierarchial bayes (using ChoiceModelR).

I hope you can understand my problem. I can provide further information if needed.


1 Answer 1


Few comments:

1/ A full factorial design is likely to be an inefficient approach - It will in fact allow you to do more than needed (e.g. to investigate three-ways interaction effects, so on). You should consider using experimental designing techniques such as orthogonal or efficient designs to select a subset of all possible combinations.

2/ It is important to make a distinction between plausible and important interaction effects - In real life situations it seems that interaction effects are everywhere, but when you design a choice experiment your main objective is to quantify the influence of the key drivers of individuals' choice behaviour, therefore it is fine to omit "plausible but not so important" effects (such as some interaction effects) - Of course the answer to this question is likely to be study specific. From a technical perspective, interaction effects cost a lot (i.e., require a significant increase in the number of tasks to be included in the experimental design), so probably worth balancing pros and cons of investigating interaction effects.

3/ If you generate an orthogonal design (OD) (and a full factorial design would be considered as an OD), then you can use different methods to generate the 2nd (3rd, etc.) options. One popular method is known as mirror image or fold-over. It basically consists in taking the opposite value of every factor (e.g. QUALITY can take 3 levels {Low; Medium; High} and in option A QUALITY="Low", then in option_B it will be QUALITY="High" [The mirror/opposite value]).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.