Distributions in cost-effectiveness analysis

Mark Bounthavong

25 August 2024

Introduction

It is challenging to make the “best” decision when there is a lot of uncertainty. Let’s assume that you only had $1 to spend on a lottery ticket. What are the chances that you will select the correct numbers? Odds are the probability is extremely small. In a lottery where the participant selects 6 numbers from a range of 1-49, the probability of winning is 1 in 13,983,816 (You can click on link to learn more about lottery mathematics).

In cost-effectiveness, we struggle with uncertainty in our parameters. If the value we select for our parameter is incorrect, then the results from the cost-effectiveness model could change. This can leave many with an uneasy feeling. Most people are unable to handle uncertainty; yet, we do so all the time when we make decisions with uncertainty or imperfect information. Uncertainty is a natural part of any decision making process, and in cost-effectiveness analysis, we can still make optimal decisions even in situations where uncertainty is present, particularly with the parameters in our models. Hence, in most cost-effectiveness analysis, it is very common to test the impact of the uncertainty in our parameters by performing sensitivity analyses.

Sensitivity analyses

A common sensitivity analysis is a one-way sensitivity analysis (OWSA). A OWSA varies the value of a single paramter in a cost-effectiveness model to determine how much the result will change. For instance, if we were uncertain about the probability of Drug A, we can vary this value across a range to see how the model’s results will change. Sometimes, the results don’t change the conclusion of the cost-effectiveness analysis. In this situation, we can conclude that the model is robust to this potential uncertainty. However, if the result changes, then the model is sensitive to the uncertainty surrounding that parameter.

Another sensitivity analysis that is performed is a probabilistic sensitivity analysis (PSA). A PSA is performed by sampling from a distribution around the value of the parameter. Suppose we had a cost-effectiveness analysis model where we had the probability of cure for Drug A set at 0.78. If we are uncertain about Drug A’s probability of cure, we can set a distribution around the value of 0.78 and sample from it. We can sample as many times as we want using a Monte Carlo simulation, which randomly sample from the distribution and re-calculates the results of the cost-effectiveness analysis model.

Distributions

Here is an example if a distribution for the 0.78 probability of cure from our example above.

We can visualize that this distribution has a high density around 0.78, but the density is less at the tail ends. Since the probability has a range between 0% and 100%, the distribution should not be less than 0% and greater than 100%. We also notice that the distribution is somewhat normally distributed. If we were to perform a PSA, values will be sampled randomly from this distribution. But the randomly sampled value will be concentrated around the most dense part of the distribution.

Selecting the distribution

There are a number of parameters that are in a cost-effectiveness analysis model. These include the probability of an event happening, costs, and utility scores. Each parameters can be assigned a distribution. For example, a probability parameter could be assigned a beta distribution. A beta distribution is ideal for a probability parameter because it has an effective range between 0.00 and 1.00, which is the reasonable range for probabilities. Moreover, the beta distribution can take various shapes and form based on its function.

Beta distribution

Let’s take a look at the 0.78 probability of cure. In order for us to develop a distribution for this probability, we need to know the point estimate (which is already identified as 0.78) and the variance around this point estimate. This can be generated by pooling the values from various sources and estimating the variance or standard deviation. Let’s assume that the standard deviation around 0.78 was 0.05. We can use R package dampack to create the beta distribution for this 0.78 probability parameter.

The beta_params() function is what we will use to estimate the beta function’s parameters (e.g., alpha and beta). (Note: To learn more about the beta function, check out its wiki page)

library("dampack")
beta_params(0.78, 0.05)  # Generate the alpha and beta parameters
## $alpha
## [1] 52.7592
## 
## $beta
## [1] 14.8808

We can see that alpha is 52.7592 and beta is 14.8808. (Note: The “beta” is the parameters for the beta function. Please don’t get this confused with the beta distribution. We need the parameters from the beta function to create the beta distribution.)

Once we have the parameters of the beta distribution, we can incorporate them into the rbeta() function and plot the histogram. For the rbeta() function, we need to specify how many sample size; in this example, we entered 10,000.

beta1 <- rbeta(10000, 52.7592, 14.8808) # Enter alpha and beta parameters
hist(beta1)

You can use these beta function parameters in a PSA for a cost-effectiveness analysis.

Note: Utility scores are also along a range between 0 and 1; hence, we typically apply the beta distribution to utility scores in cost-effectiveness analysis.

Gamma distribution

Cost is another common parameter in cost-effectiveness analysis models. However, costs don’t typically follow a beta distribution. Rather, we can model costs using either a gamma or log-normal distribution.

Gamma distribution has a range between zero and infinity. For costs, this tends to work since it’s impossible to have negative costs and infinite positive costs.

Let’s suppose that the cost of Drug A is $100 with a standard deviation of $15. We can generate a gamma distribution using the gama_params() function. First, we need to find the parameters of the gamma function. These are the shape and rate. To learn more about the gamma function, please check out its wiki page.

# Cost distributions
gamma_params(100, 15, scale = FALSE) # To convert back to raw values ($) use `scale = FALSE`
## $shape
## [1] 44.44444
## 
## $rate
## [1] 0.4444444

Once we have the parameters of the gamma function, we can apply these using the rgamma() function. The shape is 44.4444 and the rate is 0.44444.

gamma1 <- rgamma(10000, 44.44444, 0.4444444) # Enter shape and rate parameters
# describeBy(gamma1)
hist(gamma1)

Log-normal distribution

The cost parameter can also be modeled using the log-normal distribution. This is done using the lnorm_params() package in R. The log-normal function depends on the mu and sigma parameters. To learn more about the log-normal distribution, check out its wiki page.

Let’s suppose the cost of Drug A is $100 with a standard deviation of $15. We enter these values into the lnorm_params() function and generate the mu and sigma parameters for the log-normal function.

lnorm_params(100, 15) # Generate the mu and sigma
## $mu
## [1] 4.604421
## 
## $sigma
## [1] 0.03871532

Once we have the parameters of the gamma function, we can apply these using the rlnorm() function. The mu is 4.604421 and the sigma is 0.03871532.

lnorm1 <- rlnorm(10000, 4.604421, 0.03871532) # Enter the mu and sigma parameters
hist(lnorm1)

The distribution of cost is quite different when you choose to use the gamma or log-normal distribution. We will leave the decision to use either the gamma or log-normal distribution to the investigator.

The log-normal distribution can also be used for count data such as the number of nights spent in the inpatient unit or the number of times a patient has an office visit with their provider.

Conclusions

In this article, we discuss how to generate distributions for use in a PSA for a cost-effectiveness analysis. The beta, gamma, and log-normal distributions are common, but there are other distributions that you can use such as the normal, uniform, triangle, and Dirichlet distributions. I will try to cover these in a future article.

References

  1. Briggs AH. Handling uncertainty in cost-effectiveness models. Pharmacoeconomics. 2000 May;17(5):479-500. doi: 10.2165/00019053-200017050-00006. PMID: 10977389.

  2. dampack package is available on the DARTH group’s GitHub site. This is an excellent site for R-related content on cost-effectiveness analysis.

  3. Details about each of the function in this article are available from the R CRAN site for the dampack package.

Disclaimers

In time, I tend to make updates as I learn more about these topics or when I identify a mistake. So, check back once in a while to see if there are any changes.

This is for educational purposes only.