How to Create a Bland-Altman Plot in R

Spread the love

A Bland-Altman plot (also known as a Difference plot) is a graphical method to analyze the differences between two methods of measurement. The average of the two measurements is plotted on the X-axis, while the difference between the measurements is plotted on the Y-axis. The main purpose of the Bland-Altman plot is to compare two clinical measurements and see whether they agree.

The Bland-Altman plot is widely used in the field of clinical statistics to evaluate the agreement among different instruments or measurement techniques by determining the mean difference and constructing limits of agreement.

In this article, we will discuss how to create a Bland-Altman plot in R using two popular packages: the BlandAltmanLeh package and the ggplot2 package.

Creating a Bland-Altman Plot Using BlandAltmanLeh Package

The BlandAltmanLeh package in R is specially designed to create Bland-Altman plots. Here are the steps to create a Bland-Altman plot using this package:

1. Installing and Loading the BlandAltmanLeh Package:

# Install the package
install.packages("BlandAltmanLeh")

# Load the package
library(BlandAltmanLeh)

2. Creating the Dataset:

For this demonstration, we will create a simple dataset with two sets of measurements.

# Create the dataset
set.seed(123)
Measurement1 <- rnorm(100, mean = 100, sd = 10)
Measurement2 <- Measurement1 + rnorm(100, mean = 0, sd = 5)

# Put the measurements into a data frame
df <- data.frame(Measurement1, Measurement2)

3. Creating the Bland-Altman Plot:

The bland.altman.plot() function from the BlandAltmanLeh package can be used to create the Bland-Altman plot.

# Create a Bland-Altman plot
bland.altman.plot(df$Measurement1, df$Measurement2, main = "Bland-Altman Plot")

Creating a Bland-Altman Plot Using ggplot2 Package

While ggplot2 does not have a specific function to create Bland-Altman plots, we can easily create one using its basic functions.

1. Installing and Loading the ggplot2 Package:

# Install the package
install.packages("ggplot2")

# Load the package
library(ggplot2)

2. Creating the Dataset:

The step is similar to the BlandAltmanLeh package approach.

# Create the dataset
set.seed(123)
Measurement1 <- rnorm(100, mean = 100, sd = 10)
Measurement2 <- Measurement1 + rnorm(100, mean = 0, sd = 5)

# Put the measurements into a data frame
df <- data.frame(Measurement1, Measurement2)

3. Creating the Bland-Altman Plot:

First, we calculate the mean and difference of the two measurements. Then, we use ggplot() to create the plot.

# Calculate the mean and difference
df$Mean <- (df$Measurement1 + df$Measurement2) / 2
df$Difference <- df$Measurement1 - df$Measurement2

# Create a Bland-Altman plot
ggplot(df, aes(x = Mean, y = Difference)) +
  geom_point() +
  geom_hline(yintercept = mean(df$Difference), color = "red", linetype = "dashed") +
  geom_hline(yintercept = mean(df$Difference) + 1.96 * sd(df$Difference), color = "blue", linetype = "dashed") +
  geom_hline(yintercept = mean(df$Difference) - 1.96 * sd(df$Difference), color = "blue", linetype = "dashed") +
  labs(title = "Bland-Altman Plot", x = "Mean of Measurements", y = "Difference of Measurements")

In this code, geom_point() adds the points to the plot, geom_hline() adds horizontal lines at the mean difference and at the mean difference plus or minus 1.96 times the standard deviation of the differences (which correspond to the 95% limits of agreement), and labs() adds labels to the plot.

Conclusion

Bland-Altman plots are powerful tools for assessing agreement between two measurement methods. This article demonstrated two methods of creating a Bland-Altman plot in R, one using the BlandAltmanLeh package, which provides a straightforward approach to creating a Bland-Altman plot, and the other using the ggplot2 package, which provides greater flexibility in controlling the appearance of the plot.

Posted in RTagged

Leave a Reply