Page 1 of 1
Hunt for an efficient design
Posted:
Fri Feb 28, 2020 2:44 pm
by asjad
Dear All,
I want to generate an unlabelled DCE design, which will have three alternatives where the last alternative would be a no-choice alternative. There are four attributes such as 3 continuous with 3 levels and one dummy coded with 2 levels. I have already conducted a pilot with 40 respondents for each two conservation agriculture studies. Here is my Ngene syntax for your perusal.
Design
;alts = alt0, alt1, alt2
;block = 4, minsum, total(1 mins)
;rows = 36
;eff=(mnl,d)
;rdraws = halton(250)
;model:
U(alt1) = b2 [(n, -0.022641, 0.0222153)] * L [3,6,9] + b3 [(n, -0.0004528, 0.002698)] * A [25,50,75] + b4.dummy [(n,-0.06963,0.1088352)] * M[0,1] + b5 [(n, 0.01657, 0.0044901)] * C[15,30,45] /
U(alt2) = b2 * L + b3 * A + b4 * M + b5 * C
;alg=swap(stop=total(10 mins))
$
Output
D error 0.001254
S estimate 1012.195146 > 100
Design
;alts = alt0, alt1, alt2
;block = 4, minsum, total(1 mins)
;rows = 36
;eff=(mnl,d)
;rdraws = halton(250)
;model:
U(alt1) = b2 [(n, -0.022798, 0.0224982)] * L [3,6,9] + b3 [(n, -0.003948, 0.0027521)] * A [25,50,75] + b4.dummy [(n,0.2821256,0.1101943)] * M[0,1] + b5 [(n, 0.14207, 0.003422)] * C[30,50,70] /
U(alt2) = b2 * L + b3 * A + b4 * M + b5 * C
;alg=swap(stop=total(10 mins))
$
Output
D error 0.003526
S estimate 38.144589 <100
The only difference you could find the subsidy attribute and their levels in each study, represented by c in both cases.
Specific Questions are related to an efficient design.
1: Are the different syntax correct?
2: What could be the possible reason in the first syntax that I got high S estimates?
Thanks
Re: Hunt for an efficient design
Posted:
Sat Feb 29, 2020 1:23 am
by paulm
In your first syntax, your priors are closer to zero. In the second, the priors are farther from zero. The S estimate is an estimate of the sample size required so when you run the model, the parameters computed are statistically significant. The closer a parameter is to zero, the higher sample you need to be confident that estimate is different from zero. That's why you have a higher S value in the first model.
Re: Hunt for an efficient design
Posted:
Sat Feb 29, 2020 2:59 am
by asjad
Thank you for the quick reply.
What would you suggest? How can I improve the design? Should I need to conduct another pretest?
Re: Hunt for an efficient design
Posted:
Mon Mar 02, 2020 9:16 am
by Michiel Bliemer
Since you have a no-choice alternative, you MUST include a constant, either (the same constant) in alt1 and alt2, or in alt3:
U(alt0) = b0[estimated prior]
or
U(alt1) = b0[estimated prior] + ...
U(alt2) = b0 + ...
This will also affect all other priors, so please estimate your model again including this constant and update your priors .
Michiel
Re: Hunt for an efficient design
Posted:
Tue Mar 17, 2020 3:19 am
by asjad
Hi Michiel,
Thank you for your specific comment. I have included prior to a constant, which is basically ASC coefficient (status quo), is that right?. Please see the below syntax for your perusal.
Design
;alts = alt0, alt1, alt2
;block = 6, minsum, total(1 mins)
;rows = 36
;eff = (mnl, d, mean)
;rep = 250
;rdraws = halton(250)
;bdraws = halton(250)
;model:
U(alt0) = b1 [n,-2.8699,0.3728241] /
U(alt1) = b2 [(n, -0.02278, 0.0158401)] * L [3,6,9] + b3 [(n, -0.00426, 0.0019297)] * A [25,50,75] + b4 [n,0.329495,0.1101941] * M[0,1] + b5 [(n, 0.015281, 0.0027323)] * C[30,50,70] /
U(alt2) = b2 * L + b3 * A + b4 * M + b5 * C
$
What would you suggest in terms of strict dominancy as well as overall design?
Re: Hunt for an efficient design
Posted:
Tue Mar 17, 2020 9:17 am
by Michiel Bliemer
Yes the ASC is essentially for the optout alternative. Note that alt0 is NOT a status quo alternative given the way you have specified it. A status quo alternative must have attribute levels, whereas an optout alternative does not (can only have a constant).
You are using a mix of Bayesian priors, e.g. b2 [(n, -0.02278, 0.0158401)], and random parameters, e.g. b1 [n,-2.8699,0.3728241], is that intentional? You specify random parameters but you state mnl instead of rppanel. I would strongly recommend to use only Bayesian priors and not random parameters and optimise for an MNL model.
You can add dominance checks by using ;alts = alt0, alt1*, alt2*
Michiel
Re: Hunt for an efficient design
Posted:
Tue Mar 17, 2020 2:36 pm
by asjad
Here it is, however, still not working
Design
;alts = alt0, alt1*, alt2*
;block = 4, minsum, total(1 mins)
;rows = 36
;eff = (mnl, d, mean)
;rep = 250
;rdraws = halton(250)
;bdraws = halton(250)
;model:
U(alt0) = b1 [(n,-2.8699,0.3728241)] /
U(alt1) = b2 [(n, -0.02278, 0.0158401)] * L [3,6,9] + b3 [(n, -0.00426, 0.0019297)] * A [25,50,75] + b4 [(n,0.329495,0.1101941)] * M[0,1] + b5 [(n, 0.015281, 0.0027323)] * C[30,50,70] /
U(alt2) = b2 * L + b3 * A + b4 * M + b5 * C
$
The following error is popping up;
Warning: The ';rdraws' property was specified, but no random priors were specified in the models.
A valid initial random design could not be generated after approximately 10 seconds. In this time, of the 103199 attempts made, there were 0 row repetitions, 4380 alternative repetitions, and 98819 cases of dominance. There are a number of possible causes for this, including the specification of too many constraints, not having enough attributes or attribute levels for the number of rows required, and the use of too many scenario attributes. A design may yet be found, and the search will continue for 10 minutes. Alternatively, you can stop the run and alter the syntax.
A
Re: Hunt for an efficient design
Posted:
Wed Mar 18, 2020 1:01 pm
by Michiel Bliemer
In the syntax below I have made some changes, this code will run properly.
- Code: Select all
Design
;alts = alt0, alt1*, alt2*
;block = 4, minsum, total(1 mins)
;rows = 36
;alg = mfederov
;eff = (mnl, d, mean)
;bdraws = gauss(3)
;model:
U(alt0) = b1 [(n,-2.8699,0.3728241)] /
U(alt1) = b2 [(n, -0.02278, 0.0158401)] * L [3,6,9](10-14,10-14,10-14)
+ b3 [(n, -0.00426, 0.0019297)] * A [25,50,75](10-14,10-14,10-14)
+ b4 [(n,0.329495,0.1101941)] * M[0,1] + b5 [(n, 0.015281, 0.0027323)] * C[30,50,70](10-14,10-14,10-14) /
U(alt2) = b2 * L + b3 * A + b4 * M + b5 * C
$
Some comments:
1. You do not need ;rdraws or ;rep so I removed them.
2. The default swapping algorithm is not able to find a design that satisfies all your constraints, namely dominance constraints and attribute level balance. To resolve this, I changed to the modified Federov algorithm. Note that your design problem is heavily constraint, there exist only 1674 choice tasks that satisfy your dominance checks, as is indicated when you run the syntax above (the default is a candidate set of 2000, but Ngene lowers this automatically if needed).
3. Unlike the default swapping algorithm, the mfederov algorithm does not satisfy attribute level balance. In order ensure that each level appears between 10 and 14 times with the 36 rows, I added level balance constraints by adding (10-14,10-14,10-14) after each attribute.
4. Note that opening a design takes very long now that you have specified 1 minute for the blocking. You could consider removing this.
5. I used gauss(3) instead of halton(250). Given that you have 5 parameters, gauss(3) will do 243 draws. Gaussian draws are better than Halton draws because they cover the space better.
Michiel