efficient design error?

This forum is for posts that specifically focus on the Windows desktop version of Ngene (i.e. all version 1.x releases).

Moderators: Andrew Collins, Michiel Bliemer, johnr

Post Reply
julian0309
Posts: 3
Joined: Tue Feb 07, 2023 6:50 am

efficient design error?

Post by julian0309 »

Hello,

When I run the code below, attribute level 2 is always paired with another level 2. For example, fish(2) is always paired with fish(2) for alternatives a and b.

Could someone tell me what's going on and how to fix this issue?

Thank you.

Julian


Design
;alts = a, b, sq
;rows = 12
;eff = (mnl,d)
;model:
U(a) = a[0.05] + fish[0.5] * Fish[1,2,3] + cook[0.025] * Cook[1,2,3] + type[0.05] * Type[1,2,3] + price[0.05] * Price[1,2,3,4,5] /
U(b) = b[0.05] + fish[0.5] * Fish + cook[0.025] * Cook + type[0.05] * Type + price[0.05] * Price
$
Michiel Bliemer
Posts: 2055
Joined: Tue Mar 31, 2009 4:13 pm

Re: efficient design error?

Post by Michiel Bliemer »

It is most efficient to compare extreme levels, namely (3,1), and (1,3), they will provide most information about trade-offs. Therefore, Ngene will maximise the number of times these extreme comparisons appear. But since by default Ngene also aims for attribute level balance, it will also need to put level 2 in there, and it sacrifices information from comparison (2,2) to allow comparisons (3,1) and (1,3). This is a direct result of efficiency maximisation.

You can observe this better when you let go of attribute level balance by adding

;alg = mfederov

Essentially level 2 will hardly be used because it is inefficient for estimating a linear effect.

However, I believe that fish, type, etc, are categorical variables, and therefore you MUST use dummy or effects coding to estimate them. With categorical variables you will see that comparisons (2,2) will not appear much anymore as it is no longer efficient to use extreme levels for categorical variables.

Please use appropriate priors, your priors seem chosen quite randomly. Price has a positive sign, which is strange? Please add dummy coded coefficients, noting that the last level is the reference level in Ngene.

Please use the exact price levels that you show to respondents, e.g. $10, $5, etc, instead of 1,2,3,4,5.

Please add an asterisk after a and b in alternatives to indicate that they are generic.

Code: Select all

Design
;alts = a*, b*, sq
;rows = 12
;eff = (mnl,d)
;model:
U(a) = a[0.05] + fish.dummy[0.5|1.0] * Fish[2,3,1] + cook.dummy[0.5|1.0] * Cook[2,3,1] + type.dummy[0.5|1.0] * Type[2,3,1] + price[-0.05] * Price[1,2,3,4,5] /
U(b) = b[0.05] + fish * Fish + cook * Cook + type * Type + price * Price
$
Michiel
julian0309
Posts: 3
Joined: Tue Feb 07, 2023 6:50 am

Re: efficient design error?

Post by julian0309 »

Hello Michiel,

Thank you so much for your feedback. This is super helpful!
I have a follow-up question if you don't mind.
If I want to introduce interactions between Fish and Cook, and Fish and Type, is the coding below correct?

Design
;alts = a*, b*, sq
;rows = 12
;eff = (mnl,d)
;model:
U(a) = a[0.05] + fish.dummy[0.5|1.0] * Fish[2,3,1] + cook.dummy[0.5|1.0] * Cook[2,3,1] + type.dummy[0.5|1.0] * Type[2,3,1] + price[-0.05] * Price[12.99,17.99,22.99,27.99,32.99]
+ i1[0.02] * Fish.dummy[2] * Cook.dummy[2] + i2[0.02] * Fish.dummy[2] * Cook.dummy[3] + i3[0.02] * Fish.dummy[3] * Cook.dummy[2] + i4[0.02] * Fish.dummy[3] * Cook.dummy[3]
+ i5[0.02] * Fish.dummy[2] * Type.dummy[2] + i6[0.02] * Fish.dummy[2] * Type.dummy[3] + i7[0.02] * Fish.dummy[3] * Type.dummy[2] + i8[0.02] * Fish.dummy[3] * Type.dummy[3] /

U(b) = b[0.05] + fish * Fish + cook * Cook + type * Type + price * Price
+ i1 * Fish.dummy[2] * Cook.dummy[2] + i2 * Fish.dummy[2] * Cook.dummy[3] + i3 * Fish.dummy[3] * Cook.dummy[2] + i4 * Fish.dummy[3] * Cook.dummy[3]
+ i5 * Fish.dummy[2] * Type.dummy[2] + i6 * Fish.dummy[2] * Type.dummy[3] + i7 * Fish.dummy[3] * Type.dummy[2] + i8 * Fish.dummy[3] * Type.dummy[3]
$
Michiel Bliemer
Posts: 2055
Joined: Tue Mar 31, 2009 4:13 pm

Re: efficient design error?

Post by Michiel Bliemer »

Yes those interactions between dummy coded variables look fine.
Post Reply