DCE Experimental Design for 'Current Testing' Opt-Out

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

DCE Experimental Design for 'Current Testing' Opt-Out

Postby mabbott » Mon Nov 21, 2022 8:40 pm

Hi,

I am currently generating the experimental design for a genetic testing DCE. The attributes and levels are:

1) Chance of Diagnosis: 10% / 20% / 30% / 40%
2) Number of Clinic Visits: 2 / 4 / 6 / 8
3) Time waiting for results: 6 months / 1y / 2y / 3y
4) Cost to you: £0 / £1000 / £2000 / £5000

I am unsure about how I should treat the opt-out alternative within my Ngene design. The opt-out is 'current testing,' which takes the levels in bold (10% chance, 6 visits, 2 years wait and £0 cost). The 'current testing' opt-out will be the same for all respondents.

My current experimental design is as follows:

;eff = (mnl, d)
;alts = alt1*, alt2*, alt3*
;rows = 36
;block = 3
;alg=mfederov(stop = noimprov(3600 secs))

;reject:
alt1.Time=0 and alt1.Visits=3,
alt2.Time=0 and alt2.Visits=3
alt1.Cost=0
alt2.Cost=0

;model :
U(alt1) = asca[0] +
b1.dummy[0.1|0.2|0.3]*Diagnosis[1, 2, 3, 0] +
b2.dummy[-0.1|-0.2|-0.3]*Visits[1, 2, 3, 0] +
b3.dummy[-0.1|-0.2|-0.3]*Time[1, 2, 3, 0] +
b4.dummy[-0.1|-0.2|-0.3]*Cost[1, 2, 3, 0]/

U(alt2) = ascb[0] +
b1.dummy*Diagnosis[1, 2, 3, 0] +
b2.dummy*Visits[1, 2, 3, 0] +
b3.dummy*Time[1, 2, 3, 0] +
b4.dummy*Cost[1, 2, 3, 0]/

U(alt3) = b1.dummy*diagnosis[0] +
b2.dummy*Visits[2] +
b3.dummy*Time[2] +
b3.dummy*Cost[0]
$

Questions
• Do I need to specify the utility function for the opt-out ‘Current Testing’ alternative? I have specified a utility function here because I assumed that utility of the opt out is probably not zero...
• I have added an ASC for alt1 and alt2, but not for the opt-out (alt3). Is this correct?
• I would like to add the constraint that if Waiting time = 6 months, clinic visits cannot = 8. Has this been specified correctly?
• I would like also to add the constraint that alt1 and alt2 must have some cost, while alt 3 (current testing opt out) always costs £0. Has this been specified correctly?

Any advice is greatly appreciated!

Thanks,

Michael
mabbott
 
Posts: 6
Joined: Sat Nov 19, 2022 2:12 am

Re: DCE Experimental Design for 'Current Testing' Opt-Out

Postby Michiel Bliemer » Tue Nov 22, 2022 7:51 am

Your 'opt-out' alternative is actually a status quo alternative. An opt-out has zero utility (essentially choosing not to do any genetic testing), while a status quo alternative has default levels for attributes. So you are correct to give them a level. The way to do this in Ngene for dummy coded attributes is different from numerical attributes, so setting Diagnosis[0] will not work. I have rewritten your script to make it more readable, also using more representative levels for your attributes (note that dummy coding converts everything to 0 and 1, so the values shown for the levels are just labels/placeholders).

Code: Select all
design
;alts = alt1*, alt2*, sq*
;rows = 36
;block = 3
;eff = (mnl, d)

;alg=mfederov(stop = noimprov(3600 secs))

;require:
sq.Diagnosis = 10,
sq.Visits = 6,
sq.Time = 24,
sq.Cost = 0

;reject:
alt1.Time=6 and alt1.Visits=8,
alt2.Time=6 and alt2.Visits=8,
alt1.Cost=0,
alt2.Cost=0

;model :
U(alt1) = asca[0]
        + b1.dummy[0.1|0.2|0.3]    * Diagnosis[20,30,40,10] ? percentage chance of diagnosis
        + b2.dummy[-0.1|-0.2|-0.3] * Visits[4,6,8,2]        ? number of clinic visits
        + b3.dummy[-0.1|-0.2|-0.3] * Time[36,24,12,6]       ? months waiting for results
        + b4.dummy[-0.1|-0.2|-0.3] * Cost[1000,2000,5000,0] ? cost in GBP
        /
U(alt2) = ascb[0]
        + b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost
        /
U(sq)   = b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost
$


The first thing to note is that this results in an Undefined (infinite) D-error because it is not possible to estimate this model due to your constraints alt1.Cost = 0 and alt2.Cost = 0. Namely, Cost = 0 is only used for the status quo alternative, and Cost > 0 is only used for the other alternatives. This makes the constants asca and ascb perfectly confounded. So you have two options.

OPTION A

Remove constants asca and ascb as in script below. You do not need these constants in the design phase since it is an unlabelled experiment, but in the estimation phase you probably want to check for left-to-right bias and add constants. To be able to estimate these constants, you would need to randomise the order of the alternatives and add a dummy variable to all utility functions indicating in which place (first, second, or third) the alternative appeared.

Code: Select all
design
;alts = alt1*, alt2*, sq*
;rows = 36
;block = 3
;eff = (mnl, d)

;alg=mfederov(stop = noimprov(3600 secs))

;require:
sq.Diagnosis = 10,
sq.Visits = 6,
sq.Time = 24,
sq.Cost = 0

;reject:
alt1.Time=6 and alt1.Visits=8,
alt2.Time=6 and alt2.Visits=8,
alt1.Cost=0,
alt2.Cost=0

;model :
U(alt1) = b1.dummy[0.1|0.2|0.3]    * Diagnosis[20,30,40,10] ? percentage chance of diagnosis
        + b2.dummy[-0.1|-0.2|-0.3] * Visits[4,6,8,2]        ? number of clinic visits
        + b3.dummy[-0.1|-0.2|-0.3] * Time[36,24,12,6]       ? months waiting for results
        + b4.dummy[-0.1|-0.2|-0.3] * Cost[1000,2000,5000,0] ? cost in GBP
        /
U(alt2) = b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost
        /
U(sq)   = b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost
$


OPTION B

Make cost a numerical attribute, instead of dummy coding it. This allows you to estimate both constants. You will likely want to impose some attribute level balance constraints on the numerical attribute since the modified Federov algorithm will otherwise mostly use the outer levels (since this is optimal for estimating the parameter of a numerical attribute). So I added (10-14,...) to the cost attribute and set cost_sq[0] without the need to impose constraints on costs.

Code: Select all
design
;alts = alt1*, alt2*, sq*
;rows = 36
;block = 3
;eff = (mnl, d)

;alg=mfederov(stop = noimprov(3600 secs))

;require:
sq.Diagnosis = 10,
sq.Visits = 6,
sq.Time = 24

;reject:
alt1.Time=6 and alt1.Visits=8,
alt2.Time=6 and alt2.Visits=8

;model :
U(alt1) = asca[0]
        + b1.dummy[0.1|0.2|0.3]    * Diagnosis[20,30,40,10] ? percentage chance of diagnosis
        + b2.dummy[-0.1|-0.2|-0.3] * Visits[4,6,8,2]        ? number of clinic visits
        + b3.dummy[-0.1|-0.2|-0.3] * Time[36,24,12,6]       ? months waiting for results
        + b4[-0.0001]              * Cost[1000,2000,5000](10-14,10-14,10-14)   ? cost in GBP
        /
U(alt2) = ascb[0]
        + b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost
        /
U(sq)   = b1                       * Diagnosis
        + b2                       * Visits
        + b3                       * Time
        + b4                       * Cost_sq[0]
$


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

Re: DCE Experimental Design for 'Current Testing' Opt-Out

Postby mabbott » Tue Nov 22, 2022 11:57 pm

Dear Michiel,

Thanks very much for your advice on my experimental design.

I think I will go with Option B - if I understand correctly, this allows me to estimate both alternative-specific constants, ASCa and ASCb, without needing to randomise the order of alternatives? And also without needing to add the constraint that cost_sq=0, as this is specified in the utility function for the status quo alternative?

Looking at the design for Option B, I am also wondering why the order of levels for the Waiting Time attribute is in descending order (i.e. 36, 24, 12, 6) months, whereas the other attributes are in ascending order, with the reference level last (e.g. chance of diagnosis is coded as 20, 30, 40, 10.). Does the order of the levels have any impact on the design?

Thanks again for your advice!

Michael
mabbott
 
Posts: 6
Joined: Sat Nov 19, 2022 2:12 am

Re: DCE Experimental Design for 'Current Testing' Opt-Out

Postby Michiel Bliemer » Thu Nov 24, 2022 7:38 am

Yes Option B allows you to estimate both ASCs without randomisation and does not need the additional constraints to set cost to zero.

You are right, my mistake, the waiting time attribute needs to be ordered [12,24,36,6], where 6 is the reference level and the priors remain the same, indicating that 12 months is worse than 6 months, 24 months is worse than 12 months, etc.

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


Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 43 guests