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

  • #31

    Please post the dcreate syntax that you used. How many levels do the different attributes have?

    There is an example of how to create a design with an "opt-out" alternative in the dcreate help (Example 3) - type "help dcreate" in Stata and scroll down towards the bottom of the file.



    • #32

      this is the syntax:
      matrix levelmat =(3,3,3,2)
      genfact, levels (levelmat)
      matrix b = J(1,11,0)
      dcreate i.x1##i.x2 i.x3 i.x4, nalt(2) nset(13) bmat(b)
      list, separator(2)

      my model is as follow V = b1 x1 + b2 x2 + b3 x3 + b4x 4+b5 x1 x2
      here I have 5 betas but 11 effects. Is it due to coding effect since the variables are dummy coded ?

      Since I'm working on 'retirement' so one of my variables is for exemple, "age" and it takes 3 levels (60,65,67) years , shoul I use dummy coding or should I set it as continous ?

      for the 'no purchase option'
      I saw the third example, however, I didn't get why all levels are set to one since the 'neither' options does no contain levels ?



      • #33
        Yes, since the variables are dummy coded you have two coefficients for each 3-level attribute, one coefficient for the 2-level attribute plus 4 coefficients for the interaction between the two 3-level attributes. This makes 11 in total.

        I would recommend specifying the attributes to be categorical (dummy coded) as this gives you more flexibility later - you can still model the attribute as continuous if you wish.

        The level for the attributes in the opt-out should be set to the reference category for the dummy coded attributes (i.e. 1 as in the example).


        • #34

          Thank you very much for your help and guidance



          • #35

            I am sorry to ask the question one more time, but I did not understand how a "Neither" option can have levels since it does not have any attribute ?



            • #36
              variable coding (effect- or dummy-coding) in utility-based models are chosen to identify differences across states of the world (or scenario/alternatives). This because only utility differences matter.
              Often times a “neither“ option can have levels different from zero. For example, when it refers to a status quo which has some attributes that also in common with non status quo alternatives and the level coding of alternatives is not contrasted with the SQ as a reference point.
              Take the following example with binary coding, and focus on att2: the SQ has it as well as alt2, but alt1 does not.
              Alt1 0, 0, 1, 0
              Alt2 1, 1, 0, 1
              SQ 0, 1, 0, 0

              This is sometime useful when describing SQ conditions to respondents as baselines: as alt1 provides a scenario in which something that is currently in the SQ (att2) is subtracted.
              Of course you can recode it differently:
              Alt1 0, 1, 1, 0
              Alt2 1, 0, 0, 1
              SQ 0, 0, 0, 0
              But it might make interpretation less intuitive.
              You can find discussion on adequate coding and their utility interpretation in various manual and textbooks on the subject, including literature in journals.


              • #37

                First of all, I have read many of your articles and I am really admirative of your works .

                For my study, I am asking informal workers to joint a new pension sheme, since thay are informal workers they don't have any converage so the 'statu quo' for these workers is a "no purchace". I was wondering how to set levels for this option since it is a non participation then there is no attribute in it.



                • #38
                  i have to join the discussion about the "neither" option.

                  I want to convert a sawtooth database to stata for estimation in wtp space. i have coded the none option as a dual response. So I have 2 stages of in each choice decision. Does anyone have an example how to put this in Stata?


                  • #39
                    Because I cant edit :

                    i figured out how the dual response should be coded (see p. 157++), but i have another question to the "opt out".

                    when using effect coding, the reference is -1 , so should there a line of -1 ?

                    Originally posted by Arne Risa Hole View Post
                    The level for the attributes in the opt-out should be set to the reference category for the dummy coded attributes (i.e. 1 as in the example).


                    • #40
                      Dear Arne,

                      First of all, thank you for your guidance. It's very helpful.

                      I am a PHD student, and have just started to use dcreate to create choice sets for my DCE.

                      I have a question regarding the number of alternative - nalt(#). In my design, there is only one scenario/alternative in a choice set, then the respondent will be asked to choose one of the stated behaviors for each scenario. As my understanding, the number of alternative should be 1. I expect to have 16 choice sets, and plan to divide into 2 blocks of 8.

                      Then, I run the code

                      matrix levmat = 3,3,3,3,2,2
                      genfact, levels(levmat)
                      matrix b = J(1,10,0)
                      matrix V = I(10)
                      dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(1) nset(16) bmat(b) vmat(V)

                      However, it has a error which says 'There are too few choice sets in the design relative to the number of effects to be estimated'.

                      I don't understand what I am wrong here. Since I am a beginner, I am not sure whether dcreate supports to deal with my design. Could you please help me to clarify it?

                      Thank you very much,

                      Chi Chi


                      • #41
                        Dear Arne,

                        I have a question about the opt out alternative.

                        I would like the optout matrix to be a constant '1' of the 3 attributes I have. I however do not want my two other alternatives to have that level '1'.

                        For example, I have 3 attributes 4,5,4. The opt out would be a 1, but I want the two alternatives to be a mix of 2,3,4 and 2,3,4,5 and 2,3,4

                        I have the following syntax where I force this by changing my levels up front for the attributes - but obviously it creates issues for my b-matrix and the evaldes command

                        matrix levmat = 3,4,3
                        genfact, levels(levmat)

                        rename x1 price
                        rename x2 coverage
                        rename x3 subs_pkg

                        matrix optout = J(1,3,0)
                        matrix b = J(1,8,0)

                        dcreate i.price i.coverage i.subs_pkg, nalt(2) nset(20) fixedalt(optout) asc(3) bmat(b)

                        blockdes block, nblock(2)

                        The above creates what I want but when I run the evaldes command it gives me this:

                        evaldes i.price i.coverage i.subs_pkg, bmat(b)
                        There are 10 effects in the design and 8 coefficients in b

                        Thank you


                        • #42
                          Dear Sarah,

                          As demonstrated in the dcreate help file, in many applications a sensible way of creating an opt-out alternative is to set the attribute levels for the fixed alternative to the lowest level for the other alternatives and include an ASC for the opt out alternative. As Ric Scarpa points out above this is not always appropriate - sometimes you want the opt-out to have other attribute levels - but you cannot give it attribute levels that do not appear in the other alternatives, as such a design is not identified. If attribute level "1" only appears in the opt-out you cannot identify the difference between attribute level "1" and "2" (for example) - this difference will be captured by the ASC. How you present the opt-out to the respondents in your survey is a different matter - the utility of the opt-out is different from the utility of another alternative with all of the attributes set to the lowest level due to the ASC, so you do not need to present the opt-out alternative in those terms (it could for example simply be a tick-box saying "neither").

                          I can't help more than this I'm afraid - good luck.



                          • #43
                            Dear Chi Chi,

                            I'm not sure if I've understood exactly what you are trying to do, but dcreate is written to create DCE designs with 2 or more alternatives.



                            • #44
                              Dear Arne,

                              Thank you very much for your answer.

                              I now have another question regarding the evaldes command. I follow your example 3 in the help file to build a choice set with an opt-out alternative. However, when I use the
                              evaldes command, it turns out an error '
                              There are 10 effects in the design and 11 coefficients in b'.

                              matrix levmat = 4,4,2,2,2,2
                              genfact, levels(levmat)
                              matrix optout = J(1,6,1)
                              matrix b = J(1,11,0)
                              dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) fixedalt(optout) asc(3) bmat(b)
                              evaldes i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, bmat(b)

                              Could you please help me to clarify what is wrong here?

                              Thank you,
                              Chi chi


                              • #45
                                You need to create the alternative-specific constant manually before running evaldes - this could have been better documented in the help file:

                                matrix levmat = 4,4,2,2,2,2
                                genfact, levels(levmat)
                                matrix optout = J(1,6,1)
                                matrix b = J(1,11,0)
                                dcreate i.x1 i.x2 i.x3 i.x4 i.x5 i.x6, nalt(2) nset(16) fixedalt(optout) asc(3) bmat(b)
                                gen asc = alt==3
                                evaldes i.x1 i.x2 i.x3 i.x4 i.x5 i.x6 i.asc, bmat(b)