Für das Lösen der Übungen können Sie R, einen Taschenrechner oder Excel verwenden. Allfällige Lösungswege werden mit R dargestellt.
Bei vielen Übungen dieser Art gibt es verschiedene Lösungen, die je nach Argumentation richtig sein können. Die hier präsentierten Lösungen sind ein Vorschlag, oft aber nicht die einzige mögliche Lösung. Diskussionen sind ausdrücklich erwünscht!
Sie sehen unten sechs verschiedene Abbildungen (A bis F) von Daten, welche aus experimentellen Studien stammen.
A
Es handelt sich um eine einzige Fallserie. Das Schmerzniveau nimmt über die 9 Behandlungen kontinuierlich ab. Da der Verlauf von weiteren Personen unbekannt ist und ein Vergleicht mit einer Kontrolle (keine Therapie) fehlt, ist es unmöglich zu sagen, dass die Behandlungen einen Einfluss auf den Schmerz hatten. Es könnte z.B. genau so gut den Verlauf einer Grippe darstellen, die von alleine wieder gut wird.
B
Es handelt sich um Fallserien, bzw. um eine nicht-kontrollierte Interventinosstudie. Weil eine Kontrollgruppe und somit das Berücksichtigen des natürlichen Verlaufs fehlt, kann keine kausale Aussage zur Effektivität der Behandlung gemacht werden.
C
Es handelt sich um eine kontrollierte Studie. Der Grafik ist nicht zu entnehmen, ob eine randomisierte Zuteilung zu den Gruppen erfolgte. Folglich wissen wir auch nicht, ob die Gruppen zu Beginn der Studie vergleichbar waren. Ohne diese Information kann nicht behauptet werden, dass eine Therapie effektiver ist als keine Therapie. Zudem wäre bei einem allfälligen RCT diese Aussage ebenfalls nur bedingt möglich, weil Schmerz ein subjektives Outcome ist und “keine Therapie” kein adäquater Placebo-Arm darstellt.
D
Es handelt sich um ein RCT mit Placebokontrolle. Somit ist eine Blindierung erfolgt. Ein Blindierung ohne Randomisierung ist nicht möglich. Angenommen, die Studie weist keine anderen methodischen Mängel auf und die Randomisierung erfüllt ihren Zweck (hohes \(n\)), liefern die Daten Evidenz, dass die Intervention einem Placebo überlegen ist.
E
Die Gruppen sind zu Beginn vergleichbar, was darauf hindeutet, dass es sich um RCT handeln könnte. Die Daten liefern jedoch keine Hinweise, dass die Therapie effektiver ist als keine Therapie.
F
Es handelt sich um eine kontrollierte, nicht-randomisierte Studien. Ob es sich um eine historische Kontrollgruppe handelt, ist nicht ersichtlich. Die Unterschiede zu Beginn sind ein klarer Hinweis, dass die Zuteilung wohl nicht randomisiert erfolgte. Es ist typisch, dass “schwere Fälle” die Therapie eher in Anspruch nehmen als “leicht Fälle”. Obwohl die Schmerzintensität in der Gruppe mit Therapie durchschnittlich stärker abnimmt als in der Gruppe ohne Therapie, beweist das keinen kausalen Zusammenhang zwischen Therapie und Schmerzintensität
randomizr. Verwenden Sie den Seed = 112, damit die
Resultate reproduzierbar sind. In welche Gruppe kommt die 5. Person?
Sind die Gruppen balanciert?randomizr und blockrand. Was ist
das für ein Studiendesign?Law of Large numbers:
\[ \bar{X}_A \approx \bar{X}_b \]
für alle Einflussgrössen \(X\), wenn \(n \to \infty\).
library(randomizr)
n <- 60
set.seed(112) # Reproduzierbarkeit!
rand.seq <- simple_ra(N = n)
rand.seq[5]## [1] 0
Die 5. Person kommt in die Gruppe “0”.
## rand.seq
## 0 1
## 28 32
Die Gruppen sind nicht exakt balanciert.
## rand.seq2
## 0 1
## 18 42
Mit dem Seed = 112 landen 18 Personen in der Gruppe 0 und 42 in der Gruppe 1.
Es handelt sich bei dieser Studie um ein RCT mit einem Split-Plot Design. Der Whole-Plot ist der Untergrund (between-Subject), der Sub-Plot ist die Person (3 Schutypen, within-Subject).
Wir erstellen eine erste Randomisierungssequenz, welche den Untergrund festlegt. Damit die Gruppen gleich gross sind, kann eine Blockrandomisierung verwendet werden. Hier wird die Blockgrösse 6 gewählt (bietet sich bei n = 48 an, auch 4 oder 8 wäre möglich):
library(randomizr)
n <- 48
blocks <- rep(1:(n / 6), each = 6)
set.seed(2)
rand.untergrund <- block_ra(blocks = blocks, conditions = c("Asphalt", "Naturstrasse"))
rand.untergrund## [1] Naturstrasse Asphalt Naturstrasse Naturstrasse Asphalt
## [6] Asphalt Asphalt Asphalt Asphalt Naturstrasse
## [11] Naturstrasse Naturstrasse Asphalt Asphalt Naturstrasse
## [16] Naturstrasse Naturstrasse Asphalt Asphalt Naturstrasse
## [21] Naturstrasse Asphalt Asphalt Naturstrasse Naturstrasse
## [26] Naturstrasse Asphalt Naturstrasse Asphalt Asphalt
## [31] Naturstrasse Naturstrasse Asphalt Naturstrasse Asphalt
## [36] Asphalt Asphalt Asphalt Naturstrasse Naturstrasse
## [41] Asphalt Naturstrasse Asphalt Naturstrasse Asphalt
## [46] Naturstrasse Asphalt Naturstrasse
## Levels: Asphalt Naturstrasse
Die erste Person wird auf Naturstrasse getestet, die zweite auf Asphalt u.s.w.
## rand.untergrund
## Asphalt Naturstrasse
## 24 24
Wie erwartet sind die Gruppen balanciert.
Nun erstellen wir für jede Kondition eine weitere Blockrandomisierung. Die Blockgrösse ist 3 (drei Schuhmarken), wobei der Block eine Person darstellt. Wir handhaben dabei den Whole-Plot-Faktor “Untergrund” als Stratum:
library(blockrand)
set.seed(2)
rand.asphalt <- blockrand(n = 24, # size per stratum
num.levels = 3, # three treatments
levels = c("Asics", "Nike", "Mizuno"), # arm names
stratum = "asphalt", # stratum name
block.sizes = c(1)) # block size per treamtent arm (1*3=3)
rand.natur <- blockrand(n = 24, # size per stratum
num.levels = 3, # three treatments
levels = c("Asics", "Nike", "Mizuno"), # arm names
stratum = "natur", # stratum name
block.sizes = c(1)) # block size per treamtent arm (1*3=3)Z.B. kommt Person 1 in die Gruppe:
## [1] Naturstrasse
## Levels: Asphalt Naturstrasse
und erhält die Schuhreihenfolge:
## id stratum block.id block.size treatment
## 1 1 natur 1 3 Asics
## 2 2 natur 1 3 Nike
## 3 3 natur 1 3 Mizuno
Lesen Sie jede der folgenden Vignetten sorgfältig durch. Bestimmen Sie, um welches Studiendesign es sich handelt.
Ein Forscherteam untersucht die Wirksamkeit von zwei verschiedenen Schmerzmitteln (Medikament A und Medikament B) bei Patient:innen mit akuten Rückenschmerzen. Die Teilnehmenden werden zufällig einer von zwei Gruppen zugewiesen. Gruppe 1 erhält Medikament A, Gruppe 2 erhält Medikament B. Nach 4 Wochen wird die Schmerzintensität gemessen und verglichen.
In einer Studie zur Wirkung von Musiktherapie auf Stress werden alle Teilnehmenden sowohl mit als auch ohne Musiktherapie untersucht – in zufälliger Reihenfolge, mit ausreichend Pause dazwischen. Jeder Teilnehmende dient somit als seine eigene Kontrollperson. Das ist analog zu einem geplanten Cross-Over-RCT.
Eine Studie untersucht, ob kognitive Verhaltenstherapie die Depressionssymptome bei Erwachsenen verbessert. Zwei Gruppen werden gebildet: eine erhält CBT, die andere erhält keine Therapie. Jede Person nimmt nur an einer der Bedingungen teil. Alter und Geschlecht werden als Blockfaktoren kontrolliert, indem innerhalb dieser Gruppen zufällig zugewiesen wird.
Eine Forschergruppe möchte untersuchen, wie sich zwei Faktoren – medizinische Trainingstherapie (MTT, ja/nein) und Ernährungscoaching (ja/nein) – auf den Langzeitblutzucker (HbA1c) von Patient:innen mit Typ-2-Diabetes auswirken. Es gibt vier Gruppen:
MTT + Coaching
MTT + Kein Coaching
Kein MTT + Coaching
Kein MTT + Kein Coaching
Ein Forschungsteam untersucht die Wirksamkeit zweier Schulungskonzepte (digital vs. Präsenz) für Pflegepersonal im Umgang mit dementen Patient:innen. Die Schulungsform (digital oder Präsenz) wird zufällig auf Stationsebene (Abteilungen) zugewiesen. Innerhalb jeder Station wird das Pflegepersonal zusätzlich zufällig in zwei Gruppen eingeteilt: Eine Gruppe erhält ein zusätzliches Supervisionstraining, die andere nicht. Nach 3 Monaten wird die Qualität der Patient:innenversorgung pro Pflegekraft gemessen.
Es gibt zwei Gruppen (Arme), die zufällig zugewiesen wurden (Randomisierung), und jede Gruppe erhält eine andere Intervention. Es handelt sich um ein klassisches paralleles RCT mit zwei Armen (unabhängige Gruppen).
Das ist ein Within-Subject Block Design. Alle Teilnehmenden durchlaufen alle Bedingungen (mit und ohne Musiktherapie). Die Reihenfolge ist geblockt und randomisiert, um Reihenfolgeeffekte zu minimieren. Die Person dient also Block (Blockgrösse = 2), damit jede Person jede Intervention genau einmal erhält.
Das ist ein Between-Subject Block Design. Die Teilnehmenden werden nur einer Bedingung zugewiesen (Between-subject), aber innerhalb homogener Blöcke (Alter, Geschlecht) erfolgt die Randomisierung, um Störvariablen zu kontrollieren. Für die Zuteilung ist also eine stratifizierte Randomisierung erforderlich.
Zwei unabhängige Variablen (MTT und Coaching) werden gleichzeitig untersucht, und alle möglichen Kombinationen dieser Faktoren werden berücksichtigt. Dies ist ein klassisches 2×2 faktorielles Design.
Das ist ein Split-Plot Design:
Faktor 1: Schulungsform (digital vs. Präsenz) auf Abteilungsebene = whole plot
Faktor 2: Supervisionstraining (ja/nein) auf Individualebene = subplot
Die Kombination ergibt ein Split-Plot-Design: Ein Faktor ist auf Gruppenebene, ein anderer auf Individualebene randomisiert.
Szenario. 10 Physiotherapie-Zentren sollen an einer 12-wöchigen Studie teilnehmen.
Aufgaben (Design-Schwerpunkt).
Randomisierung & Zuteilung
Begründung Hierarchie: Supervisionstyp ist organisatorisch/ressourcenbedingt zentrumsgebunden (praktisch nicht individuell randomisierbar) → Whole-Plot; Intensität ist innerhalb des Zentrums gut individuell zu verteilen → Sub-Plot.
Allocation Concealment:
Stratifizierung:
Verblindung & Bias-Kontrolle
Realistische Verblindung: Therapeut:innen und Patient:innen nicht vollständig verblindbar (erkennen Supervisionstyp); Outcome-Assessor:innen und Statistik bleiben verblindet.
Unabhängige Ergebnisbewertung: getrennte Termine/ Räume; Assessor:in ohne Zugang zu Therapieplänen; neutrale Kommunikation; Standardisierte Testprotokolle.
Bias & Prävention:
Kontamination & Interventionstreue
Ablauf & Logistik
Teilnahme, Ein-/Ausschluss, Einwilligung
Abbruch, Sicherheit, AE/SAE
Bericht & Transparenz
library(ggplot2)
library(dplyr)
# Farben für Supervision (Whole Plot)
col_einzel <- "#cfe0f5" # Einzelsupervision (hellblau)
col_gruppe <- "#f9c8c8" # Gruppensupervision (hellrosa)
border_col <- "grey30"
# ---- Zentren (Whole Plots): Supervision je Zentrum ----
zentren <- tibble(
zentrum = 1:4,
supervision = c("Einzelsupervision", "Gruppensupervision",
"Gruppensupervision", "Einzelsupervision"),
col = ifelse(supervision == "Einzelsupervision", col_einzel, col_gruppe),
xmin = zentrum - 0.45, xmax = zentrum + 0.45,
ymin = 0, ymax = 1
)
# ---- Split Plots (Intensität hoch/moderat, top/bottom; counterbalanced) ----
# Zentren 1–2: oben = hoch, unten = moderat
# Zentren 3–4: oben = moderat, unten = hoch
split <- tibble(
zentrum = rep(1:4, each = 2),
teil = rep(c("oben","unten"), times = 4)
) %>%
mutate(
intensitaet = case_when(
zentrum %in% c(1,2) & teil == "oben" ~ "hoch",
zentrum %in% c(1,2) & teil == "unten" ~ "moderat",
zentrum %in% c(3,4) & teil == "oben" ~ "moderat",
zentrum %in% c(3,4) & teil == "unten" ~ "hoch"
),
ymin = ifelse(teil == "unten", 0.00, 0.50),
ymax = ifelse(teil == "unten", 0.50, 1.00),
xmin = zentrum - 0.45,
xmax = zentrum + 0.45
) %>%
left_join(zentren %>% select(zentrum, supervision, col), by = "zentrum")
# ---- Plot ----
p <- ggplot() +
# Split-Plot Rechtecke mit Whole-Plot-Füllung (Supervision-Farbe)
geom_rect(data = split,
aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
fill = split$col, color = border_col, linewidth = 0.5) +
# Mittellinie je Zentrum (zwischen oben/unten)
geom_segment(data = zentren,
aes(x = xmin, xend = xmax, y = 0.5, yend = 0.5),
color = border_col, linewidth = 0.5) +
# Supervision-Labels oben (A-Faktor)
geom_text(data = zentren,
aes(x = zentrum, y = 1.06,
label = ifelse(supervision == "Einzelsupervision", "Einzelsupervision", "Gruppensupervision")),
fontface = "bold", size = 4) +
# Intensitäts-Labels mittig in jeder Hälfte (B-Faktor)
geom_text(data = split %>% mutate(y = (ymin + ymax)/2),
aes(x = zentrum, y = (ymin + ymax)/2, label = intensitaet),
fontface = "bold", size = 4) +
# Zentrumstitel unten
geom_text(data = zentren,
aes(x = zentrum, y = -0.06, label = paste0("Zentrum ", zentrum)),
fontface = "bold", size = 4) +
# Beschriftung + Pfeile: Whole Plot (unten)
annotate("text", x = 2.5, y = -0.25, label = "Whole Plot: Supervision", fontface = "bold", size = 5) +
annotate("segment", x = 2.5, xend = 1, y = -0.22, yend = 0.02,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
annotate("segment", x = 2.5, xend = 2, y = -0.22, yend = 0.02,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
annotate("segment", x = 2.5, xend = 3, y = -0.22, yend = 0.02,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
annotate("segment", x = 2.5, xend = 4, y = -0.22, yend = 0.02,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
# Beschriftung + Pfeile: Split Plots (rechts)
annotate("text", x = 4.95, y = 0.75, label = "Split Plot: Intensität", fontface = "bold", size = 5, hjust = 0) +
annotate("segment", x = 4.85, xend = 4.45, y = 0.72, yend = 0.75,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
annotate("segment", x = 4.85, xend = 4.45, y = 0.58, yend = 0.25,
arrow = arrow(length = grid::unit(0.18,"cm")), linewidth = 0.4) +
coord_cartesian(xlim = c(0.5, 5.4), ylim = c(-0.35, 1.15), expand = FALSE) +
theme_void() +
theme(
plot.margin = margin(10, 40, 10, 10),
text = element_text(family = "sans")
)
p# install.packages("flowchart") # if needed
library(flowchart)
## ---- 1) EDIT YOUR COUNTS HERE ---------------------------------------------
# Zentrumsebene
n_centres_assessed <- 12
n_centres_randomized <- 10
n_centres_excluded <- n_centres_assessed - n_centres_randomized
n_centres_einzel <- 5
n_centres_gruppe <- 5
# (here: all randomized centres are analyzed)
# If you want a loss, set e.g. n_centres_analyzed <- 9 and show_exc=TRUE below.
n_centres_analyzed <- n_centres_randomized
# Individualebene
n_scr <- 280 # gescreent
n_incl <- 200 # eingeschlossen
n_exc <- n_scr - n_incl
n_high <- 100 # hoch
n_mod <- 100 # moderat
# Follow-up/Analyzed (adjust as desired)
n_fu_high <- 90
n_fu_mod <- 88
n_ana_high <- n_fu_high
n_ana_mod <- n_fu_mod
## ---- 2) ZENTRUM: assessed -> randomized -> split (Einzel/Gruppe) -> analysed
fc_centres <- as_fc(N = n_centres_assessed,
label = "Zentren assessed for eligibility") |>
fc_filter(N = n_centres_randomized,
label = "Zentren randomisiert",
show_exc = TRUE,
label_exc = "Nicht randomisiert",
text_pattern_exc = "{label}\n {n}") |>
# Split nach Supervisionstyp
fc_split(var = NULL,
N = c(n_centres_einzel, n_centres_gruppe),
label = c("Einzelsupervision", "Gruppensupervision"),
text_pattern = "{label}\n {n}") |>
# Neue Box (gleiche Anzahl) für 'analysiert'
fc_filter(filter = TRUE, # keeps all rows; just adds a new box
label = "Zentren analysiert",
text_pattern = "{label}\n {n}")
## ---- 3) INDIVIDUUM: screened -> included -> split (hoch/moderat) -> FU -> analyzed
fc_indiv <- as_fc(N = n_scr,
label = "Teilnehmende gescreent") |>
fc_filter(N = n_incl,
label = "Eingeschlossen",
show_exc = TRUE,
label_exc = "Ausgeschlossen",
text_pattern = "{label}\n {n}",
text_pattern_exc = "{label}\n {n}") |>
fc_split(var = NULL,
N = c(n_high, n_mod),
label = c("Intensität: hoch", "Intensität: moderat"),
text_pattern = "{label}\n {n}") |>
# Follow-up je Arm (liefert 2 Kästen, je Arm)
fc_filter(N = c(n_fu_high, n_fu_mod),
label = "Follow-up (Woche 12)",
text_pattern = "{label}\n {n}",
sel_group = NULL) |>
# Analysiert je Arm
fc_filter(N = c(n_ana_high, n_ana_mod),
label = "Analysiert (ITT)",
text_pattern = "{label}\n {n}",
sel_group = NULL)
## ---- 4) STACKEN: Zentren oben, Individuen unten ---------------------------
fc_both <- fc_stack(list(fc_centres, fc_indiv), unite = FALSE)
## ---- 5) ZEICHNEN -----------------------------------------------------------
fc_draw(fc_both)Szenario: Ein Spital möchte untersuchen, ob eine strukturierte Atem- und Entspannungsanleitung während der Eröffnungsphase der Geburt die Schmerzintensität verringert und die Zufriedenheit der Gebärenden erhöht.
Sie sollen nun ein hypothetisches Design erstellen, um diese Fragestellung zu beantworten.
Aufgaben:
Siehe auch Hopewell 2025 doi: 10.1136/bmj-2024-081123
Hier sehen Sie ein einen Vorschlag, bzw. eine mögliche Lösung. Es sind grundsätzlich viele Herangehensweisen möglich und je nach Begründung auch korrekt. Tauschen Sie sich mit Kolleg:innen und den Dozierenden aus, um diese zu diskutieren.
Randomisierungsprozess – Wie gut wurde die Randomisierung umgesetzt und verdeckt?
Abweichungen von der geplanten Intervention – Gab es Unterschiede in der Intervention selbst oder der Begleitbehandlung?
Fehlende Outcome-Daten – Gab es Ausfälle, Dropouts oder selektives Fehlen von Daten?
Messung des Outcomes – War die Messung verblindet und standardisiert?
Auswahl des berichteten Ergebnisses – Entspricht die Berichterstattung dem vorab definierten Protokoll?
| RoB 2.0-Domäne | Mögliche Bias-Quelle | Risiko | Präventionsmassnahme |
|---|---|---|---|
| 1. Bias aufgrund des Randomisierungsprozesses | unzureichende Concealment (z. B. offene Zuteilung) | Gering – Mittel | zentrale, verdeckte Randomisierung; externe Generierung der Zuteilungssequenz |
| 2. Bias aufgrund von Abweichungen von der geplanten Intervention | Hebammen oder Pflegepersonal verhalten sich unterschiedlich nach Gruppe | Mittel | Schulung, Manualisierung, standardisierte Betreuung beider Gruppen |
| 3. Bias aufgrund fehlender Outcome-Daten | Abbruch durch Gebärende während der Geburt | Mittel | kurze Intervention, flexible Durchführung, ITT-Analyse |
| 4. Bias bei der Messung des Outcomes | Outcome-Messung nicht verblindet | Mittel – Hoch | Messung durch nicht involvierte Pflegefachpersonen (Assessor-Blinding) |
| 5. Bias bei der Auswahl des berichteten Ergebnisses | selektive Berichterstattung (z. B. nur positive Outcomes) | Gering – Mittel | Vorab-Registrierung des Protokolls, prädefinierte primäre und sekundäre Outcomes |
💡 Tipp: In der Praxis wird zusätzlich pro Domäne ein Risikourteil vergeben und eine Begründung dokumentiert (z. B. in einem Cochrane RoB 2-Tool).
Szenario: Ein Universitätsspital möchte untersuchen, ob zwei pflegerische Interventionen die Häufigkeit und Schwere von Delir-Episoden bei älteren hospitalisierten Patient:innen reduzieren.
Sie sollen nun ein hypothetisches Design erstellen, um diese Fragestellung zu beantworten.
Aufgaben:
Siehe auch Kahan et al. 2024 doi: 10.1136/bmj-2024‑080785
Hier sehen Sie ein einen Vorschlag, bzw. eine mögliche Lösung. Es sind grundsätzlich viele Herangehensweisen möglich und je nach Begründung auch korrekt. Tauschen Sie sich mit Kolleg:innen und den Dozierenden aus, um diese zu diskutieren.
Das Studiendesign könnte wie folgt aussehen:
| Bias-Typ | Risiko | Prävention |
|---|---|---|
| Performance Bias | Pflegepersonal kennt Gruppenzuteilung | Schulung, klare Protokolle |
| Detection Bias | Outcome-Assessor:innen beeinflusst | Verblindung der Assessments |
| Attrition Bias | Dropout (z. B. vor Entlassung) | kurze Interventionsdauer, ITT-Analyse |
Dies ist ein hypothetisches Beispiel: