Kapitel 81 RCT Analysieren
Unkorrigierte, unfertige Version 24 December, 2022
Sie lernen in diesem Kapitel folgendes:
- Dass Regression auf T1 kontrolliert für T0 das gleiche Result gibt die Analyse dier Pre-Post Differenz kontrolliert für T0
- To be Done
81.1 Packete für dieses Kapitel
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.5.0
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(cowplot)
library(sjPlot)
##
## Attaching package: 'sjPlot'
##
## The following objects are masked from 'package:cowplot':
##
## plot_grid, save_plot
Wir werden eine Regression auf den t1-Wert der abhängigen Variable verwenden, kontrolliert für den Wert zu Beginn der Studie (t0). Ich versuche zu erklären, warum dies die beste Analyse ist. Zu diesem Zweck simuliere ich einige Daten, bei denen die Differenz zwischen t0 und t1 zwei Punkte für die Kontrollgruppe und vier Punkte für die Interventionsgruppe beträgt. Achtung: Die Differenz ist in der Population 2 Punkte, in der Stichprobe unserer Studie wird diese Differenz natürlich von der Populationsdifferenz abweichen (sampling variability).
81.2 Graphische Darstellung der Resultate
<-df_example %>%
df_example_longpivot_longer(cols = c(outcome_t0, outcome_t1, diff_t1_t0),
names_to = c(".value", "time"),
names_sep = '_') %>%
mutate(id=factor(id))
## Warning: Expected 2 pieces. Additional pieces discarded in 1 rows [3].
<-ggplot(df_example_long, aes(x=time, y=outcome, color=id, group=id))+
p1geom_line()+
theme_classic()+
theme(legend.position = 'none')
<-ggplot(data=df_example, aes(x=group, y=diff_t1_t0, fill=group))+
p2geom_boxplot()+
theme_classic()
::plot_grid(p1, p2,labels = c('A', 'B')) cowplot
Nun könnten wir einen t-Test auf den Unterschied der Differenzen t1 minus t0 durchführen:
Wir sehen, dass die Differenz der Veränderung 2.55 ist, zugunsten der Interventionsgruppe.
t.test(diff_t1_t0~group, data=df_example,var.equal=TRUE )
##
## Two Sample t-test
##
## data: diff_t1_t0 by group
## t = -1.9338, df = 198, p-value = 0.05456
## alternative hypothesis: true difference in means between group Control and group Intervention is not equal to 0
## 95 percent confidence interval:
## -4.96739041 0.04855396
## sample estimates:
## mean in group Control mean in group Intervention
## 1.674020 4.133438
Oder ein lineares Modell erstellen:
<-lm(diff_t1_t0~group, data=df_example)
lm_diff.fittab_model(lm_diff.fit)
diff t 1 t 0 | |||
---|---|---|---|
Predictors | Estimates | CI | p |
(Intercept) | 1.67 | -0.08 – 3.43 | 0.062 |
group [Intervention] | 2.46 | -0.05 – 4.97 | 0.055 |
Observations | 200 | ||
R2 / R2 adjusted | 0.019 / 0.014 |
Wir sehen, dass der Unterschied bei beiden Methoden genau gleich groß ist.
Wir sollten nun den Basiswert der abhängigen Variable anpassen:
<-lm(diff_t1_t0~group+outcome_t0, data=df_example)
lm_diffadjusted.fittab_model(lm_diffadjusted.fit)
diff t 1 t 0 | |||
---|---|---|---|
Predictors | Estimates | CI | p |
(Intercept) | -1.91 | -10.55 – 6.72 | 0.663 |
group [Intervention] | 2.55 | 0.03 – 5.07 | 0.047 |
outcome t0 | 0.07 | -0.10 – 0.24 | 0.404 |
Observations | 200 | ||
R2 / R2 adjusted | 0.022 / 0.012 |
Wir können nun zeigen, dass die Anpassung eines Modells mit dem Ergebnis bei t1 als abhängige Variable, bereinigt um den Wert bei t0, gleichwertig ist.
<-lm(outcome_t1~group+outcome_t0, data=df_example)
lm_fup_adjusted.fittab_model(lm_fup_adjusted.fit)
outcome t 1 | |||
---|---|---|---|
Predictors | Estimates | CI | p |
(Intercept) | -1.91 | -10.55 – 6.72 | 0.663 |
group [Intervention] | 2.55 | 0.03 – 5.07 | 0.047 |
outcome t0 | 1.07 | 0.90 – 1.24 | <0.001 |
Observations | 200 | ||
R2 / R2 adjusted | 0.451 / 0.445 |
Die Interventionsgruppe verändert sich um 2.55 Punkte mehr als die Kontrollgruppe.