Resources

Discrete Choice 4

 /****************************************************************/
 /*          S A S   S A M P L E   L I B R A R Y                 */
 /*                                                              */
 /*    NAME: MR2010F                                             */
 /*   TITLE: Discrete Choice 4                                   */
 /* PRODUCT: STAT                                                */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS: marketing research                                  */
 /*   PROCS: PHREG, TRANSREG, OPTEX, FACTEX, PLAN, IML           */
 /*    DATA:                                                     */
 /*                                                              */
 /* SUPPORT: saswfk                      UPDATE:  01Oct2010      */
 /*     REF: MR-2010F Discrete Choice                            */
 /*    MISC: This file contains SAS code for the "Discrete       */
 /*          Choice" report, the 01Oct2010 edition, for SAS 9.2. */
 /*                                                              */
 /*          You must install the following macros from          */
 /* http://support.sas.com/techsup/tnote/tnote_stat.html#market  */
 /*                                                              */
 /*          ChoicEff Efficient Choice Designs                   */
 /*          MktAllo  Process a Choice Allocation Study Data Set */
 /*          MktBal   Balanced Experimental Design               */
 /*          MktBIBD  Balanced Incomplete Block Design           */
 /*          MktBlock Block an Experimental Design               */
 /*          MktBSize Balanced Incomplete Block Design Sizes     */
 /*          MktDes   Efficient Experimental Designs             */
 /*          MktDups  Eliminate Duplicate Runs or Choice Sets    */
 /*          MktEval  Evaluate an Experimental Design            */
 /*          MktEx    Efficient Experimental Designs             */
 /*          MktKey   Aid Making the MktRoll KEY= Data Set       */
 /*          MktLab   Change Names, Levels in a Design           */
 /*          MktMDiff MaxDiff (Best-Worst) Choice Modeling       */
 /*          MktMerge Merge a Choice Design with Choice Data     */
 /*          MktOrth  List Orthogonal Designs MktEx Can Make     */
 /*          MktPPro  Optimal Partial Profile Designs            */
 /*          MktRoll  Roll Out a Design Into a Choice Design     */
 /*          MktRuns  Experimental Design Sizes                  */
 /*          PhChoice Customize PROC PHREG for Choice Models     */
 /*                                                              */
 /****************************************************************/

%let mktopts = noseed;

************* Begin PHREG Output Customization **************;
options ls=80 ps=60 nonumber nodate;

%phchoice(on)

*********** Begin Asymmetric Vacation Example Code **********;

title 'Vacation Example with Asymmetry';

%mktruns(3 ** 14 4 2 2)

%mktex(3 ** 13 4 3 2 2, n=36, seed=205)

%mkteval(data=randomized)

title 'Vacation Example with Asymmetry';
%mktruns(3 ** 13 4 3 2 2, interact=x1*x11 x2*x12 x3*x13 x4*x14 x5*x15, max=45)

%mktex(3 ** 13 4 3 2 2, n=72, seed=368,
       interact=x1*x11 x2*x12 x3*x13 x4*x14 x5*x15)

data mat;
   do a = 1 to 17;
      b = .;
      output;
      end;
   do a = 1 to 5;
      b = 10 + a;
      output;
      end;
   run;

proc print; run;

%mktex(3 ** 13 4 3 2 2,             /* all attrs of all alternatives        */
       n=72,                        /* number of choice sets                */
       seed=368,                    /* random number seed                   */
       order=matrix=mat,            /* identifies pairs of cols to work on  */
       interact=x1*x11 x2*x12 x3*x13 x4*x14 x5*x15) /* interactions         */

* Due to machine differences, you might not get the same design if you run
* the step above, so here is the design that is used in the book;
data randomized; input x1-x17 @@; datalines;
2 2 1 1 3 2 1 2 2 3 2 1 1 2 2 2 2 3 2 3 1 2 1 3 3 1 1 1 1 1 3 2 2 2 1 1
3 2 1 1 1 1 3 3 3 3 1 4 1 1 2 2 3 1 1 3 1 3 2 3 1 3 3 3 1 2 2 2 3 3 3 1
1 2 2 3 3 2 3 2 2 1 2 1 2 3 3 2 3 3 1 1 2 1 2 2 1 3 3 2 1 1 3 3 2 1 2 1
1 3 2 1 3 3 2 2 1 1 1 1 1 1 2 1 2 3 1 3 2 2 2 2 2 1 1 1 2 2 1 2 1 1 1 1
2 3 1 2 2 1 2 2 2 1 3 2 2 2 1 3 2 2 1 3 2 3 2 3 1 2 1 1 3 1 2 1 1 2 1 3
1 1 3 1 1 2 2 1 2 3 3 3 1 2 1 1 2 3 1 3 1 1 1 1 3 1 1 1 3 3 2 2 1 2 1 3
2 2 3 2 2 3 1 2 3 1 1 2 2 2 2 1 2 1 2 3 1 1 3 2 2 2 1 3 1 2 3 1 2 1 2 1
1 1 2 1 3 1 3 1 3 1 1 3 3 1 2 3 3 3 2 2 2 3 1 3 2 2 3 2 3 2 2 1 2 4 1 1
2 3 1 3 2 1 2 2 1 1 1 2 1 2 2 3 2 2 2 3 1 1 1 1 2 2 1 2 3 2 1 4 1 1 1 2
2 2 3 2 2 2 1 2 2 3 1 1 3 1 1 2 3 3 3 2 2 3 3 1 3 3 1 2 2 3 1 1 1 2 2 3
2 3 2 3 2 3 3 1 1 3 4 3 2 1 3 2 2 1 1 3 1 2 3 2 3 3 3 3 3 2 1 2 1 2 1 2
2 3 1 1 3 3 2 3 2 2 1 1 2 1 2 3 2 3 1 1 3 2 3 1 2 2 3 2 1 3 1 2 1 3 2 1
3 3 1 1 1 3 4 1 1 2 2 2 3 3 1 3 3 3 2 1 2 3 3 3 1 2 2 1 2 1 2 2 1 2 3 3
1 1 1 2 3 3 2 1 2 1 3 2 1 2 1 3 2 1 3 3 3 3 2 1 1 3 3 1 3 2 2 3 1 2 3 3
1 3 1 3 2 2 3 3 1 2 1 3 1 1 1 2 1 3 1 2 2 2 1 2 2 3 2 3 1 2 1 3 2 1 3 1
3 2 1 2 3 1 3 1 1 3 2 2 2 1 2 2 1 4 2 2 1 1 2 2 1 2 1 3 1 1 2 2 3 2 4 2
2 2 1 3 2 3 3 2 1 3 1 1 2 2 1 1 2 2 1 1 3 2 3 3 3 3 3 2 2 1 3 3 1 3 1 2
2 1 2 3 1 1 2 2 3 3 2 3 2 1 3 2 1 2 1 2 1 2 3 3 1 1 1 1 3 1 3 3 1 2 2 1
1 2 2 2 1 3 2 2 1 3 3 2 2 1 1 1 3 1 3 2 2 2 3 3 1 3 1 1 2 2 2 2 2 3 3 2
2 3 2 1 3 2 2 3 3 1 2 1 2 2 1 1 3 2 3 1 2 3 1 1 2 1 1 1 1 2 2 3 2 3 1 2
2 1 1 1 1 3 3 4 1 2 1 1 2 3 3 3 2 3 2 1 1 1 3 2 2 1 1 2 1 1 1 2 3 3 3 2
2 2 2 1 3 3 1 1 2 3 1 1 3 3 1 3 1 3 1 3 3 1 3 1 2 1 2 3 2 1 3 3 3 3 1 3
1 1 2 1 1 2 1 1 1 2 3 2 3 2 3 2 3 2 3 3 2 1 2 2 3 2 1 1 1 1 2 3 3 2 2 2
3 2 1 2 1 3 2 2 3 3 1 1 3 3 3 2 3 1 4 3 1 1 1 1 3 2 1 2 3 3 2 2 1 1 1 1
3 2 1 1 2 3 3 2 3 1 2 2 2 3 2 2 4 2 2 1 2 2 3 2 3 3 2 3 3 3 3 2 1 2 1 2
2 2 2 1 3 1 1 3 1 1 3 2 1 3 2 2 1 1 3 1 3 3 3 3 2 3 1 3 3 2 3 4 2 1 2 3
2 1 1 2 2 2 1 2 3 1 3 1 1 3 1 1 1 3 3 1 1 1 1 1 3 1 2 1 3 2 3 1 2 3 2 1
2 1 2 3 3 1 2 2 2 1 4 3 1 2 1 3 2 2 3 3 2 1 2 1 1 1 1 4 2 2 1 1 2 1 2 2
2 2 2 1 1 3 3 3 1 1 2 1 2 2 3 1 3 3 1 1 1 1 2 2 1 1 3 1 1 1 1 2 2 3 2 2
1 2 1 3 2 2 3 3 2 2 3 3 2 2 1 2 1 2 1 3 3 3 1 3 1 2 2 1 1 2 1 1 3 3 3 3
2 3 1 1 2 2 2 1 1 1 3 1 3 1 2 3 2 3 2 1 2 3 3 1 1 2 1 3 2 2 1 1 3 1 2 2
2 2 4 3 2 2 1 3 1 1 1 3 1 3 1 3 3 3 2 4 3 1 1 3 2 3 1 3 2 3 1 3 2 3 2 3
4 2 2 1 1 3 3 3 2 2 2 2 3 3 2 3 1 3 3 1 1 3 1 1 2 2 3 2 2 2 1 3 1 2 4 2
1 1 1 2 2 1 1 2 2 2 3 3 1 2 2 3 2 1 2 3 3 1 1 3 2 1 1 2 2 2 2 2 3 1 2 1
;
data design; input x1-x17 @@; datalines;
1 1 1 3 2 1 1 3 1 1 1 2 2 3 3 1 2 1 1 1 3 2 2 2 2 1 2 3 3 1 2 3 1 1 1 1
1 3 3 3 3 3 3 2 3 1 2 4 2 2 1 1 1 2 1 1 1 2 3 2 3 1 1 2 1 2 1 2 1 1 2 1
3 2 1 2 1 2 2 2 2 4 2 2 2 1 1 3 2 3 1 2 3 1 1 3 2 1 2 3 2 1 1 1 3 2 3 2
2 1 2 1 1 3 2 1 1 2 1 1 2 1 1 2 2 2 1 3 3 2 3 2 1 1 1 1 1 2 1 1 3 2 3 3
1 3 1 3 1 2 3 2 2 1 2 1 2 1 1 1 1 3 2 1 3 3 2 1 2 1 1 2 1 2 1 2 3 2 2 3
3 2 3 4 3 1 2 1 2 2 1 1 3 1 1 2 2 3 3 3 3 2 2 1 1 2 2 2 2 1 2 2 3 1 3 1
2 1 1 2 2 1 2 2 3 3 3 2 1 3 3 2 2 1 3 3 2 2 1 2 3 2 1 1 1 2 2 2 2 1 2 3
3 1 1 1 2 3 2 2 3 1 3 3 2 2 3 1 1 3 1 2 1 3 1 1 1 2 3 2 2 1 2 3 1 3 1 1
2 1 3 1 3 3 1 2 3 2 3 2 2 3 1 1 1 1 1 3 2 2 2 3 2 2 3 1 1 3 3 4 2 2 1 1
3 2 2 3 2 1 3 3 1 3 1 1 3 1 1 2 1 3 2 3 2 1 3 1 1 1 2 1 3 2 2 2 1 1 3 2
3 2 3 1 1 3 2 1 2 1 2 1 1 2 1 3 3 1 1 3 3 1 1 3 3 2 2 4 1 1 1 1 3 3 3 1
3 3 2 2 3 1 1 1 1 1 2 2 1 3 3 3 3 1 2 1 2 1 3 3 3 3 2 2 2 2 1 1 1 2 1 1
2 2 2 3 1 1 4 2 2 1 2 1 1 1 3 2 1 1 1 1 1 3 3 1 2 2 2 2 1 2 1 1 3 3 3 2
2 3 2 1 1 1 2 1 2 1 2 2 1 3 3 3 2 1 2 3 2 2 3 1 2 2 1 2 3 2 2 3 1 2 3 2
2 3 4 1 1 1 2 1 3 1 1 2 2 1 2 2 2 1 1 3 3 2 1 2 1 3 1 3 1 2 2 3 3 1 2 3
2 1 1 1 2 1 3 2 1 1 1 1 1 2 2 1 3 4 1 1 2 2 2 1 1 1 3 2 3 3 1 2 1 3 4 2
2 1 2 2 1 2 1 1 2 2 1 1 2 3 2 3 1 2 2 2 2 1 3 2 3 2 1 1 3 3 1 1 4 2 1 2
2 2 2 1 2 1 3 1 2 1 1 3 1 4 3 1 2 2 2 2 3 1 2 2 3 3 2 1 1 3 3 1 1 1 2 2
3 1 2 3 2 3 1 2 1 2 2 3 1 2 2 2 2 3 2 3 3 2 3 3 1 3 3 2 4 2 1 1 2 2 3 3
2 2 1 2 2 1 3 2 3 1 3 2 1 2 3 1 1 1 1 2 1 2 2 3 1 2 2 2 1 2 2 3 1 2 3 3
1 2 2 3 1 1 2 1 3 1 1 2 3 2 1 3 2 3 1 3 1 3 2 2 3 3 1 1 2 3 2 2 1 1 3 3
1 3 3 2 3 1 3 2 2 2 3 2 3 2 2 3 3 1 2 2 3 1 1 2 1 1 2 3 3 1 2 1 3 2 3 2
2 1 2 1 3 2 1 2 3 3 2 1 3 3 2 1 2 1 2 3 3 2 2 1 2 3 3 3 3 1 1 2 3 3 3 3
1 2 1 2 2 3 1 1 1 2 3 3 2 1 1 2 1 3 2 1 1 1 3 1 1 2 2 1 1 3 2 3 1 3 1 4
1 2 1 3 1 1 2 2 2 2 2 2 2 1 2 3 1 2 1 2 3 1 1 2 2 3 2 1 2 3 3 1 3 3 3 2
2 3 1 1 3 1 3 1 1 3 1 2 2 1 1 3 2 2 3 1 2 3 3 1 2 2 3 2 3 3 3 1 3 1 2 3
1 3 1 2 1 3 3 3 3 2 3 3 3 2 2 2 3 1 3 2 1 2 3 2 3 3 1 1 2 2 2 2 2 3 1 3
3 1 2 1 2 1 3 2 3 1 3 2 1 1 3 2 1 2 1 1 3 1 3 1 3 2 1 1 2 1 1 3 2 1 2 3
2 3 1 1 2 2 1 2 4 1 2 2 3 2 2 1 3 1 1 2 1 3 3 1 1 3 2 1 1 3 2 2 1 3 3 1
2 1 1 1 2 3 1 1 1 2 3 2 2 3 1 2 2 3 2 3 2 2 2 2 1 2 1 3 2 2 3 3 3 3 2 2
2 3 3 2 3 1 2 1 3 2 3 2 3 1 3 1 3 2 1 2 1 3 2 1 1 3 2 3 3 3 3 3 3 2 1 1
1 3 2 3 1 2 3 3 1 2 3 3 2 2 2 2 2 2 1 2 2 1 2 3 3 2 1 2 3 1 1 1 3 1 3 2
2 3 2 1 3 3 2 3 1 1 2 2 1 1 1 2 1 4 3 2 1 3 3 3 1 1 2 2 3 1 2 3 1 3 4 3
1 1 3 3 3 1 2 2 1 3 2 1 3 2 1 2 2 2 2 3 3 3 3 3 1 1 3 2 2 2 3 2 4 3 1 2
;

%mkteval(data=design)

%mktex(3 ** 13 4 3 2 2,             /* all attrs of all alternatives        */
       n=72,                        /* number of choice sets                */
       examine=i v,                 /* show information & variance matrices */
       options=check,               /* check initial design efficiency      */
       init=randomized,             /* initial design                       */
       interact=x1*x11 x2*x12 x3*x13 x4*x14 x5*x15) /* interactions         */

%mktblock(data=randomized, nblocks=4, out=sasuser.AsymVacLinDesBlckd, seed=114)

proc format;
   value price 1 = ' 999'      2 = '1249' 3 = '1499' 4 = '1749'  . = ' ';
   value scene 1 = 'Mountains' 2 = 'Lake'            3 = 'Beach' . = ' ';
   value lodge 1 = 'Cabin'     2 = 'Bed & Breakfast' 3 = 'Hotel' . = ' ';
   value side  1 = 'Side Trip' 2 = 'No'                          . = ' ';
   run;

data key;
   input Place $ 1-10 (Lodge Scene Price Side) ($);
   datalines;
Hawaii      x1  x6   x11  x16
Alaska      x2  x7   x12  .
Mexico      x3  x8   x13  x17
California  x4  x9   x14  .
Maine       x5  x10  x15  .
.           .   .    .    .
;

data temp;
   set sasuser.AsymVacLinDesBlckd(rename=(block=Form));
   x11 + 1;
   x12 + 1;
   run;

%mktroll(design=temp, key=key, alt=place, out=sasuser.AsymVacChDes,
         options=nowarn, keep=form)

data sasuser.AsymVacChDes;
   set sasuser.AsymVacChDes;
   format scene scene. lodge lodge. side side. price price.;
   run;

proc print data=sasuser.AsymVacChDes(obs=12);
   by form set; id form set;
   run;

title2 'Evaluate the Choice Design';

%choiceff(data=sasuser.AsymVacChDes,/* candidate set of choice sets         */
          init=sasuser.AsymVacChDes(keep=set), /* select these sets         */
          intiter=0,                /* evaluate without internal iterations */
                                    /* alternative-specific effects model   */
                                    /* zero=none - no ref levels for place  */
                                    /* order=data - do not sort levels      */
          model=class(place / zero=none order=data)
                                    /* zero=none - no ref levels any factor */
                                    /* order=formatted - sort levels        */
                                    /* use blank sep to build interact terms*/
                class(place * price place * scene place * lodge /
                      zero=none order=formatted separators='' ' ')
                                    /* no ref level for place               */
                                    /* ref level for side is 'No'           */
                                    /* use blank sep to build interact terms*/
                class(place * side / zero=' ' 'No' separators='' ' ') /
                lprefix=0           /* lpr=0 labels created from just levels*/
                cprefix=0,          /* cpr=0 names created from just levels */

          nsets=72,                 /* number of choice sets                */
          nalts=6,                  /* number of alternatives               */
          beta=zero)                /* assumed beta vector, Ho: b=0         */

ods listing close; /* suppress a LOT of output */

%let m   = 6;                    /* m alts including constant  */
%let mm1 = %eval(&m - 1);        /* m - 1                      */
%let n   = 18;                   /* number of choice sets      */
%let blocks = 4;                 /* number of blocks           */

title;
options ls=80 ps=60 nonumber nodate;

data _null_;
   array dests[&mm1] $ 10 _temporary_ ('Hawaii' 'Alaska' 'Mexico'
                                       'California' 'Maine');
   array scenes[3]   $ 13 _temporary_
                     ('the Mountains' 'a Lake' 'the Beach');
   array lodging[3]  $ 15 _temporary_
                     ('Cabin' 'Bed & Breakfast' 'Hotel');
   array x[15];
   array p[&mm1];
   length price $ 6;
   file print linesleft=ll;

   set sasuser.AsymVacLinDesBlckd;
   by block;

   p1 = 1499 + (x[11] - 2) * 250;
   p2 = 1499 + (x[12] - 2) * 250;
   p3 = 1249 + (x[13] - 2) * 250;
   p4 = 1374 + (x[14] - 2.5) * 250;
   p5 = 1249 + (x[15] - 2) * 250;

   if first.block then do;
      choice = 0;
      put _page_;
      put @50 'Form: ' block  ' Subject: ________' //;
      end;
   choice + 1;

   if ll < (19 + (x16 = 1) + (x17 = 1)) then put _page_;
   put choice 2. ') Circle your choice of '
       'vacation destinations:' /;

   do dest = 1 to &mm1;
      price = left(put(p[dest], dollar6.));
      put '    ' dest 1. ') ' dests[dest]
          +(-1) ', staying in a ' lodging[x[dest]]
          'near ' scenes[x[&mm1 + dest]] +(-1) ',' /
          +7 'with a package cost of ' price +(-1) @@;
      if dest = 3 and x16 = 1 then
         put ', and an optional visit' / +7
             'to archaeological sites for an additional $100' @@;
      else if dest = 1 and x17 = 1 then
         put ', and an optional helicopter' / +7
             'flight to an active volcano for an additional $200' @@;
      put '.' /;
      end;
   put "    &m) Stay at home this year." /;
   run;

ods listing;

data _null_;
   array dests[&mm1] _temporary_ (5 -1 4 3 2);
   array scenes[3]   _temporary_ (-1 0 1);
   array lodging[3]  _temporary_ (0 3 2);
   array u[&m];
   array x[15];

   do rep = 1 to 100;
      n = 0;
      do i = 1 to &blocks;
         k + 1;
         if mod(k,3) = 1 then put;
         put k 3. +1 i 1. +2 @@;
         do j = 1 to &n; n + 1;
            set sasuser.AsymVacLinDesBlckd point=n;
            do dest = 1 to &mm1;
               u[dest] = dests[dest] + lodging[x[dest]] +
                         scenes[x[&mm1 + dest]] -
                         x[2 * &mm1 + dest] +
                         2 * normal(17);
               end;

            u[1] = u[1] + (x16 = 1);
            u[3] = u[3] + (x17 = 1);
            u&m  = -3 + 3 * normal(17);
            m = max(of u1-u&m);
            if      abs(u1 - m) < 1e-4 then c = 1;
            else if abs(u2 - m) < 1e-4 then c = 2;
            else if abs(u3 - m) < 1e-4 then c = 3;
            else if abs(u4 - m) < 1e-4 then c = 4;
            else if abs(u5 - m) < 1e-4 then c = 5;
            else                            c = 6;
            put +(-1) c @@;
            end;
         end;
      end;
   stop;
   run;

title 'Vacation Example with Asymmetry';
%let m = 6; %let mm1 = %eval(&m - 1); %let n = 18; %let blocks = 4;
data results;
   input Subj Form (choose1-choose&n) (1.) @@;
   datalines;
  1 1 413414111315351335   2 2 115311141441134121   3 3 331451344433513341
  4 4 113111143133311314   5 1 113413531545431313   6 2 145131111414331511
  7 3 313413113111313331   8 4 415143311133541321   9 1 133314111133431113
 10 2 543311131111333413  11 3 241353113111313311  12 4 113111311133343311
 13 1 113411111131353334  14 2 441111531411131411  15 3 333311144111413311
 16 4 413111141133313311  17 1 133114111535451313  18 2 313311131311131313
 19 3 333115114111414311  20 4 113411313133333511  21 1 133411111133453335
 22 2 113335113443331331  23 3 153411113111413331  24 4 114111111333313311
 25 1 133511432133133335  26 2 541145131311134111  27 3 313311133131413331
 28 4 431111341331313351  29 1 143111151133431311  30 2 145341131311131411
 31 3 331353113111414311  32 4 414111143153343311  33 1 113111531113131313
 34 2 145111111413331313  35 3 311311113111113311  36 4 413111141334343633
 37 1 333414111112413354  38 2 441311133111131111  39 3 313313313111534331
 40 4 413111111333343331  41 1 511514111131455313  42 2 115341134441111441
 43 3 333411113111411331  44 4 133411413314113311  45 1 133311431113343344
 46 2 145141413341331113  47 3 133311111111413331  48 4 113411113331343311
 49 1 133311111133411113  50 2 115135143413333311  51 3 134351313111514331
 52 4 114111543433313351  53 1 114514431113151333  54 2 145133133451331113
 55 3 333311313111433311  56 4 534411115133513351  57 1 133311411111431333
 58 2 141311111141131511  59 3 333111111111413313  60 4 412411111433333313
 61 1 114511111343331133  62 2 545335113111131413  63 3 231311113111514335
 64 4 113131141433115133  65 1 113514111113431113  66 2 143313133441331311
 67 3 351413113135534313  68 4 114111113431533351  69 1 113313113111431331
 70 2 115315533311344311  71 3 353411313511513335  72 4 114411111133311311
 73 1 513514112533331333  74 2 413111133411133113  75 3 331411311111513311
 76 4 114411113333333311  77 1 133414111113531153  78 2 115113133445111323
 79 3 341413114111513331  80 4 413411111333313311  81 1 111311131513331313
 82 2 113313111311133411  83 3 341313113511413331  84 4 413111313133313311
 85 1 111414415143451136  86 2 415136331446131413  87 3 335511113151513311
 88 4 414111341431343151  89 1 131311131115451133  90 2 111311531411133311
 91 3 531113111111313311  92 4 413411113133313111  93 1 131311131133131331
 94 2 441111133441131311  95 3 333313111111313333  96 4 514111311133334331
 97 1 113311411113531311  98 2 143113131541131111  99 3 333413113131414331
100 4 114113313133331311 101 1 113511164113111433 102 2 141311113341333313
103 3 351413133115511311 104 4 115411341133113321 105 1 113414131115151135
106 2 115313131441131111 107 3 333313311111533311 108 4 413111151531313311
109 1 113414131113153333 110 2 415331111441131441 111 3 353411113111414311
112 4 113111143133313311 113 1 113111431115553313 114 2 545313511314333311
115 3 131313113151333331 116 4 114111141134313334 117 1 133311411113311315
118 2 113311111441133313 119 3 341314134411511315 120 4 113111111133333331
121 1 133431111113533335 122 2 443315141254131113 123 3 331311113113413331
124 4 414411113313311151 125 1 313411113113131133 126 2 145111133311331113
127 3 131414113111513311 128 4 414111351433343355 129 1 131311131115352333
130 2 415331131311131113 131 3 111114111111414351 132 4 114111511313343331
133 1 113514111313431333 134 2 143131131341331413 135 3 331313113111414311
136 4 114411141433313311 137 1 313411114113411333 138 2 113333113354331341
139 3 153411114153313335 140 4 114111311531513333 141 1 545511133113411141
142 2 165113113345131311 143 3 253411211111431351 144 4 113111111333313334
145 1 113211111543131154 146 2 445311111343134513 147 3 111314111131114331
148 4 113453415313131331 149 1 243314431335151113 150 2 415343113651111313
151 3 143314113111313111 152 4 115113513333313321 153 1 555311111511351331
154 2 445311111111134323 155 3 144453113111513331 156 4 112111111334531351
157 1 111414431335444115 158 2 415111131141131333 159 3 351511111111513311
160 4 113111311134313333 161 1 115411111131511313 162 2 455313111144131411
163 3 211413111111414315 164 4 113111111153343311 165 1 143211133113411133
166 2 111315331323331113 167 3 133341111131313331 168 4 114411151133341313
169 1 143511132115431313 170 2 145111111341331123 171 3 331311113131411315
172 4 414111151114313334 173 1 313514111513551113 174 2 141141131541344513
175 3 141313313113413315 176 4 434113111433143343 177 1 113414111543334333
178 2 345311111441111321 179 3 131411113111413311 180 4 115111313133533334
181 1 153413111545351335 182 2 145341111351131111 183 3 313133313411413341
184 4 413111111533343331 185 1 131411111111131133 186 2 445313111311351423
187 3 141311143111513331 188 4 414111111133333333 189 1 131311111333153151
190 2 115335111441334411 191 3 333311111151413413 192 4 413111111543131311
193 1 533113111513551331 194 2 345135113444333511 195 3 343314114111413311
196 4 433111151133363331 197 1 133515131113353113 198 2 141314131341131141
199 3 151311111151313331 200 4 115513311131133111 201 1 133413413336133133
202 2 415111131311334411 203 3 131311111111414311 204 4 114141113333313331
205 1 133411411531411311 206 2 115333111464331113 207 3 153413214451314315
208 4 133411331113313533 209 1 113511111313431331 210 2 111113111111333313
211 3 131311113511413311 212 4 433111151433533311 213 1 113511111343332111
214 2 145311113121331111 215 3 331151113411413331 216 4 413111113131133311
217 1 113311111133351313 218 2 113111331441331313 219 3 331311143111633351
220 4 413111413334233311 221 1 113413111513541351 222 2 245143111441331111
223 3 331111334111531331 224 4 115111313331341344 225 1 113413313315443315
226 2 115113131341133313 227 3 115414111111514311 228 4 413141111133333333
229 1 133513114135141331 230 2 543311133411131411 231 3 141413111411311311
232 4 113141133133343311 233 1 133511111135133131 234 2 131113333411331313
235 3 143311113131531331 236 4 415111151113313311 237 1 131511131113153133
238 2 145111131541131313 239 3 331413113115413311 240 4 111411331333143315
241 1 133414133313143313 242 2 113341111411331313 243 3 334314114131113331
244 4 114411151314343111 245 1 133411113133151314 246 2 141431513451331311
247 3 331453133115413331 248 4 113111113133311111 249 1 133311113113411343
250 2 415343113441133313 251 3 331311113111433311 252 4 413111113333131321
253 1 513113111513553134 254 2 313111131441631111 255 3 151313114411315311
256 4 414111111134543311 257 1 113311133133351313 258 2 145331111341331413
259 3 141311113111433361 260 4 114111343133413311 261 1 331411131535311333
262 2 115111131351131311 263 3 133311114115533331 264 4 114111111333313311
265 1 133514162113151334 266 2 515111511343134411 267 3 131553114111413331
268 4 413111111333311351 269 1 133331131113151335 270 2 345114111151334311
271 3 333411114115514331 272 4 514414431431313331 273 1 133413433113151313
274 2 415135513341331113 275 3 333353144111411311 276 4 113111511134341314
277 1 433513131111331311 278 2 345311113111331111 279 3 343113113113314331
280 4 134113141133313311 281 1 313311311313453311 282 2 145341131345333143
283 3 331411113411313335 284 4 514411533313343331 285 1 113414134133531133
286 2 115131531114131113 287 3 141413111111414311 288 4 113411541134533311
289 1 133311431535313331 290 2 115311131311133511 291 3 153454111111511335
292 4 454411113334333311 293 1 133111431143553333 294 2 441311131441131111
295 3 332413113111513331 296 4 111411113133141321 297 1 145333211133554133
298 2 115311511444111311 299 3 161454111131514313 300 4 113111411154333311
301 1 113314111132351133 302 2 143311131241331113 303 3 355311113111411311
304 4 413111141133333331 305 1 313211433513541333 306 2 134313111421333111
307 3 345511113111413311 308 4 414113341133533313 309 1 433411111513331351
310 2 145411316311131311 311 3 351534111151413331 312 4 413111111533331311
313 1 111411111113451313 314 2 413311133413133313 315 3 313451113113514311
316 4 413113611113363313 317 1 133111511111313113 318 2 343413513424331311
319 3 131311143111313311 320 4 411411113353511341 321 1 133554131133431113
322 2 141111111411133133 323 3 135354114113413311 324 4 114111311333331311
325 1 133414114113151133 326 2 145341131341333113 327 3 231111113111111311
328 4 113411113131441331 329 1 115314111135431133 330 2 445411311441133313
331 3 153351114111315335 332 4 415111143333343311 333 1 533311434343151334
334 2 141313131441131313 335 3 331414113115533311 336 4 134411113331341311
337 1 333414431315331113 338 2 431331131311331411 339 3 133411113151513331
340 4 414111353334333111 341 1 113514111115411311 342 2 145311113413131313
343 3 133311111114513331 344 4 114411341131513321 345 1 513213111115451331
346 2 115311131351133411 347 3 333411113435413351 348 4 114111353134311331
349 1 133411111113131333 350 2 445115111311334311 351 3 331413111111433311
352 4 412111153333114311 353 1 113311111531431333 354 2 113315131311331313
355 3 333411144131413331 356 4 414111353134331151 357 1 533411111131343333
358 2 115363131311331311 359 3 333213113131314311 360 4 414141153133113311
361 1 533514111313411113 362 2 443311111351331311 363 3 141411114131431311
364 4 111111151434315351 365 1 443314131115441333 366 2 545141111441133313
367 3 131311113131511311 368 4 111111153333343321 369 1 311311114145333311
370 2 541313111343333413 371 3 141413134131311331 372 4 413411443333513311
373 1 133411113513153133 374 2 543321331411131513 375 3 333413313111514331
376 4 114411153114311311 377 1 113514111113441113 378 2 113313111441334111
379 3 311413144151411311 380 4 114111141134113321 381 1 133114111115411113
382 2 545311511411131411 383 3 253411114311313311 384 4 114411113633333311
385 1 123411411533151115 386 2 145131111411334111 387 3 131113113111413311
388 4 411111111333344311 389 1 113514111313431134 390 2 645111113314331121
391 3 133313133531514311 392 4 113141313134311311 393 1 111511111315131343
394 2 411113111151113321 395 3 133111111511514311 396 4 114111111331313341
397 1 331311431513163313 398 2 115133111313133111 399 3 313311114111413311
400 4 115511141534111131
;

%mktmerge(design=sasuser.AsymVacChDes, data=results, out=res2, blocks=form,
          nsets=&n, nalts=&m, setvars=choose1-choose&n,
          stmts=%str(price = input(put(price, price.), 5.);
                     format scene scene. lodge lodge. side side.;))

proc print data=res2(obs=18);
   id form subj set; by form subj set;
   run;

proc transreg design=5000 data=res2 nozeroconstant norestoremissing;
   model class(place / zero=none order=data)
         class(price scene lodge / zero=none order=formatted)
         class(place * side / zero=' ' 'No' separators='' ' ') /
         lprefix=0;
   output out=coded(drop=_type_ _name_ intercept);
   id subj set form c;
   run;

proc print data=coded(obs=6) label;
   run;

proc phreg data=coded brief;
   model c*c(2) = &_trgind / ties=breslow;
   strata subj set;
   run;

proc summary data=coded nway;
   class form set c &_trgind;
   output out=agg(drop=_type_);
   run;

proc phreg data=agg;
   model c*c(2) = &_trgind / ties=breslow;
   freq _freq_;
   strata form set;
   run;

%phchoice(off)