Efficient design with attribute level balance- possible?
Posted: 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]
$
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]
$