Hello,
I would greatly appreciate some direction on the best approach regarding the following design, please.
Three alternatives: two injectables (4 different modes of administration, two of which are provided by clinicians Who=1) and one oral treatment (self admin Who=0)
Which of the following specification options is correct, considering the following:
1) Pain, Redness, Nodules are not applicable for orals (i.e., No pain, No redness, No nodules). These are applicable to injectables only: mild, moderate, severe
2) General side effects are applicable to both orals and injectables (share the same levels)
3) We want half of the choice tasks to show a frequency of "4" and half a frequency of "5". 4 and 5 are frequencies only relevant to orals (daily, weekly)
4) We will implement a two step approach i.e., if orals are chosen in step 1, then respondents will be "forced" to pick one of the injectables in step 2.
5) Priors were produced from a pilot study
Thank you in advance!
Option 1 :
Design;
;alts = alt1, alt2, sq
;rows = 16
;eff = (mnl,d)
;cond:
if(alt1.Mode=4, alt1.Who=1),
if(alt2.Mode=4, alt2.Who=1),
if(alt1.Mode=3, alt1.Who=1),
if(alt2.Mode=3, alt2.Who=1)
; alg = sc
;model:
U(alt1)= b1[-0.04] * Mode[1,2,3,4]+
b2[0.4] * Freq[0,1,2] +
b3[-0.1] * Who[0,1]+
b4[-0.3] * Pain[1,2,3] +
b5[0.1] * Red[1,2,3] +
b6[-0.07] * Nod[1,2,3,4] +
b7[-0.06] * Gen[0,5,10]/
U(alt2)= b1 * Mode +
b2 * Freq +
b3 * Who+
b4 * Pain+
b5 * Red+
b6 * Nod+
b7 * Gen/
U(sq) = b8[0.4] * FreqSq[4,5] +
b7 * Gen
$
Option 2 (to show balanced levels for Gen of orals vs. injectables ?)
Design;
;alts = alt1, alt2, sq
;rows = 16
;eff = (mnl,d)
;cond:
if(alt1.Mode=4, alt1.Who=1),
if(alt2.Mode=4, alt2.Who=1),
if(alt1.Mode=3, alt1.Who=1),
if(alt2.Mode=3, alt2.Who=1)
; alg = sc
;model:
U(alt1)= b1[-0.04] * Mode[1,2,3,4]+
b2[0.4] * Freq[0,1,2] +
b3[-0.1] * Who[0,1]+
b4[-0.3] * Pain[1,2,3] +
b5[0.1] * Red[1,2,3] +
b6[-0.07] * Nod[1,2,3,4] +
b7[-0.06] * Gen[0,5,10]/
U(alt2)= b1 * Mode +
b2 * Freq +
b3 * Who+
b4 * Pain+
b5 * Red+
b6 * Nod+
b7 * Gen/
U(sq) = b8[0.4] * FreqSq[4,5] +
b9[-0.06] * GenSq[0,5,10]/
$
Option 3
Design;
;alts = alt1, alt2, sq
;rows = 16
;eff = (mnl,d)
;cond:
if(alt1.Mode=5, alt1.Who=1),
if(alt2.Mode=5, alt2.Who=1),
if(alt1.Mode=4, alt1.Who=1),
if(alt2.Mode=4, alt2.Who=1)
;model:
U(alt1)= b1 * Mode[2,3,4,5] +
b2 * Freq[2,3,4,5] +
b3 * Who[1,2]+
b4 * Pain[2,3,4] +
b5 * Red[2,3,4] +
b6 * Nod[2,3,4,5] +
b7[-0.0001] * Gen[0,5,10]/
U(alt2)= b1 * Mode+
b2 * Freq +
b3 * Who+
b4 * Pain+
b5 * Red+
b6 * Nod+
b7 * Gen/
U(sq) = b1 * ModeSq[1]+
b2 * FreqSq[1] +
b3 * WhoSq[2]+
b4 * PainSq[1]+
b5 * RedSq[1]+
b6 * NodSq[1]+
b7 * GenSq[0,5,10]
$
Design with alternative specific attributes
Moderators: Andrew Collins, Michiel Bliemer, johnr
-
- Posts: 1
- Joined: Mon May 12, 2025 7:21 pm
-
- Posts: 2039
- Joined: Tue Mar 31, 2009 4:13 pm
Re: Design with alternative specific attributes
It is very difficult for me to match your descriptions with the variables in your utility function because you did not put any comments in your script.
So I understand you have something like:
;alts = injectable1*, injectable2*, oral
First of all, you need to use dummy or effects coding for categorical variables. So should not use:
b1[-0.3] * pain[1,2,3]
Instead, you need to use something like
b1.dummy[-0.3|-0.6] * pain[1,2,0] ? 0=mild (base), 1=moderate, 2=severe
where the first prior (-0.3) reflects the utility of level 1 (moderate) relative to base level 0 (mild), and the second prior (-0.6) reflects the level for level 2 (severe) relative to base level 0 (mild). So you need to dummy code your data when you estimate parameters from your pilot study.
Similarly, you need to use
b3.dummy[..] * who[1,0] ? 0=self (base), 1=clinician
Secondly, I suggest you use the default swapping algorithm (so remove ;alg = sc), which will maintain attribute level balance such that you will have equal appearances of 4 and 5.
I think that Option 2 is correct. If you want an alternative-specific coefficient for Gen but use the same levels, then you can simply specify b9[-0.6] * Gen in Option 2.
Option 3 would not make sense if pain etc are not attributes of oral; so then they should not appear in the utility function of the oral alternative.
Further, you need to add an alternative-specific constant for oral, so it would be:
U(oral) = b10 + b8[0.4] * FreqOral[4,5] + b9[-0.06]* Gen
Michiel
So I understand you have something like:
;alts = injectable1*, injectable2*, oral
First of all, you need to use dummy or effects coding for categorical variables. So should not use:
b1[-0.3] * pain[1,2,3]
Instead, you need to use something like
b1.dummy[-0.3|-0.6] * pain[1,2,0] ? 0=mild (base), 1=moderate, 2=severe
where the first prior (-0.3) reflects the utility of level 1 (moderate) relative to base level 0 (mild), and the second prior (-0.6) reflects the level for level 2 (severe) relative to base level 0 (mild). So you need to dummy code your data when you estimate parameters from your pilot study.
Similarly, you need to use
b3.dummy[..] * who[1,0] ? 0=self (base), 1=clinician
Secondly, I suggest you use the default swapping algorithm (so remove ;alg = sc), which will maintain attribute level balance such that you will have equal appearances of 4 and 5.
I think that Option 2 is correct. If you want an alternative-specific coefficient for Gen but use the same levels, then you can simply specify b9[-0.6] * Gen in Option 2.
Option 3 would not make sense if pain etc are not attributes of oral; so then they should not appear in the utility function of the oral alternative.
Further, you need to add an alternative-specific constant for oral, so it would be:
U(oral) = b10 + b8[0.4] * FreqOral[4,5] + b9[-0.06]* Gen
Michiel