Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • dcreate: a new module for creating efficient designs for discrete choice experiments

    Thanks as usual to Kit Baum a new module called dcreate is now available on SSC.

    dcreate creates efficient designs for discrete choice experiments using the modified Fedorov algorithm (Cook and Nachtsheim, 1980; Zwerina et al., 1996; Carlsson and Martinsson, 2003). The algorithm maximises the D-efficiency of the design based on the covariance matrix of the conditional logit model.

    Type “ssc install dcreate” in Stata to install the command. After installation type “help dcreate” for instructions and examples.

    I have been using earlier versions of dcreate on various projects over the past decade or so, but I haven’t until recently found a way to make it general enough to (hopefully) be useful to others. There are bound to be some teething problems, so please let me know about any issues you come across.

    Arne

    References

    Carlsson F, Martinsson P. 2003. Design techniques for stated preference methods in health economics. Health Economics 12: 281-294.

    Cook RD, Nachtsheim CJ. 1980. A comparison of algorithms for constructing exact D-optimal designs. Technometrics 22: 315-324.

    Zwerina K, Huber J, Kuhfeld W. 1996. A general method for constructing efficient choice designs. Working Paper, Fuqua School of Business, Duke University.
    Last edited by Arne Risa Hole; 01 Sep 2015, 04:52.

  • #2
    Thanks to Kit Baum an updated version of dcreate is now available on SSC.

    The updated version has a new command called evaldes, which can be used to evaluate the D-efficiency of a generated design for alternative model specifications and/or coefficient priors.

    Arne

    Comment


    • #3
      Dear Arne,

      I am designing a DCE and found your dcreate programme very useful. Can I ask you how to interpret the D-efficiency the programme calculates and what are the plausible ranges? Thank you very much.

      Best,
      Mariya

      Comment


      • #4
        Dear Mariya,

        I am glad to hear that you have found dcreate useful. A design with a higher D-efficiency is more efficient than a design for the same experiment with a lower D-efficiency, but the numbers themselves don't mean much as they depend on things like the number of attributes, levels etc. in your choice experiment.

        Arne

        Comment


        • #5
          Dear Arne,

          Thank you for your useful dcreate module. I am designing the labeled (branded) choice experiment in market research.
          From you module, I was however only able to create the generic design. Can I ask whether, and if yes, how to create the branded choice design using this module?


          Thanks,

          Hoang

          Comment


          • #6
            Dear Hoang,

            You can include alternative-specific constants by using the "asc()" option.

            Arne

            Comment


            • #7
              For anyone who is interested (and/or would like a trip to Oslo) I will be giving a presentation on dcreate at the Nordic and Baltic Stata Users Group Meeting: http://www.statanordic.com/sug2016.html

              Arne

              Comment


              • #8
                Dear Arne,

                I'd like to use dcreate to create efficient designs for our research projects (discrete choice experiments).

                How do I specify priors using the module? And is there a way to use bayesian priors?

                Thanks,
                Andrew

                Comment


                • #9
                  Andrew

                  Priors can be specified using the bmat() option as described in the dcreate help file. The following examples might help to clarify things:

                  Code:
                  /* dcreate help-file example - zero priors for all attributes: */
                  matrix levmat = 4,4,2,2,2,2
                  genfact, levels(levmat)
                  matrix b = J(1,10,0)
                  dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)
                  
                  /* Zero priors for the four-level attribute coefficients, 1 as prior for the coefficients on x3 and x4, and -1 as prior for the coefficients on x5 and x6 */
                  matrix levmat = 4,4,2,2,2,2
                  genfact, levels(levmat)
                  matrix b = 0,0,0,0,0,0,1,1,-1,-1
                  dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)
                  So the elements of the "b" matrix represent the priors, specified in the order the coefficients appear in the model syntax.

                  Bayesian priors are not supported I'm afraid.

                  Arne

                  Comment


                  • #10
                    Arne,

                    thanks, this is great, works perfectly.

                    Maybe you consider implementing bayesian priors in a subsequent version of the module. We are using Ngene software for most of our projects but looking for an appropriate alternative to create efficient designs.

                    Thanks again.
                    Andrew

                    Comment


                    • #11
                      Andrew and others

                      Bayesian designs (Sándor and Wedel, 2001) are now supported by dcreate.The priors are assumed to be normally distributed, and the D-efficiency measure is approximated using simulation.

                      Bayesian designs are time consuming to generate, and may not be practical for designs with many attributes/levels. As usual please let me know about any issues you come across.

                      Arne

                      Reference
                      Sándor Z, Wedel M. 2001. Designing conjoint choice experiments using managers’ prior beliefs. Journal of Marketing Research 38: 430–444.

                      Comment


                      • #12
                        Arne,

                        this is great news. I gonna check it out.
                        Thanks for the information.

                        Best,
                        Andrew

                        Comment


                        • #13
                          This was helpful and easy to use, thank you. I have a few questions
                          1. Could you provide some example syntax continuous levels for attributes (and where one has a mix of continuous and categorical levels for attributes)? And related, can I directly specify the continuous levels in the levels matrix?
                          2. What if I had one factor that was constant across all alternatives in a choice scenario, but wanted to set this to zero in the opt-out alternative, how would one go about this? For instance, I have an experiment of 4 attributes. I would like to set it up such that there are two alternatives per choice set, an opt-out. In the two alternatives, one attribute, risk reduction is set to 30% for each and is 0 in the opt-out alternative. Can this be done?
                          3. In specifying priors for coefficients, one can specify these as negative or positive. Would this be able to minimize dominant alternatives? How to examine this quickly?
                          4. Is the function able to incorporate more labelled designs where some attributes are fixed across alternatives, while others vary?
                          Thanks

                          Solomon

                          Comment


                          • #14
                            Dear Arne,
                            Thank you for useful dcreate command!

                            I would like to ask about notation after dcreate.
                            For example here after dcreate ix1 comes. Does it mean that x1 is categorical variable?

                            dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)

                            If x1 is continuous variable we should write like this, right?:

                            dcreate c.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) bmat(b)

                            Thank you!

                            Comment


                            • #15
                              Hi Golib,

                              That's correct. See "help fvvarlist" for more info.

                              Arne

                              Comment

                              Working...
                              X