Website-Icon Björn Walther

Bland-Altman-Plot in R erstellen

1 Zweck des Bland-Altman-Plots

Ein Bland-Altman-Plot vergleicht zwei Messmethoden miteinander. Zumeist gibt es eine etablierte Methode, die sehr genau ist und als “Goldstandard” bezeichnet wird. Diese Methode kann aber langsam, teuer usw. sein, weswegen man eine schnellere, günstigere Methode entwickelt. Die Frage, die in dem Zusammenhang zu beantworten ist: Ist die neue Methode in etwa genauso gut, wie die alte?
Den grundlegenden Aufbau und die Logik dahinter habe ich bereits in einem separaten Artikel erklärt.

 

2 Bland-Altman-Plot in R erstellen

2.1 Vorarbeiten

Für ein Bland-Altman-Plot in benötigt man die gleichen Probanden bzw. Testobjekte für beide Messungen. Beide Messmethoden A und B müssen zwingend am selben Proband/Testobjekt durchgeführt werden und in verschiedenen Variablen hinterlegt sein.
Das Einlesen von Daten erkläre ich hier.
Somit erhält man zwei Messreihen, jeweils eine für Messmethode A und B. Das kann exemplarisch wie folgt aussehen:


Messung A	Messung B
20,50	        20,23
20,58	        20,25
20,38	        20,65
20,60	        20,61
20,77	        20,45
20,29	        21,42
20,41	        21,39
20,27	        21,59
...             ...

Zunächst benötigt man zwei weitere Paket. Das “BlandAltmanLeh”-Paket sowie das “ggplot2”-Paket können mit der install.packages()-Funktion installiert und mit der library()-Funktion geladen werden:


install.packages("BlandAltmanLeh")
install.packages("ggplot2")
library(BlandAltmanLeh)
library(ggplot2)

 

2.2 Erstellung eines einfachen Bland-Altman-Plots

Hierzu reicht es bereits die bland.altman.plot()-Funktion des BlandAltmanLeh-Pakets aufzurufen und die beiden Datenreihen (hier: A und B aus dem Dataframe “data”) einzugeben:


bland.altman.plot(data$A, data$B)

Hieraus erhält man ein rudimentäres Bland-Altman-Diagramm:


 

2.3 Erstellung eines angepassten Bland-Altman-Plots

Die einfache Darstellung erfüllt prinzipiell den Zweck, allerdings ist sie eben nur zweckmäßig und nicht ansehnlich. An dieser Stelle kommt ggplot ins Spiel. Mit dem zusätzlichen Argument graph.sys = “ggplot2” kann man sich ein ansehnlicheres Bland-Altman-Diagramm ausgeben lassen.
Das Argument “geom_count=TRUE” sorgt zudem dafür, dass die Punkte größer dargestellt werden, sofern sie mehrfach vorkommen. Da dies selten vorkommt, außer die Stichprobe ist sehr groß, verzichte ich in diesem Beispiel auf das Argument.


bland.altman.plot(data$A, data$B, graph.sys = "ggplot2")

Das sieht dann wie folgt aus:

 

Wenn die englischen Achsenbeschriftungen stören oder ein Titel gewünscht wird, kann dies auch eingearbeitet werden. Allerdings bedarf es hierzu der Erweiterung der bisherigen Vorgehensweise. Das Diagramm muss mittels der print()-Funktion ausgegeben werden, vorher dessen vollständige Attribute gespeichert werden, um damit arbeiten zu können.
Konkret sieht das so aus, das ich die Daten zur Diagrammerstellung in einem Dataframe namens “plot” speichere.:


plot <- bland.altman.plot(data$A, data$B, graph.sys = "ggplot2")

Diesen "plot" kann ich nun mit der print()-Funktion ausgeben lassen und die Achsen (xlab, ylab) beschriften sowie einen Titel vergeben (ggtitle). Um den Titel zentriert anzeigen zu lassen, verwende ich zudem den theme()-Befehl.


print(plot + xlab("Mittelwert der Messungen") + ylab("Mittelwertdifferenz") 
        + ggtitle("Bland-Altman-Plot")
        +theme(plot.title=element_text(hjust = 0.5)))


 

2.4 Zusatzargumente

Erwähnenswert aber meist nicht notwendig sind noch die beiden Argumente "two" und "mode".

Die mobile Version verlassen