BookmarkSubscribeRSS Feed
welovekhy
Calcite | Level 5

Hi,

 

I am designing a discrete choice experiment for five factors (three factors with two levels; and two factors with three levels). I think there should be an orthogonal design for 36 questions at 100% D-efficiency but I just cannot find a way to do so. I ran the following:

 

%MktRuns(2 2 3 2 3)
%MktEx (2 2 3 2 3, n=72)
%choiceff(data=design, model=class(x1-x5/sta),
nsets=36, flags=2, maxiter=100, seed=121, options=relative, beta=zero)

 

However, the design I am getting is not orthogonal, and the max D-efficiency design I got is around 85. Is there something I am missing for the steps to design the choice experiments? Thank you very much for your time and input in advance.

 

Regards,

Kim 

3 REPLIES 3
PaigeMiller
Diamond | Level 26

In terms of a factorial design, if you have three factors at 2 levels and two factors at three levels, then a full factorial would be

 

2x2x2x3x3 = 72 runs

 

You could take a one-half fraction of the 2x2x2 part, which would yield 36 runs, and would be perfectly orthogonal (D-Efficiency of 100% for the proper model), but you could not estimate the three-way interaction between the three 2-level factors. PROC FACTEX can do this for you.

--
Paige Miller
welovekhy
Calcite | Level 5

Thank you very much for the reply! 

 

I am referring to the methods to use SAS macros in "Kuhfeld, W. (2010). Marketing research methods in SAS. Cary, NC, SAS-Institute TS-722, 1–1309.", and below are the syntax I used to create the design- but with even 100 iterations, and despite that MktRuns suggest that 18 questions should be able to create a 100% efficient design, the design created only achieves 80% efficiency and not balanced, and not orthogonal. Any suggestions would be greatly appreciated!!

 

SAS Syntax: 
*Version 1
%MktRuns(3**6) 
%MktEx (3**6, n=36)
%mktlab(data=design, int=f1-f2, out=final)
%choiceff(data=Final, model=class(x1-x6/sta), nsets=18, flags=f1-f2, seed=145, maxiter=100, options=relative, beta=zero)
 
*Version 2 
%MktRuns(3**6) 
%MktEx (18 3**6, n=36, seed=238, balance=12)
%mktlab(data=randomized, vars=Set x1-x6)
proc sort data=Final; by set; run; 
proc print; by set; id set; run; 
 
%choiceff(data=final, init=final(keep=set), model=class(x1-x6/sta), 
nsets=18, nalts=2, options=relative, beta=zero)
%mkteval(data=Best)
 
*Version 3 
%MktRuns(3**6) 
%MktEx (3**6, n=3*3*3*3*3*3)
%choiceff(data=design, model=class(x1-x6/sta), nsets=18, flags=f1-f2, seed=145, maxiter=100, options=relative, beta=zero)
 
 
PaigeMiller
Diamond | Level 26

Create a 3x3 full factorial in PROC FACTEX. Output the results to a data set.

 

Next, create a one-half fraction of the 2x2x2 matrix in PROC FACTEX, and then output the results to a data set, using the DESIGNREP= option, the name of the 3x3 full factorial data set being pointed to by the DESIGNREP= option.

 

Here is an example: https://documentation.sas.com/?cdcId=pgmmvacdc&cdcVersion=9.4&docsetId=qcug&docsetTarget=qcug_factex...

 

--
Paige Miller

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
Mastering the WHERE Clause in PROC SQL

SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 946 views
  • 0 likes
  • 2 in conversation