Patient profile

This forum is for posts that specifically focus on Ngene.

Moderators: Andrew Collins, Michiel Bliemer, johnr

Patient profile

Postby annrat » Wed Jun 09, 2021 9:44 am

Dear Michiel

I'm currently finalising my clinician DCE. Alternatives are drug treatment v no drug treatment, containing 8 attributes, of 2-3 levels each.
I want to set 2 of the attributes (patient age and presence of comorbidities) as part of a patient profile so they need to be the same across both alternatives.
Here's my attempt at the syntax but I'm guessing there's a neater way to do this?

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,s)
;block=6
;cond:
if(drug.agea=50, nodrug.ageb=50),
if(drug.agea=66, nodrug.ageb=66),
if(drug.agea=81, nodrug.ageb=81),
if(drug.comora=0, nodrug.comorb=0),
if(drug.comora=1, nodrug.comorb=1),
if(drug.rega=4, drug.costa=[750,1500]),
if(drug.recura=50, nodrug.recurb=[56,62])

;model:
U(drug)= age[-0.02]*agea[50,66,81]+comor[-0.7]*comora[0,1]+reg[-0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.04]*milda[1,12,37]+perm[-0.15]*perma[1,10,14]+fatal[-0.75]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+age[-0.02]*ageb[50,66,81]+comor[-0.7]*comorb[0,1]+reg[-0.3]*regb[0]+recur[-0.1]*recurb[50,56,62]+mild[-0.04]*mildb[0]+perm[-0.15]*permb[0]+fatal[-0.75]*fatalb[0]+cost[-0.0001]*costb[0]
$

However, this generates a very inefficient design:

D error 141754.197771
A error 7.35169149261073E+29
B estimate 40.963078
S estimate 4.61062274588219E+31

Prior age comor reg recur mild perm fatal cost
Fixed prior value -0.02 -0.7 -0.3 -0.1 -0.04 -0.15 -0.75 -0.0001
Sp estimates 4.38743896994142E+30 4.61062274588219E+31 28.145845 1.583803 1.93559 0.848004 1.138169 20.650235
Sp t-ratios 0 0 0.369444 1.557419 1.4088 2.128419 1.837185 0.431314

Thank you for your assistance.

Kind regards
Ann :)
annrat
 
Posts: 14
Joined: Wed Feb 17, 2021 7:18 am

Re: Patient profile

Postby Michiel Bliemer » Wed Jun 09, 2021 10:18 am

Hi Ann,

The patient description is a so-called scenario, and age and comorbidities are scenario variables. As you state, these variables need to be the same across the alternatives (just like characteristics of the respondent when including in the utility function).

To answer your first question, there is a nicer way to do this in Ngene, see also Scenarios in the Ngene manual, as follows:

U(drug) = age * AGEA[50,66,81] + ...
U(nodrug) = age * AGEB[AGEA] + ...

This makes sure that AGEB is the same as AGEA.

To answer your second question, the D-error is extremely high because it is not possible to estimate this model, not all parameters are identifiable. For example, assume that the age of the patient is 50 years old, then:

U(drug) = age * 50 + ...
U(nodrug) = age * 50 + ...

Since the contribution to utility of age is always the same across both alternatives, it drops out and parameter age cannot be estimated.

There are two ways to overcome this:

1. Use interactions with attributes, e.g. beta * agea * rega
2. Use a labelled opt-out alternative

In your case, I think that "nodrug" is actually the opt-out alternative. If you formulate your attributes for "drug" such that they are relative to "nodrug", i.e. "many side-effects" or "improvement in health of X", then "nodrug" actually does not need any attribute levels and simply has a utility of zero. In that case, you can add your scenario variables just to "drug" (or "nodrug") as a main effect:

U(drug)= age[-0.02]*agea[50,66,81]+comor[-0.7]*comora[0,1]+reg[-0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.04]*milda[1,12,37]+perm[-0.15]*perma[1,10,14]+fatal[-0.75]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug) = asc[-0.3]

The interpretation of the age parameter is now that patients with higher age are less likely to get a drug treatment.

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

Re: Patient profile

Postby annrat » Mon Jul 26, 2021 1:29 pm

Hi Michiel,

Thank you for your response regarding my clinician DCE design.
I'm still struggling to fix the variables age and comorbidities across both alternatives (drug v no drug), and the D error is still tens of thousands!

I have 8 attributes, 6 flexible 2 fixed (age, comorbidities) across both alternatives. One of my supervisors suggested using Modified Federov and reject/require commands, but I'm struggling with the syntax.
Regarding your suggestion about removing the 2 fixed variables (age and comorbidities) from the no drug alternative, this would suggest those characteristics only influence utilities for drug treatment which isn’t the case.

Current syntax options below:

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,s)
;block=6
;alg = mfederov;
;reject:
drug.agea <> nodrug.agea,
drug.comora <> nodrug.comora,
drug.recura=nodrug.recurb
;require:
drug.rega = 4, drug.costa < 6000

;model:
U(drug)= age[0.02]*agea[50,66,81]+comor[-0.3]*comora[0,1]+reg[-0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.04]*milda[1,12,37]+perm[-0.15]*perma[1,10,14]+fatal[-0.75]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+age*agea+comor*comora+recur*recurb[50,56,62]
$

The following results were returned?

MNL efficiency measures
D error Undefined
A error Undefined
B estimate 0
S estimate Undefined
Prior age comor reg recur mild perm fatal cost
Fixed prior value 0.02 -0.3 -0.3 -0.1 -0.04 -0.15 -0.75 -0.0001
Sp estimates 0 0 0 0 0 0 0 0
Sp t-ratios 0 0 0 0 0 0 0 0

For the MNL model syntax/results as follows:

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,d)
;block=6
;cond:
if(drug.rega=4, drug.costa=[750,1500]),
if(drug.recura=50, nodrug.recurb=[56,62])
;model:
U(drug)= age[0.02]*agea[50,66,81]+comor[-0.3]*comora[0,1]+reg[0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.004]*milda[1,12,37]+perm[-0.1]*perma[1,10,14]+fatal[-0.3]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+age*ageb[agea]+comor*comorb[comora]+recur*recurb[50,56,62]
$

MNL efficiency measures

D error 50274.492658
A error 1.47750347821196E+29
B estimate 71.87929
S estimate 1.13506204675582E+32

Prior age comor reg recur mild perm fatal cost
Fixed prior value -0.1 -0.2 0.2 -0.1 -0.004 -0.1 -0.15 -0.0002
Sp estimates 5.337024959428E+28 1.13506204675582E+32 34.664962 0.770636 72.327826 1.035244 7.127499 1.770783
Sp t-ratios 0 0 0.332898 2.232706 0.230464 1.926348 0.734155 1.472901
annrat
 
Posts: 14
Joined: Wed Feb 17, 2021 7:18 am

Re: Patient profile

Postby annrat » Mon Jul 26, 2021 1:32 pm

Hi Michiel,

Thank you for your response regarding my clinician DCE design.
I'm still struggling to fix the variables age and comorbidities across both alternatives (drug v no drug), and the D error is still tens of thousands!

I have 8 attributes, 6 flexible 2 fixed (age, comorbidities) across both alternatives. One of my supervisors suggested using Modified Federov and reject/require commands, but I struggled with the syntax.
Regarding your suggestion about removing the 2 fixed variables (age and comorbidities) from the no drug alternative, this would suggest those characteristics only influence utilities for drug treatment which isn’t the case.

Current syntax options are below:

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,s)
;block=6
;alg = mfederov;
;reject:
drug.agea <> nodrug.agea,
drug.comora <> nodrug.comora,
drug.recura=nodrug.recurb
;require:
drug.rega = 4, drug.costa < 6000

;model:
U(drug)= age[0.02]*agea[50,66,81]+comor[-0.3]*comora[0,1]+reg[-0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.04]*milda[1,12,37]+perm[-0.15]*perma[1,10,14]+fatal[-0.75]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+age*agea+comor*comora+recur*recurb[50,56,62]
$

The following results were returned?

MNL efficiency measures
D error Undefined
A error Undefined
B estimate 0
S estimate Undefined
Prior age comor reg recur mild perm fatal cost
Fixed prior value 0.02 -0.3 -0.3 -0.1 -0.04 -0.15 -0.75 -0.0001
Sp estimates 0 0 0 0 0 0 0 0
Sp t-ratios 0 0 0 0 0 0 0 0

For the MNL model, syntax/results are as follows:

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,d)
;block=6
;cond:
if(drug.rega=4, drug.costa=[750,1500]),
if(drug.recura=50, nodrug.recurb=[56,62])
;model:
U(drug)= age[0.02]*agea[50,66,81]+comor[-0.3]*comora[0,1]+reg[0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.004]*milda[1,12,37]+perm[-0.1]*perma[1,10,14]+fatal[-0.3]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+age*ageb[agea]+comor*comorb[comora]+recur*recurb[50,56,62]
$

MNL efficiency measures

D error 50274.492658
A error 1.47750347821196E+29
B estimate 71.87929
S estimate 1.13506204675582E+32

Prior age comor reg recur mild perm fatal cost
Fixed prior value -0.1 -0.2 0.2 -0.1 -0.004 -0.1 -0.15 -0.0002
Sp estimates 5.337024959428E+28 1.13506204675582E+32 34.664962 0.770636 72.327826 1.035244 7.127499 1.770783
Sp t-ratios 0 0 0.332898 2.232706 0.230464 1.926348 0.734155 1.472901

Any ideas would be gratefully received.
Thankis in advance, Ann
annrat
 
Posts: 14
Joined: Wed Feb 17, 2021 7:18 am

Re: Patient profile

Postby Michiel Bliemer » Mon Jul 26, 2021 1:45 pm

Hi Ann,

As I mentioned in my previous response, you cannot estimate such a model as some parameters are not identifiable. You need to provide Ngene with a model that can actually be estimated, and your model cannot be estimated because it contains a constant value across both alternatives, namely agea = ageb, and therefore coefficient age cannot be estimated.

The only way to insert scenario variables that are constant across alternatives are:

1. In an unlabelled experiment they need to be specified as interaction effects
2. In a labelled experiment you can add them as main effects but you need to remove the variable in at least one alternative.

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

Re: Patient profile

Postby Michiel Bliemer » Mon Jul 26, 2021 1:52 pm

Btw, I think that maybe you misunderstand how a labelled experiment works. My suggestion was to remove age from nodrug. Clearly, drug anf nodrug are labelled alternatives since these labels have a meaning. In a labelled experiment, you can use:

U(drug) = age * age[...] + .
U(nodrug) = ...

where you leave age out of the nodrug alternative. If age is a positive coefficient, then for older people 'drug' will become more preferred. Or you can use

U(drug) = ...
U(nodrug) = age * age[...] + ...

where you leave it out of the drug alternative.

In any case, in a logit model ONLY DIFFERENCES in utility functions are of interest. So adding it either in drug or nodrug affects the probabilities of BOTH alternatives, but since only differences are of interest, you would only change the utility with respect to age in one of the two alternatives (and you can pick which one, it does not matter).

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

Re: Patient profile

Postby annrat » Wed Aug 04, 2021 2:36 pm

Dear Michiel,

Thank you so much for your patience and assistance. I've revised my Ngene syntax in line with our conversations.
I had one question about age as an attribute. I assume there are 2 ways to managing attribute levels,
1. Categorical level, i.e. 18-39 years = 0, 40-59 years = 1, 60+ years = 2 [0,1,2] OR
2. Continuous value, range of years 18-100 years [18, 65, 100]

I'm keen to report the difference each year of age makes to the preference; therefore, I assume option 2 would be preferable.

Design
;alts=drug,nodrug
;rows=72
;eff=(mnl,d)
;block=6
;cond:
if(drug.rega=4, drug.costa=[750,1500]),
if(drug.recura=50, nodrug.recurb=[56,62])

;model:
U(drug)= age[-0.02]*agea[18,65,100]+comor[-0.2]*comora[0,1]+reg[0.3]*rega[3,4]+recur[-0.1]*recura[36,42,50]+mild[-0.05]*milda[1,12,37]+perm[-0.1]*perma[1,10,14]+fatal[-0.2]*fatala[0,1,3]+cost[-0.0001]*costa[750,1500,6000] /
U(nodrug)=ascb[-0.3]+ recur*recurb[50,56,62]
$

Thanks, Ann :)
annrat
 
Posts: 14
Joined: Wed Feb 17, 2021 7:18 am

Re: Patient profile

Postby Michiel Bliemer » Wed Aug 04, 2021 3:04 pm

Yes with categories and dummy coding you are restricted in using age to compute elasticities, willingness-to-pay, interaction effects, etc, so if you could use a specific age level that would be preferred.

According to this syntax, you present respondents with scenarios where the patient age is 18, 65, or 100 years old. Is that correct? You could use a larger number of levels, e.g. [25, 35, 45, 55, 65, 75], to better test for age effects and also possibly investigate nonlinearities with respect to age.

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

Re: Patient profile

Postby annrat » Fri Aug 06, 2021 12:30 pm

Dear Michiel,

Thank you for your prompt response.
As age is an attribute with levels, I assume there's no way to have a continuous level?
Therefore as you stated are my options either more levels [25, 35, 45, 55, 65, 75], or categories i.e. 18-39 years = 0, 40-59 years = 1, 60+ years = 2 [0,1,2].
I assume I won't be able to report preferences for each year of patient age, for example, for each year of increasing patient age, the preference for the drug was xx? Instead only as differences between groups?
I’m mindful you can add in socio-demographics into Nlogit coding but as this is not the age of the respondent but the age of the patient presented in a profile on which Drs make a decision I’m keen to make sure my design is correct.

Just thinking again if Drs only get shown 12 scenarios is it better to limit the number of levels? Perhaps 4 levels instead of 6?

Thanks, Ann
annrat
 
Posts: 14
Joined: Wed Feb 17, 2021 7:18 am

Re: Patient profile

Postby Michiel Bliemer » Fri Aug 06, 2021 1:40 pm

Yes 4 or 6 age levels is probably fine. Whether you consider it as a numerical attribute or a categorical attribute depends entirely on your research question. The main difference is in the number of parameters that you need to estimate.

If you want to add interactions, e.g. beta * recura * age, which allows you to test for differences in preferences wrt attribute recura that may vary with age, then using a numerical attribute is much easier since with categorical dummies it requires many interaction effects and therefore estimating many coefficients.

If you are only interested in the impact of age in chosing drug versus no drug, then using age as a categorical variable and entering it as a main effect is fine.

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

Next

Return to Choice experiments - Ngene

Who is online

Users browsing this forum: No registered users and 20 guests