Как создать график Блэнда-Альтмана в R (шаг за шагом)


График Бленда-Альтмана используется для визуализации различий в измерениях между двумя разными инструментами или двумя разными методами измерения.

Это полезно для определения того, насколько похожи два инструмента или метода при измерении одной и той же конструкции.

В этом руководстве представлен пошаговый пример создания графика Бланда-Альтмана в R.

Шаг 1: Создайте данные

Предположим, биолог использует два разных инструмента (А и В) для измерения веса одной и той же группы из 20 разных лягушек в граммах.

Мы создадим следующий фрейм данных в R, который представляет вес каждой лягушки, измеренный каждым инструментом:

#create data
df <- data.frame(A=c(5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 9,
 10, 11, 13, 14, 14, 15, 18, 22, 25),
 B=c(4, 4, 5, 5, 5, 7, 8, 6, 9, 7, 7, 11,
 13, 13, 12, 13, 14, 19, 19, 24))

#view first six rows of data
head(df)

 A B
1 5 4
2 5 4
3 5 5
4 6 5
5 6 5
6 7 7

Шаг 2: Рассчитайте разницу в измерениях

Далее мы создадим два новых столбца во фрейме данных, которые содержат среднее значение для каждой лягушки вместе с разницей в измерениях:

#create new column for average measurement
df$avg <- rowMeans(df) 

#create new column for difference in measurements
df$diff <- df$A - df$B

#view first six rows of data
head(df)

 A B avg diff
1 5 4 4.5 1
2 5 4 4.5 1
3 5 5 5.0 0
4 6 5 5.5 1
5 6 5 5.5 1
6 7 7 7.0 0

Шаг 3: Рассчитайте среднюю разницу и доверительный интервал

Далее мы рассчитаем среднюю разницу в измерениях между двумя инструментами вместе с верхним и нижним пределами 95% доверительного интервала для средней разницы:

#find average difference
mean_diff <- mean(df$diff)

mean_diff

[1] 0.5

#find lower 95% confidence interval limits
lower <- mean_diff - 1.96\*sd(df$diff)

lower

[1] -1.921465

#find upper 95% confidence interval limits
upper <- mean_diff + 1.96\*sd(df$diff)

upper

[1] 2.921465

Средняя разница оказывается равной 0,5 , а 95-процентный доверительный интервал для средней разницы равен [-1,921, 2,921] .

Шаг 4: Создайте график Блэнда-Альтмана

Далее мы будем использовать следующий код для создания графика Бланда-Альтмана с помощью пакета визуализации данных ggplot2 :

#load ggplot2
library (ggplot2)

#create Bland-Altman plot
ggplot(df, aes (x = avg, y = diff)) +
 geom_point(size=2) +
 geom_hline(yintercept = mean_diff) +
 geom_hline(yintercept = lower, color = " red", linetype=" dashed ") +
 geom_hline(yintercept = upper, color = " red", linetype=" dashed ") +
 ggtitle(" Bland-Altman Plot ") +
 ylab(" Difference Between Measurements ") +
 xlab(" Average Measurement ") 

По оси X графика отображается среднее значение измерений двух инструментов, а по оси Y — разница в измерениях двух инструментов.

Черная линия представляет среднюю разницу в измерениях между двумя приборами, а две красные пунктирные линии представляют пределы 95% доверительного интервала для средней разницы.