To do list

Over the summer, I’ve had several interesting discussion with colleagues, working/using/trying out some of our packages, including BCEA, survHE and SWSamp.

Joke Bilcke (to be honest, I’m not sure this is the best link to her webpage, but I hope it is!) contacted me to suggest a couple of changes in BCEA. In particular, she has pointed out that when doing an analysis for multiple comparisons (which in this context simply means that there are more than 2 interventions being assessed), then the standard analysis considers by default pairwise comparisons.

In other words, if you have interventions \(t=1,2,3,4,\ldots,T\) and set one (say \(t=1\)) as the reference, then BCEA presents the analysis by assuming you want to contrast \(t=1\) vs \(t=2\), \(t=1\) vs \(t=3\), \(\ldots\) and \(t=1\) vs \(t=T\). Here’s a simple example.

# Loads BCEA

# Loads an example dataset containing more than 2 interventions
# that's the smoking cessation example we discuss in the BCEA book (

# Runs the BCEA basic analysis using t=4 ("Group counselling") as the "reference" (= new intervention)
# against each of the comparators
m = bcea(e,c,ref=4,interventions=treats)
# Shows a summary of results

Cost-effectiveness analysis summary 

Reference intervention:  Group counselling
Comparator intervention(s): No treatment
                          : Self-help
                          : Individual counselling

Optimal decision: choose No treatment for k < 200
                         Self-help for 200 <= k < 300
                         Group counselling for k >= 300

Analysis for willingness to pay parameter k = 25000

                       Expected utility
No treatment                      10263
Self-help                         17423
Individual counselling            22289
Group counselling                 28182

                                                EIB  CEAC   ICER
Group counselling vs No treatment           17919.7 1.000 198.33
Group counselling vs Self-help              10759.4 0.878 224.67
Group counselling vs Individual counselling  5893.2 0.724 203.57

Optimal intervention (max expected utility) for k=25000: Group counselling
EVPI 1545.1
# Plots the CEAC

What Joke has (rightly!) pointed out is that when comparing more than two interventions with respect to cost-effectiveness, all strategies should be compared incrementally to all other interventions (not only to a single other intervention). Because cost-effectiveness acceptability curves show the proportion of times an intervention result in highest net benefit among all interventions compared, by definition probabilities sum up to one. (I almost quoted her verbatim here). As is obvious from the output of ceac.plot, the CEACs here do not sum to 1 — and that’s OK, because they are showing a slightly different output, i.e. the analysis of \(t=4\) agains each other competitor in a 1:1 fashion.

Now, BCEA does have a facility to do what Joke wanted — simply need to run the function multi.ce, for example like this.

# Makes the "multiple comparisons" analysis
mce = multi.ce(m)
# Shows that the CEACs now sum to 1
colnames(tab)=c("No treat","Self-help","Ind counselling","Group counselling","Sum CEAC")
     No treat Self-help Ind counselling Group counselling Sum CEAC
[1,]    1.000     0.000           0.000             0.000        1
[2,]    0.772     0.184           0.000             0.044        1
[3,]    0.136     0.338           0.232             0.294        1
[4,]    0.022     0.226           0.288             0.464        1
[5,]    0.006     0.180           0.290             0.524        1
[6,]    0.004     0.166           0.270             0.560        1
# And plots the output

Joke suggested that actually this should be made the default for the case in which the number of interventions is greater than 2 — I don’t disagree. Like I told her, I kind of like the ability of BCEA to allow for both kinds of analyses, the “pairwise” and the “overall” (for lack of a better word). But I see her point that things may be confusing. Shouldn’t be too complicated to modify the code so that bcea goes to the pairwise analysis (i.e. is unchanged) when \(T=2\) but runs multi.ce in the background when \(T>2\) and I’ll try and find some time to do this — and then see how it is…

Also, the other day I was reading a tweet by Lukas Kremer

which I think is actually pretty cool. Again, shouldn’t be too complicated to modify the current bcea code used to construct the contour for the underlying distribution of the benefit and cost differentials \((\Delta_e,\Delta_c)\), which underlies the cost-effectiveness plane.

I’ll try and make these two changes happen as soon as I can — which may not be super soon, though…

The second person to contact me (this time about survHE) was Alberto Carmona-Bayonas (again, there may be a more appropriate website to link to, but I think this is the best I could find…). Alberto has been (kindly!) trying out survHE, specifically with the Bayesian modes of inference, using INLA or rstan as the underlying engine.

He did have a few questions, mainly on how to set up priors — there is some explanation in the extended manual (incidentally this has now been accepted as a full paper in the Journal of Statistical Software, but I’m told there’s a long back-log so it may be actually published some ways down the line…).

But also, I think he’s right in suggesting that a few more comprehensive vignettes may be helpful — I’ve cheekly asked him to start perhaps drafting one based on the different tests he was doing (at least I’ve offered full acknowledgement/authorship on that, so I don’t feel too bad about it). Again, more work needed and hopefully I’ll manage to find some time to do this — not necessarily in the immediate future…

Alberto also points me out to this arxiv paper, which compares several packages for survival analysis, including survHE, which is also kind of cool!

comments powered by Disqus