Hunt for an efficient design

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Hunt for an efficient design

Postby asjad » Fri Feb 28, 2020 2:44 pm

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
asjad
 
Posts: 4
Joined: Wed Feb 26, 2020 9:03 pm

Re: Hunt for an efficient design

Postby paulm » Sat Feb 29, 2020 1:23 am

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.
paulm
 
Posts: 25
Joined: Wed Jan 09, 2013 3:51 am

Re: Hunt for an efficient design

Postby asjad » Sat Feb 29, 2020 2:59 am

Thank you for the quick reply.
What would you suggest? How can I improve the design? Should I need to conduct another pretest?
asjad
 
Posts: 4
Joined: Wed Feb 26, 2020 9:03 pm

Re: Hunt for an efficient design

Postby Michiel Bliemer » Mon Mar 02, 2020 9:16 am

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
Michiel Bliemer
 
Posts: 898
Joined: Tue Mar 31, 2009 4:13 pm

Re: Hunt for an efficient design

Postby asjad » Tue Mar 17, 2020 3:19 am

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?
asjad
 
Posts: 4
Joined: Wed Feb 26, 2020 9:03 pm

Re: Hunt for an efficient design

Postby Michiel Bliemer » Tue Mar 17, 2020 9:17 am

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
Michiel Bliemer
 
Posts: 898
Joined: Tue Mar 31, 2009 4:13 pm

Re: Hunt for an efficient design

Postby asjad » Tue Mar 17, 2020 2:36 pm

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
asjad
 
Posts: 4
Joined: Wed Feb 26, 2020 9:03 pm

Re: Hunt for an efficient design

Postby Michiel Bliemer » Wed Mar 18, 2020 1:01 pm

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
Michiel Bliemer
 
Posts: 898
Joined: Tue Mar 31, 2009 4:13 pm


Return to Ngene

Who is online

Users browsing this forum: No registered users and 7 guests

cron