Efficient design with attribute level balance- possible?

This forum is for posts covering broader stated choice experimental design issues.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Efficient design with attribute level balance- possible?

Postby Olive » Thu Jul 26, 2018 7:27 pm

Hi

I am trying to get my design for a choice experiment. I have used "*" and require/rejects to avoid unrealistic combinations. However, my attribute level balance is pretty bad (i.e. Ngene distributes the lower and upper levels of all attributes but I get 1-2 of the middle levels). In the syntax below I have tried to add the range of times I want each level to appear but then I get error. Can the restrictions be simplified? Any suggestions welcome!
Olivia

Design
alts = prog1*, prog2*, sq
;rows = 24
;block = 3, minsum
;eff = (mnl, d)
; alg=mfederov (stop=total(500000 iterations), candidates = 1000)
;require:
prog1.cost<>prog2.cost,
prog2.sa<>prog1.sa or prog2.sv<>prog1.sv or prog2.de<>prog1.de
; reject:
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv>=prog2.sv and prog1.cost<prog2.cost,
prog1.sa>prog2.sa and prog1.de>=prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog1.sa>=prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv>=prog1.sv and prog2.cost<prog1.cost,
prog2.sa>prog1.sa and prog2.de>=prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog2.sa>=prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv<=prog2.sv and prog1.cost>prog2.cost,
prog1.sa>prog2.sa and prog1.de<=prog2.de and prog1.sv>prog2.sv and prog1.cost>prog2.cost,
prog1.sa<=prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost>prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv<=prog1.sv and prog2.cost>prog1.cost,
prog2.sa>prog1.sa and prog2.de<=prog1.de and prog2.sv>prog1.sv and prog2.cost>prog1.cost,
prog2.sa<=prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost>prog1.cost,
prog1.sa=prog2.sa and prog1.de=prog2.de and prog1.sv<prog2.sv and prog1.cost>prog2.cost,
prog1.sa=prog2.sa and prog1.de<prog2.de and prog1.sv=prog2.sv and prog1.cost>prog2.cost,
prog1.sa<prog2.sa and prog1.de=prog2.de and prog1.sv=prog2.sv and prog1.cost>prog2.cost,
prog2.sa=prog1.sa and prog2.de=prog1.de and prog2.sv<prog1.sv and prog2.cost>prog1.cost,
prog2.sa=prog1.sa and prog2.de<prog1.de and prog2.sv=prog1.sv and prog2.cost>prog1.cost,
prog2.sa<prog1.sa and prog2.de=prog1.de and prog2.sv=prog1.sv and prog2.cost>prog1.cost,
prog1.sa = sq.sasq and prog1.de = sq.desq and prog1.sv = sq.svsq,
prog2.sa = sq.sasq and prog2.de = sq.desq and prog2.sv = sq.svsq
;model:
U(prog1) = b2[0]* sa[13,20,26](5-8,5-8,5-8) + b3[0] * de[15,23,30](5-8,5-8,5-8) + b4[0] * sv[20,30,40](5-8,5-8,5-8) + b5[0] * cost[2,5,8,11](3-6,3-6,3-6,3-6) /
U(prog2) = b2 * sa + b3 * de + b4 * sv + b5 * cost/
U(sq) = b1[0]+ b2 * sasq[13] + b3 * desq[15] + b4 * svsq[20] + b5 * costsq[0]
$
Olive
 
Posts: 1
Joined: Tue Jul 17, 2018 11:53 pm

Re: Efficient design with attribute level balance- possible?

Postby Michiel Bliemer » Fri Jul 27, 2018 3:31 pm

In your syntax you are requesting that the levels of the first three attributes appear each a maximum of 8 times and the levels of the fourth attribute a maximum of 6 times. Since rows = 24 this means that you are requesting perfect attribute level balance (8+8+8=24 and 6+6+6+6=24). This is too restrictive and Ngene will not be able to find a design that satisfies these strict requirements. In the syntax below I have relaxed the constraints to 6-10 (range around 8) and to 4-8 (range around 6). This syntax should run (it does on my computer).

Further, I have removed 'candidates = 1000' since a larger candidate set makes it easier to find a design that satisfies all constraints. The size of the candidate set is 4044, which can be considered in its entirety and hence there is no need to constrain the size of the candidate set.

Design
alts = prog1*, prog2*, sq
;rows = 24
;block = 3, minsum
;eff = (mnl, d)
;alg=mfederov(stop=total(500000 iterations))
;require:
prog1.cost<>prog2.cost,
prog2.sa<>prog1.sa or prog2.sv<>prog1.sv or prog2.de<>prog1.de
;reject:
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv>=prog2.sv and prog1.cost<prog2.cost,
prog1.sa>prog2.sa and prog1.de>=prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog1.sa>=prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost<prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv>=prog1.sv and prog2.cost<prog1.cost,
prog2.sa>prog1.sa and prog2.de>=prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog2.sa>=prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost<prog1.cost,
prog1.sa>prog2.sa and prog1.de>prog2.de and prog1.sv<=prog2.sv and prog1.cost>prog2.cost,
prog1.sa>prog2.sa and prog1.de<=prog2.de and prog1.sv>prog2.sv and prog1.cost>prog2.cost,
prog1.sa<=prog2.sa and prog1.de>prog2.de and prog1.sv>prog2.sv and prog1.cost>prog2.cost,
prog2.sa>prog1.sa and prog2.de>prog1.de and prog2.sv<=prog1.sv and prog2.cost>prog1.cost,
prog2.sa>prog1.sa and prog2.de<=prog1.de and prog2.sv>prog1.sv and prog2.cost>prog1.cost,
prog2.sa<=prog1.sa and prog2.de>prog1.de and prog2.sv>prog1.sv and prog2.cost>prog1.cost,
prog1.sa=prog2.sa and prog1.de=prog2.de and prog1.sv<prog2.sv and prog1.cost>prog2.cost,
prog1.sa=prog2.sa and prog1.de<prog2.de and prog1.sv=prog2.sv and prog1.cost>prog2.cost,
prog1.sa<prog2.sa and prog1.de=prog2.de and prog1.sv=prog2.sv and prog1.cost>prog2.cost,
prog2.sa=prog1.sa and prog2.de=prog1.de and prog2.sv<prog1.sv and prog2.cost>prog1.cost,
prog2.sa=prog1.sa and prog2.de<prog1.de and prog2.sv=prog1.sv and prog2.cost>prog1.cost,
prog2.sa<prog1.sa and prog2.de=prog1.de and prog2.sv=prog1.sv and prog2.cost>prog1.cost,
prog1.sa = sq.sasq and prog1.de = sq.desq and prog1.sv = sq.svsq,
prog2.sa = sq.sasq and prog2.de = sq.desq and prog2.sv = sq.svsq
;model:
U(prog1) = b2[0]* sa[13,20,26](6-10,6-10,6-10) + b3[0] * de[15,23,30](6-10,6-10,6-10) + b4[0] * sv[20,30,40](6-10,6-10,6-10) + b5[0] * cost[2,5,8,11](4-8,4-8,4-8,4-8) /
U(prog2) = b2 * sa + b3 * de + b4 * sv + b5 * cost/
U(sq) = b1[0]+ b2 * sasq[13] + b3 * desq[15] + b4 * svsq[20] + b5 * costsq[0]
$

Michiel
Michiel Bliemer
 
Posts: 1705
Joined: Tue Mar 31, 2009 4:13 pm


Return to Choice experiments - general

Who is online

Users browsing this forum: Google [Bot] and 7 guests

cron