The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Cost-Effectiveness Efficiency Frontier

Introduction

The line connecting successive points on a cost-effectiveness plane which each represent the effect and cost associated with different treatment alternatives. The gradient of a line segment represents the ICER of the treatment comparison between the two alternatives represented by that segment. The cost-effectiveness frontier consists of the set of points corresponding to treatment alternatives that are considered to be cost-effective at different values of the cost-effectiveness threshold. The steeper the gradient between successive points on the frontier, the higher is the ICER between these treatment alternatives and the more expensive alternative would be considered cost-effective only when a high value of the cost-effectiveness threshold is assumed. Points not lying on the cost-effectiveness frontier represent treatment alternatives that are not considered cost-effective at any value of the cost-effectiveness threshold.

R code

To create the plots in BCEA we first call the bcea() function.

data(Smoking)

treats <- c("No intervention", "Self-help", "Individual counselling", "Group counselling")
bcea_smoke <- bcea(eff, cost, ref = 4, interventions = treats, Kmax = 500)
# all interventions
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness   Costs Increase slope Increase angle
#> Self-help               0.28824  45.733         158.66         1.5645
#> Group counselling       0.72252 143.301         224.67         1.5663
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness  Costs     Dominance type
#> No intervention              0.00000  0.000 Extended dominance
#> Individual counselling       0.48486 94.919 Extended dominance


# subset
setComparisons(bcea_smoke) <- c(1,3)
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


# check numbering and legend
setComparisons(bcea_smoke) <- c(3,1)
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness  Costs     Dominance type
#> No intervention       0.48486 94.919 Extended dominance


setComparisons(bcea_smoke) <- c(3,2)
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness  Costs Increase slope Increase angle
#> Individual counselling       0.43428 97.568         224.67         1.5663
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness  Costs     Dominance type
#> No intervention       0.19662 49.186 Extended dominance
#> Self-help             0.00000  0.000 Extended dominance


setComparisons(bcea_smoke) <- 1
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>           Effectiveness Costs Increase slope Increase angle
#> Self-help       0.72252 143.3         198.33         1.5658
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


# add interventions back in
setComparisons(bcea_smoke) <- c(1,3)
ceef.plot(bcea_smoke)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

bcea_smoke <- bcea(eff, cost, ref = 4, interventions = treats, Kmax = 500)

# all interventions
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness   Costs Increase slope Increase angle
#> Self-help               0.28824  45.733         158.66         1.5645
#> Group counselling       0.72252 143.301         224.67         1.5663
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness  Costs     Dominance type
#> No intervention              0.00000  0.000 Extended dominance
#> Individual counselling       0.48486 94.919 Extended dominance


# subset
setComparisons(bcea_smoke) <- c(1,3)
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


# check numbering and legend
setComparisons(bcea_smoke) <- c(3,1)
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness  Costs     Dominance type
#> No intervention       0.48486 94.919 Extended dominance


setComparisons(bcea_smoke) <- c(3,2)
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness  Costs Increase slope Increase angle
#> Individual counselling       0.43428 97.568         224.67         1.5663
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness  Costs     Dominance type
#> No intervention       0.19662 49.186 Extended dominance
#> Self-help             0.00000  0.000 Extended dominance


setComparisons(bcea_smoke) <- 1
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>           Effectiveness Costs Increase slope Increase angle
#> Self-help       0.72252 143.3         198.33         1.5658
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


# add interventions back in
setComparisons(bcea_smoke) <- c(1,3)
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

Check legend position argument:

# base R
ceef.plot(bcea_smoke, pos = c(1,0))
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, pos = c(1,1))
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


ceef.plot(bcea_smoke, pos = TRUE)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, pos = FALSE)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


ceef.plot(bcea_smoke, pos = "topleft")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, pos = "topright")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, pos = "bottomleft")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, pos = "bottomright")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


# ggplot2
ceef.plot(bcea_smoke, graph = "ggplot", pos = c(1,0))
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "ggplot", pos = c(1,1))
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


ceef.plot(bcea_smoke, graph = "ggplot", pos = TRUE)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "ggplot", pos = FALSE)
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance


ceef.plot(bcea_smoke, graph = "ggplot", pos = "top")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "ggplot", pos = "bottom")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "ggplot", pos = "left")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "ggplot", pos = "right")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Self-help                    0.48486  94.919         195.77         1.5657
#> Individual counselling       0.72252 143.301         203.57         1.5659
#> 
#> Interventions not on the efficiency frontier:
#>                 Effectiveness Costs     Dominance type
#> No intervention             0     0 Extended dominance

Flipping plot

ceef.plot(bcea_smoke,
          flip = TRUE,
          dominance = FALSE,
          start.from.origins = FALSE,
          print.summary = FALSE,
          graph = "base")


ceef.plot(bcea_smoke,
          dominance = TRUE,
          start.from.origins = FALSE,
          pos = TRUE,
          print.summary = FALSE,
          graph = "ggplot2")

Start from origin or smallest (e,c).

ceef.plot(bcea_smoke,
          flip = TRUE,
          dominance = TRUE,
          start.from.origins = TRUE,
          print.summary = FALSE,
          graph = "base")


ceef.plot(bcea_smoke,
          dominance = TRUE,
          start.from.origins = TRUE,
          pos = TRUE,
          print.summary = FALSE,
          graph = "ggplot2")

Negative cost or effectiveness

data("Smoking")

cost[, 4] <- -cost[, 4]
bcea_smoke <- bcea(eff, cost, ref = 3, interventions = treats, Kmax = 500)

# all interventions
ceef.plot(bcea_smoke, graph = "ggplot")
#> Costs are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance

ceef.plot(bcea_smoke, graph = "base")
#> Costs are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance


ceef.plot(bcea_smoke, start.from.origins = TRUE, graph = "ggplot")
#> Costs are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance

ceef.plot(bcea_smoke, start.from.origins = TRUE, graph = "base")
#> Costs are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance


setComparisons(bcea_smoke) <- c(1,2)
ceef.plot(bcea_smoke, graph = "ggplot")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness  Costs Increase slope Increase angle
#> Self-help                    0.28824 45.733         158.66         1.5645
#> Individual counselling       0.48486 94.919         250.16         1.5668
#> 
#> Interventions not on the efficiency frontier:
#>              Effectiveness Costs     Dominance type
#> No treatment             0     0 Extended dominance

ceef.plot(bcea_smoke, graph = "base")
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness  Costs Increase slope Increase angle
#> Self-help                    0.28824 45.733         158.66         1.5645
#> Individual counselling       0.48486 94.919         250.16         1.5668
#> 
#> Interventions not on the efficiency frontier:
#>              Effectiveness Costs     Dominance type
#> No treatment             0     0 Extended dominance


eff[, 3] <- -eff[, 3]
bcea_smoke <- bcea(eff, cost, ref = 3, interventions = treats, Kmax = 500)
ceef.plot(bcea_smoke, graph = "ggplot")
#> Costs and benefits are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance

ceef.plot(bcea_smoke, graph = "base")
#> Costs and benefits are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                   Effectiveness  Costs Increase slope Increase angle
#> Group counselling         1.133 -143.3             NA             NA
#> 
#> Interventions not on the efficiency frontier:
#>                        Effectiveness    Costs     Dominance type
#> No treatment                 0.41051    0.000 Absolute dominance
#> Self-help                    0.69875   45.733 Absolute dominance
#> Individual counselling       1.13303 -143.301 Extended dominance



data("Smoking")
eff[, 3] <- -eff[, 3]
bcea_smoke <- bcea(eff, cost, ref = 3, interventions = treats, Kmax = 500)
ceef.plot(bcea_smoke, graph = "ggplot")
#> Benefits are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Individual counselling      -0.89536  94.919             NA             NA
#> Group counselling            1.13303 143.301         23.852         1.5289
#> 
#> Interventions not on the efficiency frontier:
#>              Effectiveness  Costs     Dominance type
#> No treatment       0.41051  0.000 Absolute dominance
#> Self-help          0.69875 45.733 Absolute dominance

ceef.plot(bcea_smoke, graph = "base")
#> Benefits are negative, the frontier will not start from the origins
#> 
#> Cost-effectiveness efficiency frontier summary 
#> 
#> Interventions on the efficiency frontier:
#>                        Effectiveness   Costs Increase slope Increase angle
#> Individual counselling      -0.89536  94.919             NA             NA
#> Group counselling            1.13303 143.301         23.852         1.5289
#> 
#> Interventions not on the efficiency frontier:
#>              Effectiveness  Costs     Dominance type
#> No treatment       0.41051  0.000 Absolute dominance
#> Self-help          0.69875 45.733 Absolute dominance

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.