In klinischen Laboren kann der Blutzucker sehr reliabel und valide
bestimmt werden. Der Blutzucker wird dabei in mg/dl gemessen. Diese
Methode (lab
) wurde als Goldstandard verwendet, um die
Kriteriumsvalidität eines portablen Gerätes (device
) zu
bestimmen (misst ebenfalls in mg/dL).
Welche Möglichkeiten stehen zur Beurteilung der Kriteriumsvalidität zur Verfügung? Begründen Sie.
Man könnte theoretisch einen Korrelationskoeffizienten nach Pearson
rechnen, allerdings sagt dieser nur bedingt etwas über die
Übereinstimmung der beiden Messinstrumente aus. Selbst bei einer hohen
Korrelation kann es sein, dass die absolute Übereinstimmung unzureichend
ist. Um einen möglichen systematischen Fehler zu berücksichtigen, ist
ein Intra-Klassen-Korrelations-Koeffizient (ICC) besser geeignet.
Welchen ICC man berechnet, hängt von den der individuellen Fragestellung
ab. Wenn die beiden Messgeräte als fix angenommen werden (wir erwarten
keine bedeutende Variation von Gerät zu Gerät), bietet sich der ICC(3,1)
an (random subjects, fixed raters, siehe ?ICC
). Wenn wir
hingegen Variation zwischen den einzelnen Messungen eines Messgeräts am
gleichen Subjekt erwarten, wäre der ICC(2,1) besser.
Um die absolute Übereinstimmung zwischen zwei Messmethoden zu beurteilen, ist es sinnvoll, nicht nur den ICC, sondern auch den Bias (systematische Abweichung) und die Limits of Agreement (LoA) inkl Konfidenzintervallen nach der Methode von Bland-Altman zu betrachten. Dies ermöglicht eine umfassendere Bewertung der Übereinstimmung.
In der klassischen Bland-Altman-Methode wird der Mittelwert der beiden Messungen auf der x-Achse verwendet. Grund: Der Mittelwert repräsentiert die „beste Schätzung“ des wahren Werts unter der Annahme, dass beide Messmethoden gleichwertig sind. Dies ist besonders sinnvoll, wenn beide Messinstrumente vergleichbar sind und keiner der beiden als klar überlegen angesehen wird. Wenn wie in dieser Aufgabe ein Goldstandard verwendet wird, kann man den Wert des Goldstandards auf der x-Achse platzieren. Grund: Der Goldstandard wird als die „wahre Referenz“ betrachtet, gegen die die andere Methode validiert wird. In diesem Fall ist der Vergleich explizit asymmetrisch, da man die Abweichung des zu bewertenden Messinstruments vom Goldstandard untersucht.
Importieren Sie den Datensatz df-glucose.csv
mit dem
Paket rio
(rio::import("df-glucose.csv"
)).
Verschaffen Sie sich einen kurzen Überblick zu den Daten (z.B. mit
head()
).
Verwenden Sie das Paket psych
und die Funktion
ICC()
um den ICC(2,1) und den ICC(3,1) zu berechnen.
Interpretieren Sie die Werte. Warum unterscheiden sich die Werte vom
ICC(2,1) und ICC(3,1)? Was bedeutet das inhaltlich?
Verwenden Sie das Paket SimplyAgree
und die Funktion
agree_test()
, um Statistiken für die absolute
Übereinstimmung zu berechnen:
SimplyAgree::agree_test(df.glucose$lab, df.glucose$device)
.
Speichern Sie das Resultat in einem Objekt agree.glucose
.
Geben Sie den Inhalt von agree.glucose
aus und
interpretieren Sie den Bias und die LoA.
Erstellen Sie einen Bland-Altman-Plot
(plot(agree.glucose)
).
(Bonus) Erstellen Sie einen Bland-Altman-Plot, welcher auf der
x-Achse die Werte des Goldstandards (lab
) zeigt.
df-glucose.csv
mit dem
Paket rio
(rio::import("df-glucose.csv"
)).
Verschaffen Sie sich einen kurzen Überblick zu den Daten (z.B. mit
head()
).## lab device
## 1 101.89401 107.96663
## 2 124.16144 125.78785
## 3 136.26662 140.59659
## 4 84.81453 86.30215
## 5 126.43687 126.30688
## 6 127.59084 132.42578
psych
und die Funktion
ICC()
um den ICC(2,1) und den ICC(3,1) zu berechnen.
Interpretieren Sie die Werte. Warum unterscheiden sich die Werte vom
ICC(2,1) und ICC(3,1)? Was bedeutet das inhaltlich?## Call: psych::ICC(x = df.glucose)
##
## Intraclass correlation coefficients
## type ICC F df1 df2 p lower bound upper bound
## Single_raters_absolute ICC1 0.91 21 99 100 4.4e-40 0.87 0.94
## Single_random_raters ICC2 0.91 35 99 99 8.1e-50 0.67 0.96
## Single_fixed_raters ICC3 0.94 35 99 99 8.1e-50 0.92 0.96
## Average_raters_absolute ICC1k 0.95 21 99 100 4.4e-40 0.93 0.97
## Average_random_raters ICC2k 0.95 35 99 99 8.1e-50 0.80 0.98
## Average_fixed_raters ICC3k 0.97 35 99 99 8.1e-50 0.96 0.98
##
## Number of subjects = 100 Number of Judges = 2
## See the help file for a discussion of the other 4 McGraw and Wong estimates,
Beim ICC(3,1) wird angenommen, dass es keine Variation zwischen den
jeweiligen Messgeräten gibt. Wird diese Varianz auf 0 gesetzt, ist die
Summe der Varianzen in Nenner zur Berechnung des ICC’s kleiner, das
heisst der ICC wird grösser (siehe ?ICC
).
SimplyAgree
und die Funktion
agree_test()
, um Statistiken für die absolute
Übereinstimmung zu berechnen:
SimplyAgree::agree_test(df.glucose$lab, df.glucose$device)
.
Speichern Sie das Resultat in einem Objekt agree.glucose
.
Geben Sie den Inhalt von agree.glucose
aus und
interpretieren Sie den Bias und die LoA.## Limit of Agreement = 95%
##
## ###- Shieh Results -###
## Exact 90% C.I. [-15.3044, 6.892]
## Hypothesis Test: No Hypothesis Test
##
## ###- Bland-Altman Limits of Agreement (LoA) -###
## Estimate Lower CI Upper CI CI Level
## Bias -4.206 -5.23 -3.182 0.95
## Lower LoA -14.321 -15.79 -12.852 0.90
## Upper LoA 5.909 4.44 7.378 0.90
##
## ###- Concordance Correlation Coefficient (CCC) -###
## CCC: 0.91, 95% C.I. [0.8725, 0.9369]
Die Bland-Altman-Analyse liefert Schätzungen für den Bias (systematische Abweichung) sowie die LoA, die die Variabilität der Differenzen zwischen den zwei Messmethoden quantifizieren.
Der Bias ist die durchschnittliche Differenz zwischen den beiden Messmethoden (lab - device).
## [1] -4.206216
Die LoA definieren den Bereich, in dem etwa 90% der Differenzen zwischen den beiden Messmethoden zu erwarten sind (bei einem CI-Level von 90%).
plot(agree.glucose)
).lab
) zeigt.bias <- mean(df.glucose$lab - df.glucose$device)
uLoA <- 5.909 # siehe agree.glucose
lLoA <- -14.321 # siehe agree.glucose
plot(df.glucose$lab, df.glucose$lab - df.glucose$device, xlab = "lab", ylab = "lab-device")
abline(h = c(bias, uLoA, lLoA))
Frauen über 50 Jahre erhalten im Kanton Fribourg, aber auch in anderen Kantonen, eine Einladung zur Mammographie. Wir entnehmen der Broschüre die Daten und gehen von folgendem Szenario aus:
Notation
Berechnen Sie die folgenden Wahrscheinlichkeiten und beschreiben Sie die jeweilige grösse in Worten:
Wir speichern zuerst die gegebenen Werte in R:
sensitivity <- 0.85 # Sensitivity: P(B | A)
specificity <- 0.90 # Specificity: P(B^C | A^C)
pre.test.probability <- 0.05 # P(A)
P.A.C <- 1 - pre.test.probability # P(A^C)
\[ \hat{Pr}(A) \]
## [1] 0.05
Das entspricht der Prä-Test-Wahrscheinlichkeit
\[ \hat{Pr}(A \cap B) = \hat{Pr}(B \mid A) \cdot \hat{Pr}(A) \]
## [1] 0.0425
Das entspricht der Wahrscheinlichkeit, dass man die Krankheit hat und ein positives Test-Resultat vorliegt (richtig-positiv).
\[ \hat{Pr}(A^C \cap B) = \hat{Pr}(B \mid A^C) \cdot \hat{Pr}(A^C) \]
wobei
\[ \hat{Pr}(A^C) = 1 - \hat{Pr}(A) \]
und
\[ \hat{Pr}(B \mid A^C) = 1 - \text{Specificity}. \]
## [1] 0.095
\(\hat{Pr}(A^C \cap B)\) ist die Wahrscheinlichkeit für ein falsch-positives Resultat.
\[ \hat{Pr}(A^C \cap B^C) = \hat{Pr}(B^C \mid A^C) \cdot \hat{Pr}(A^C) \]
wobei
\[ \hat{Pr}(B^C \mid A^C) = \text{Specificity}. \]
P.B.C.given.A.C <- specificity # P(B^C | A^C)
P.A.C.and.B.C <- P.B.C.given.A.C * P.A.C
P.A.C.and.B.C
## [1] 0.855
\(\hat{Pr}(A^C \cap B^C)\) ist die Wahrscheinlichkeit für ein richtig-negatives Resultat.
\[ \hat{Pr}(B \mid A) = \text{Sensitivity} \]
## [1] 0.85
\(\hat{Pr}(B \mid A)\) ist die Wahrscheinlichkeit für ein positives Resultat, gegeben die Krankheit liegt vor (= Sensitivität).
\[ \hat{Pr}(B^C \mid A^C) = \text{Specificity} \]
## [1] 0.9
\(\hat{Pr}(B^C \mid A^C)\) ist die Wahrscheinlichkeit für ein negatives Resultat, gebeben die Krankheit liegt nicht vor.
\[ \hat{Pr}(B^C \mid A) = 1 - \hat{Pr}(B \mid A) \]
## [1] 0.15
\(\hat{Pr}(B^C \mid A)\) ist die Wahrscheinlichkeit für ein negatives Resultat, gegeben die Krankheit liegt vor.
\[ \hat{Pr}(B \mid A^C) = 1 - \hat{Pr}(B^C \mid A^C) = 1- specificity \]
## [1] 0.1
\(\hat{Pr}(B \mid A^C)\) ist die Wahrscheinlichkeit, für ein positives Testresultat, gegeben die Krankheit liegt nicht vor.
\[ \hat{Pr}(A | B) = \frac{\hat{Pr}(A) \hat{Pr}(B | A)}{\hat{Pr}(A) Pr(B | A) + \hat{Pr}(A^C) \hat{Pr}(B | A^C)} \]
post.test.positive <- (P.A * sensitivity) / (P.A * sensitivity + P.A.C * P.B.given.A.C)
post.test.positive
## [1] 0.3090909
\(Pr(A | B)\) ist die Wahrscheinlichkeit, dass die Krankheit vorhanden ist, gegeben der Test ist positiv (positiver prädiktiver Wert).
\[ \hat{Pr}(A^C | B^C) = \frac{\hat{Pr}(A^C) \hat{Pr}(B^C | A^C)}{\hat{Pr}(A^C) \hat{Pr}(B^C | A^C) + \hat{Pr}(B^C | A)\hat{Pr}(A)} \]
post.test.negative <- (P.A.C * specificity) / (P.A.C * specificity + P.B.C.given.A * P.A)
post.test.negative
## [1] 0.9913043
\(\hat{Pr}(A^C | B^C)\) ist die Wahrscheinlichkeit, dass die Krankheit nicht vorliegt, gegeben das Testresultat ist negativ (negativer prädiktiver Wert)
Zusammenfassende Darstellung der Wahrscheinlichkeiten in der 2x2 Tabelle:
## Disease Present (A) Disease Absent (A^C) Total
## Positive (B) 0.0425 0.095 0.1375
## Negative (B^C) 0.0075 0.855 0.8625
## Total 0.0500 0.950 1.0000
\[ \hat{Pr}(A | B) = \frac{\hat{Pr}(A) \hat{Pr}(B | A)}{\hat{Pr}(A) Pr(B | A) + \hat{Pr}(A^C) \hat{Pr}(B | A^C)} \]
P.A.new <- 0.25
post.test.positive.new <- (P.A.new * sensitivity) / (P.A.new * sensitivity + (1 - P.A.new) * (1-specificity))
post.test.positive.new
## [1] 0.7391304
\(\hat{Pr}(A | B)\) steigt massiv.
post.test.negative.new <- ((1 - P.A.new) * specificity) / ((1 - P.A.new) * specificity + P.A.new * (1 - sensitivity))
post.test.negative.new
## [1] 0.9473684
\(\hat{Pr}(A^C | B^C)\) sinkt.
Die Prä-Test-Wahrscheinlichkeit hat also einen enorm wichtigen Einfluss auf die Interpretation eines Testresultates!
Übersicht anhand der 2x2 Tabelle:
## Disease Present (A) Disease Absent (A^C) Total
## Positive (B) 0.2125 0.075 0.2875
## Negative (B^C) 0.0375 0.675 0.7125
## Total 0.2500 0.750 1.0000