Efficient design using dummy coding

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Efficient design using dummy coding

Postby Yuanyuan Gu » Mon May 11, 2015 12:36 pm

Many thanks for answering my previous question.

Here I have another few questions related to efficient design using dummy coding in Ngene.

My design syntax is pasted below:

Design
;alts = alt1, alt2
;rows = 16
;eff = (mnl, d)
;model:
U(alt1) = b0[0]+b1.dummy[0|0|0|0|0|0|0]*A[0,1,2,3,4,5,6,7] + b2.dummy[0|0|0]*B[0,1,2,3] + b3.dummy[0|0|0]*C[0,1,2,3]/
U(alt2) = b1*A + b2*B + b3*C$

My first question is what is the reference level used in Ngene? Is it '0' or '7'/'3'? From the example on page 126 it seems '7' is the reference category but I am not sure if it is a general setting.

My second question is how to include the interaction terms when attributes are all dummy coded. Suppose we are interested in the interaction between B and C, I wrote the syntax below:

Design
;alts = alt1, alt2
;rows = 32
;eff = (mnl, d)
;model:
U(alt1) = b0[0]+b1.dummy[0|0|0|0|0|0|0]*A[0,1,2,3,4,5,6,7] + b2.dummy[0|0|0]*B[0,1,2,3] + b3.dummy[0|0|0]*C[0,1,2,3] + i1[0]*B.dummy[0]*C.dummy[0]+i2[0]*B.dummy[0]*C.dummy[1]+i3[0]*B.dummy[0]*C.dummy[2]+i4[0]*B.dummy[0]*C.dummy[3]+i5[0]*B.dummy[1]*C.dummy[0]+i6[0]*B.dummy[1]*C.dummy[1]+i7[0]*B.dummy[1]*C.dummy[2]+i8[0]*B.dummy[1]*C.dummy[3]+i9[0]*B.dummy[2]*C.dummy[0]+i10[0]*B.dummy[2]*C.dummy[1]+i11[0]*B.dummy[2]*C.dummy[2]+i12[0]*B.dummy[2]*C.dummy[3]+i13[0]*B.dummy[3]*C.dummy[0]+i14[0]*B.dummy[3]*C.dummy[1]+i15[0]*B.dummy[3]*C.dummy[2]+i16[0]*B.dummy[3]*C.dummy[3]/
U(alt2) = b1*A + b2*B + b3*C + i1*B.dummy[0]*C.dummy[0]+i2*B.dummy[0]*C.dummy[1]+i3*B.dummy[0]*C.dummy[2]+i4*B.dummy[0]*C.dummy[3]+i5*B.dummy[1]*C.dummy[0]+i6*B.dummy[1]*C.dummy[1]+i7*B.dummy[1]*C.dummy[2]+i8*B.dummy[1]*C.dummy[3]+i9*B.dummy[2]*C.dummy[0]+i10*B.dummy[2]*C.dummy[1]+i11*B.dummy[2]*C.dummy[2]+i12*B.dummy[2]*C.dummy[3]+i13*B.dummy[3]*C.dummy[0]+i14*B.dummy[3]*C.dummy[1]+i15*B.dummy[3]*C.dummy[2]+i16*B.dummy[3]*C.dummy[3]$

I received this warning:
'Warning: No valid design has been found after 1000 evaluations. There may be a problem with the specification of the design. A common problem is that the choice probabilities are too extreme (close to 1 and 0), perhaps because some or all of the prior values are too large. Also, it is generally a good idea to start with a simple design (MNL, non-Bayesian), then add complexity. If you press stop, a design will be reported, which may assist in diagnosing the problem.
Stopped, at 12:16:54 PM, 5/11/2015'


I guess this warning came up probably because I included the interaction terms involving reference levels. Assuming level 3 is the reference level, I subsequently dropped all the interaction terms involving either B.dummy[3] or C.dummy[3] and the syntax became this:

Design
;alts = alt1, alt2
;rows = 32
;eff = (mnl, d)
;model:
U(alt1) = b0[0]+b1.dummy[0|0|0|0|0|0|0]*A[0,1,2,3,4,5,6,7] + b2.dummy[0|0|0]*B[0,1,2,3] + b3.dummy[0|0|0]*C[0,1,2,3] + i1[0]*B.dummy[0]*C.dummy[0]+i2[0]*B.dummy[0]*C.dummy[1]+i3[0]*B.dummy[0]*C.dummy[2]+i5[0]*B.dummy[1]*C.dummy[0]+i6[0]*B.dummy[1]*C.dummy[1]+i7[0]*B.dummy[1]*C.dummy[2]+i9[0]*B.dummy[2]*C.dummy[0]+i10[0]*B.dummy[2]*C.dummy[1]+i11[0]*B.dummy[2]*C.dummy[2]/
U(alt2) = b1*A + b2*B + b3*C + i1*B.dummy[0]*C.dummy[0]+i2*B.dummy[0]*C.dummy[1]+i3*B.dummy[0]*C.dummy[2]+i5*B.dummy[1]*C.dummy[0]+i6*B.dummy[1]*C.dummy[1]+i7*B.dummy[1]*C.dummy[2]+i9*B.dummy[2]*C.dummy[0]+i10*B.dummy[2]*C.dummy[1]+i11*B.dummy[2]*C.dummy[2]$

There was no warning this time.

So can I confirm with you that reference level cannot be used in the interaction terms?

My final question is if there is any easy way to specify all two way interactions for dummy coded attributes? I certainly can write up all the interactions between levels of A, B and C but wonder if there is a command for this.

Many thanks,
Yuanyuan
Yuanyuan Gu
 
Posts: 12
Joined: Wed May 06, 2015 10:33 pm

Re: Efficient design using dummy coding

Postby Michiel Bliemer » Tue May 12, 2015 10:01 am

1. The last level is the base level in dummy and effects coding

2. The syntax for inclusion of interactions of dummy variables is correct. The fact that you cannot use use the reference level of dummy coded variables in your interactions is because the dummy variable equals zero in the base and thererfore this interaction term will always be zero. If the term is always zero, you cannot estimate a coefficient for this interaction. This is not a limitation of Ngene but rather a misspecification of your model. Note that if you use effects coding, it should be possible to include interactions with the base level in your model, since the base levels will be -1, not 0.
Michiel Bliemer
 
Posts: 1733
Joined: Tue Mar 31, 2009 4:13 pm


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 51 guests