Kapitel 24 Typ-I Fehler

Eine sinnlose Studie, die uns Erleuchtung schenken soll.

Ein Walliser Wissenschaftler will untersuchen, ob man mit Aproz (Walliser Mineralwasser) besser abnehmen kann als mit Henniez (Waadtländer Mineralwasser). Er wollte dies an Patientinnen und Patienten mit Kniearthrose untersuchen, da hier eine Gewichtsreduktion meistes auch zu einer Schmerzreduktion führt mehr dazu hier und hier.

24.1 Hypothesen erstellen

  • Wir postulieren eine Nullhypothese ** Mit Aproz nimmt man nicht mehr ab als mit Henniez

  • Wir legen ein Signifikanzniveau (α) fest (meistens 5%, d.h. α = 0.05).

  • Wir legen fest, welche Typ-II. Oft 20%. Dies ergibt eine sogenannte statistische Power von 80%. hier ein Video über Power.

  • Wir berechnen die benötigte Stichprobengrösse

  • Wir schauen, ob die Daten unserer Studien Evidenz gegen die Nullhypothese liefern

  • Wir berechnen den P-Wert (die Wahrscheinlichkeit einen solchen oder stärkeren Effekt zu finden, wenn es in Wahrheit keinen gibt).

  • Alternativ können wir auch ein Konfidenzintervall berechnen.

  • Ist der P-Wert kleiner als das Signifikanzniveau sprechen wir von einem statistisch signifikanten Effekt.

  • Je kleiner der P-Wert, desto grösser die Evidenz gegen die Nullhypothese

Für eine kritische Diskussion des Hypothesentestens [siehe hier] (https://www.fharrell.com/post/pval-litany/)

knitr::include_graphics("Hypothese Aproz_Henniez.png")
Alternativhypothese und Nullhypothese

Abbildung 24.1: Alternativhypothese und Nullhypothese

In dieser sinnlosen Studie kennen wir die Wahrheit ja: Es gibt keinen Unterschied zwischen Aproz und Henniez in Bezug auf das Abnehmen. Wenn wir allen Menschen während sechs Monaten Henniez geben würden und den gleichen Menschen im Paralell-Universum Henniez geben würden, so würden die Menschen hier (Aproz) und im Parallel-Universum (Henniez) gleich viel Gewicht aufweisen nach sechs Monaten. Natürlich werden wir in einer Studie einen Unterschied sehen, da ja nicht dieselben Personen in den beiden Interventionsgruppen sind (da wir keinen Zugang zum Parallell-Universum haben). Die Unterschiede im Gewicht nach sechs Monaten sind jedoch nicht auf Aproz oder Henniez zurückzuführen, sondern auf Unterschiede zwischen den Menschen. Da die Studie eine randomisierte Studie ist, werden diese Unterschiede zufällig sein.

Langer Rede kurzer Sinn: In dieser Studie stimmt die Nullhypothese

24.2 Wie viele müssen an der Studie teilnehmen?

Es ist nicht ethisch vertretbar, mehr Personen an einer Studie teilnehmen zu lassen, als wirklich nötig wären. Es ist aber auch nicht sinnvoll weniger einzuschliessen, da mit zu kleiner Studiengrösse die statistische Präzision nicht erreicht wird. Deswegen muss vor jeder Studie berechnet werden, wie viele Teilnehmende es benötigt.

Der Wissenschaftler geht zur Statistikerin und fragt, wie gross die Studie denn sein müsste. Die Statistikerin wollte wissen, was denn der kleinste klinisch relevante Unterschied im Gewichtsverlust über die 6 Monate der Intervention wäre, und was Schätzungsweise die Standardabweichung der Gewichtsabnahme sein könnte. [Hier ein Link für Interessierte] (https://med.und.edu/daccota/_files/pdfs/berdc_resource_pdfs/sample_size_r_module.pdf).Der Wissenschaftler sagte, dass dies mindestens 3 Kilogramm sein sollten, und dass die Standardabweichung schätzungsweise 6kg sei. Die kleinste klinisch relevante Differenz fand der Wissenschaftler in einer Studie (auf englisch Minimal Clinically Importand Difference). Die Standarabweichung der Gewichtsabnahme über 6 Monate fand der Wissenschaftler in einem grossen Datenregister. Mit diesen Angaben und einem Signifikanzniveau von 5% (d.h. einer Typ-I Fehlerwahrscheinlichkeit von 5%) und einer statistischen Power von 80% (d.h. einer Typ-II Fehlerwahrscheinlichkeit von 20%) berechnete die Statistikerin, dass pro Gruppe 64 Personen analysiert werden sollten (d.h. Total 128 Teilnehmende).

Der Wissenschaftler rechnete damit, dass etwa 20% der Studienteilnehmenden die Studie abbrechen würden und somit wollte er 160 Patienten einschliesen. Falls nun 20% der Teilnehmenden die Studie abbrechen würden (160 * 0.2 = 32 Abbrecher), hätte er immer noch 128 in der Studie.

Wie kam der Wissenschaftler auf die 160 Teilnehmenden?

Am Ende muss er ja 128 haben. Wenn nun 20% ausfallen, dass entsprechen die 128 Teilnehmenden ja 80% vom den eingeschlossenen Teilnehmenden.

Hier unten sehen Sie auch noch wie die Statistikerin die benötigte Stichprobengrösse berechnete:

mcid <-3 # mcid = minimal clinically important difference (muss man aus einer grösseren Studie nehmen)
sd<-6 # Standardabweichung der Veränderung, kann man aus einer sehr grossen Studie oder einem Datenregister nehmen. 
effect_size=mcid / sd # Berechnung der Effektgrösse d
pwr::pwr.t.test(d=effect_size, sig.level=0.05, power=0.80, type="two.sample", alternative="two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 63.76561
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

24.3 Die randomisierte Studie

Der Wissenschaftler teilt 160 Personen zufällig auf eine von zwei Gruppen auf:

  • Gruppe A trinkt während 6 Monaten täglich 1 Liter Aproz (und ernährt sich sonst wie gewohnt).

  • Gruppe B trinkt während 6 Monaten täglich 1 Liter Henniez (und ernährt sich sonst wie gewohnt)

Bei beiden Gruppen misst er vorher und nachher das Körpergewicht. So kann er die Gewichtsveränderung zwischen den beiden Gruppen vergleichen.

24.4 Die Resultate der Studie

24.4.1 Flow Chart

R Code von agbarnet

# consort.plot.R
# template for a CONSORT flow chart
# Feb 2017

library(diagram)
## Loading required package: shape
# dummy recruitment numbers
consort.assessed = 400
consort.excluded = 240
consort.declined = 90
consort.not.meet = 150
consort.other = 0
consort.randomised = consort.assessed - consort.excluded 
allocate.control = allocate.treatment = 80
died.control = died.treatment = 0
lost.fu.control = died.control + 10
lost.fu.treatment = died.treatment + 15
excluded.control = 10
excluded.treatment = 15
analysed.treatment = allocate.treatment - excluded.treatment
analysed.control = allocate.control - excluded.control
pp.treatment = allocate.treatment - 15
pp.control = allocate.control - 10
# labels
b = c('Enrollment', 'Allocation', 'Follow-up', 'Analysis')
l1 = paste('Assessed for eligibility (n=', consort.assessed, ')', sep='') # numbers from above
l2 = paste('Excluded (n=', consort.excluded, ')\n',
           '•   Declined to participate (n=', consort.declined, ')\n',
           '•   Not meeting inclusion criteria (n=', consort.not.meet,')\n',
           '•   Other reasons (n=', consort.other, ')', sep='')
l3 = paste('Randomised (n=', consort.randomised,')', sep='')
l4 = paste('Allocated to Aproz (n=', allocate.control ,')\n', sep='')
l5 = paste('Allocated to Henniez (n=', allocate.treatment ,')\n'
           , sep='')
l6 = paste('Lost to follow-up (n=', lost.fu.control, ')\n', # control lost to fu
           '•   Died (n=', died.control,')', sep='')
l7 = paste('Lost to follow-up (n=', lost.fu.treatment, ')\n', # treatment lost to fu
           '•   Died (n=', died.treatment,')', sep='')
l8 = paste('Analysed (n=', analysed.control, ')\n', 
           '•   Per protocol (n=', pp.control,')', sep='')
l9 = paste('Analysed (n=', analysed.treatment, ')\n', 
           '•   Per protocol (n=', pp.treatment,')', sep='')
labels = c(l1, l2, l3, l4, l5, l6, l7, l8, l9, b)
n.labels = length(labels)
### make data frame of box chars
frame = read.table(sep='\t', stringsAsFactors=F, skip=0, header=T, text='
i   x   y   box.col box.type    box.prop    box.size
1   0.5 0.94    white   square  0.25    0.16
2   0.76    0.82    white   square  0.28    0.21
3   0.5 0.7 white   square  0.25    0.15
4   0.26    0.5 white   square  0.23    0.2
5   0.76    0.5 white   square  0.23    0.2
6   0.26    0.33    white   square  0.2 0.2
7   0.76    0.33    white   square  0.2 0.2
8   0.26    0.15    white   square  0.2 0.2
9   0.76    0.15    white   square  0.2 0.2
10  0.1 0.95    light blue  round   0.7 0.035
11  0.51    0.6 light blue  round   0.7 0.035
12  0.51    0.411   light blue  round   0.7 0.035
13  0.51    0.235   light blue  round   0.7 0.035')
pos = as.matrix(subset(frame, select=c(x, y)))
M = matrix(nrow = n.labels, ncol = n.labels, byrow = TRUE, data = 0)
M[3, 1] = "' '"
M[4, 3] = "' '"
M[5, 3] = "' '"
M[6, 4] = "' '"
M[7, 5] = "' '"
M[8, 6] = "' '"
M[9, 7] = "' '"
tcol = rep('black', n.labels)
to.blank = c(2,4:9)
tcol[to.blank] = 'transparent' # blank some boxes to add text as right aligned
#postscript('consort.flow.eps', width=7.5, height=7, horiz=F)
par(mai=c(0,0.04,0.04,0.04))
plotmat(M, pos = pos, name = labels, lwd = 1, shadow.size=0, curve=0,
        box.lwd = 2, cex.txt = 1, box.size = frame$box.size, box.col=frame$box.col,
        box.type = frame$box.type, box.prop = frame$box.prop, txt.col = tcol)
# add left-aligned text; -0.185 controls the horizontal indent
for (i in to.blank){
  text(x=pos[i,1] - 0.185, y=pos[i,2], adj=c(0,0.5), labels=labels[i]) # minus controls text position
}
# extra arrow to excluded
arrows(x0=0.5, x1=0.55, y0=0.82, length=0.12)
Diagramm mit der Anzahl untersuchten, eingeschlossenen und analysierten Studienteilnehmenden [Consort Flow Chart.](http://www.consort-statement.org/)

Abbildung 24.2: Diagramm mit der Anzahl untersuchten, eingeschlossenen und analysierten Studienteilnehmenden Consort Flow Chart.

24.5 Beschreibende Statistik zu Beginn der Studie

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(randomizr)
set.seed(1243575)
Geschlecht<-sample(c("Männer", "Frauen"), size=100000, replace =TRUE)
kg_t0<-rnorm(100000, 120, 6)
Schmerzen<-rnorm(100000, 6, 2.2)
Weight_Efficacy_Lifestyle_Questionnaire<-rnorm(100000, 121, 32) 
# https://spectrum.diabetesjournals.org/content/diaspect/27/4/270.full.pdf 

df_Population<-data.frame(Geschlecht, kg_t0, Schmerzen, Weight_Efficacy_Lifestyle_Questionnaire)
df_Einschluss<-sample_n(df_Population, 160)

df_Randomisation<-df_Einschluss %>% 
  mutate(Randomisation=complete_ra(N = 160, prob_each = c(.5, .5),
               conditions=c("Aproz", "Henniez"))) %>%
  group_by(Randomisation) %>% 
  mutate(id=row_number()) %>% 
  mutate(kg_6Monate=case_when(
    Randomisation=="Aproz" & id <71 ~kg_t0-rnorm(n(), 2.5,11), 
    Randomisation=="Henniez"& id <66~kg_t0+rnorm(n(), 0.5, 8)
  )) %>% 
    mutate(change_t1_t0=kg_6Monate-kg_t0)
summary(df_Randomisation$change_t1_t0[df_Randomisation$Randomisation=="Aproz"])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
## -26.295  -9.146  -3.401  -2.665   5.613  18.561      10
summary(df_Randomisation$change_t1_t0[df_Randomisation$Randomisation=="Henniez"])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
## -15.348  -3.059   1.598   2.205   8.458  19.086      15
table(df_Randomisation$Randomisation)
## 
##   Aproz Henniez 
##      80      80
Wir benutzen das tableone Paket um die beschreibende Statistik der Studie darzustellen. In Publikationen ist dies meistens die Tabelle 1.

Merke: Bei der Tabelle 1 einer randomisierten Studie sollten eigentlich keine p-Werte gezeigt werden, da wir ja wissen, dass die beiden Gruppen sich nur zufällig unterscheiden, respektive aus derselben Population stammen. Es wird empfohlen, die Unterschiede zwischen den Gruppen mit einer Effektgrösse (engl.: Effect Size) anzugeben. Wir geben hier die standardisierte Mittelwertsdifferenz an, auf englisch die Standardised Mean Difference (SMD).Dies ist das gleiche wie das Cohen’s d, das wir weiter unten auch sehen werden. Wir werden später - im Teil zu den Meta-Analysen - im Detail sehen, was das ist.

library(tableone)
tab1 <- CreateTableOne(vars = c("Geschlecht","kg_t0","Schmerzen" ,"Weight_Efficacy_Lifestyle_Questionnaire"), strata = "Randomisation" , test=FALSE, data = df_Randomisation)


kableone(print(tab1, showAllLevels = TRUE, formatOptions = list(big.mark = "'"), smd=TRUE))
level Aproz Henniez SMD
n 80 80
Geschlecht (%) Frauen 39 (48.8) 38 (47.5) 0.025
Männer 41 (51.2) 42 (52.5)
kg_t0 (mean (SD)) 119.38 (6.01) 119.14 (6.70) 0.038
Schmerzen (mean (SD)) 5.63 (2.16) 6.07 (1.90) 0.214
Weight_Efficacy_Lifestyle_Questionnaire (mean (SD)) 119.59 (31.82) 120.67 (28.53) 0.036

24.6 Resultate nach sechs Monaten

library(arsenal)
mycontrols  <- arsenal::tableby.control(test=TRUE, total=FALSE,
                               numeric.test="anova",
                               numeric.stats = c("N", "Nmiss", "meansd"))

table_2 <- tableby(Randomisation ~ change_t1_t0+kg_6Monate , data=df_Randomisation, control=mycontrols)
summary(table_2, labelTranslations = c(kg="Körpergewicht vor Therapie", 
                                       change_t1_t0="Veränderung t1 minus t0", 
                                       kg_6Monate="Körpergewicht nach 6 Monaten"))
Aproz (N=80) Henniez (N=80) p value
Veränderung t1 minus t0 0.003
   N 70 65
   N-Miss 10 15
   Mean (SD) -2.665 (10.217) 2.205 (8.660)
Körpergewicht nach 6 Monaten 0.025
   N 70 65
   N-Miss 10 15
   Mean (SD) 116.704 (12.245) 121.093 (9.999)
resultChangeES<-effectsize::cohens_d(change_t1_t0~factor(Randomisation),data=df_Randomisation, paired=FALSE, pooled_sd=TRUE)
## Warning: Missing values detected. NAs dropped.
Nach Ende der Interventionsperiode wogen die 70 Studienteilnehmenden in der Aproz Gruppe 117 kg, mit einer Standardabweichung von 12.2 kg. In der Henniez Gruppe blieben noch 65 Studienteilnehmende übrig und das durschnittliche Gewicht war 121 kg (SD 10). Die Statistikerin hat einen P-Wert für den Vergleich der durchschnittlichen Veränderungen beider Gruppen berechnet, dieser war 0.003. Da wir in unserem Beispiel ja wissen, dass es in Wahrheit keinen Unterschied in der Gewichtsabnahme gibt (d.h. die Nullhypothese stimmt), ist die Wahrscheinlichkeit nur 0.3% ein solches Studienresultat oder ein extremeres zu sehen, wie wir es hier gesehen haben. Zur Erinnerung: Der p-Wert ist die Wahrscheinlichkeit, ein solches Resultat oder ein extremeres zu sehen, wenn in die Nullhypothese stimmt. Diese Studie zeigt uns also einen Typ-I Fehler. Wir sagen fälschlicherweise, dass es einen Unterschied gibt, wenn in Wahrheit kein Unterschied zwischen den Interventionen besteht.

Die Tabelle zeigt einerseits die Analyse der Veränderungen und die Analyse der Werte nach Abschluss der Therapie bei 6 Monaten. Beide Analysen sind korrekt (siehe Abschnitt weiter unten).

24.6.1 Effektstärke Cohen’s d

Wir können noch eine Effektstärke nach Cohen berechnen, das sogenannte Cohen’s d: -0.51 (95% KI -0.85 bis -0.17). Ein Cohen’s d von 0.5 bedeutet, dass die Zwischengruppendifferenz der Veränderungen eine halbe Standardabweichung der Veränderung war. Dies wird oft als moderater Effekt bezeichnet. Ein Cohen’s d von 0.2 wird oft als kleiner Effekt eingestuft Effekt, 0.5 als mittlerer Effekt und 0.8 als grosser Effekt. Siehe Tabelle 1 in diesem PDF

(result_change<-t.test(df_Randomisation$change_t1_t0~df_Randomisation$Randomisation, paired=FALSE, na.action='na.omit') %>% 
  broom::tidy())
## # A tibble: 1 × 10
##   estim…¹ estim…² estim…³ stati…⁴ p.value param…⁵ conf.…⁶ conf.…⁷ method alter…⁸
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>  <chr>  
## 1   -4.87   -2.66    2.20   -2.99 0.00329    132.   -8.09   -1.65 Welch… two.si…
## # … with abbreviated variable names ¹​estimate, ²​estimate1, ³​estimate2,
## #   ⁴​statistic, ⁵​parameter, ⁶​conf.low, ⁷​conf.high, ⁸​alternative

24.7 Wie hat die Statistikerin den p-Wert berechnet?

Es gibt verschiedene Möglichkeiten, diese Studie zu analysieren. Zuerst muss die Statistikerin schauen, was wir überhaupt für Daten haben. In unserem Fall ist das Körpergewicht proportionalskaliert. Da wir eine relativ grosse Stichprobe haben, müssen wir nicht testen, ob die Daten aus einer normalverteilten Population stammen (dem zentralen Grenzwertsatz sein gedankt). Bei kleinen Stichproben (~ n < 60) müssten wir testen ob die Daten aus einer normalverteilten Population kommen, falls dies nicht der Fall ist, würde die Statistikerin sogenannte nichtparametrische Tests auswählen. Wir haben eine grössere Stichprobe, also wählen wir parametrische Tests (d.h. Tests die mit Mittelwert und Standardabweichung rechnen).

Da unser Beispiel eine randomiserte Studie ist, dürfen wir die Mittelwerte nach der Interventionsperiode verglichen, d.h. zu t1 (6 Monate nach Start der Studie). Warum dürfen wir das: alle Unterschiede zu Beginn der Studie sind zufällig. Wenn wir viele Studien haben, werden sich die Unterschiede neutralisieren. Wir dürfen jedoch auch die Veränderungen vergleichen. Die beste Analyse wäre, wenn wir eine Regression auf die Werte nach der Intervention machen und dabei für die Ausgangswerte des Gewichtes korrigieren. Dies zeigen wir ganz unten in diesem Kapitel.

24.7.1 Vergleich der Mittelwerte der Veränderungen

Wir vergleiche die Veränderungen der beiden Gruppen, (d.h. kg t1 minus kg t0, wobei t0 = Vor der Therapie, t1 = nach der Therapie (6 Monate)). Hier haben wir zwei unabhängige Gruppen (die Aproz-Gruppe und die Henniez Gruppe) und wir können zum Beispiel einen t-test für unabhängige Daten durchführen. Dazu müssen wir zuerst die Veränderungen des Gewichts berechnen. Standardmässig wird da t1 - t0 gerechnet.

Nun können wir den t.test für unabhängige Stichproben durchführen. Warum unabhängige Stichproben? Weil die beiden Gruppen unterschiedliche Personen sind. Wenn wir zu Beispiel t0 mit t1 vergleichen würden, müssten wir einen t.test für abhängige Stichproben nehmen, da bei t0 und bei zweimal die gleichen Personen gemessen wurden.

(result_change<-t.test(df_Randomisation$change_t1_t0~df_Randomisation$Randomisation, paired=FALSE, na.action='na.omit') %>% 
  broom::tidy())
## # A tibble: 1 × 10
##   estim…¹ estim…² estim…³ stati…⁴ p.value param…⁵ conf.…⁶ conf.…⁷ method alter…⁸
##     <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>  <chr>  
## 1   -4.87   -2.66    2.20   -2.99 0.00329    132.   -8.09   -1.65 Welch… two.si…
## # … with abbreviated variable names ¹​estimate, ²​estimate1, ³​estimate2,
## #   ⁴​statistic, ⁵​parameter, ⁶​conf.low, ⁷​conf.high, ⁸​alternative

Der t.test gibt uns die Veränderung der beiden Gruppen, d.h. -2.66 in der Gruppe mit Aproz und 2.2 für die Gruppe die Henniez trank. Die Mittelwertsdifferenz war -4.87, das 95% Konfidenzintervall von -8.09 bis -1.65.

Der p-Wert ist 0.003

24.7.2 Vergleich der Mittelwerte nach Abschluss der Therapie

In einer randomisierten Studie dürfen wir auch die Post-Werte mit einem t.test für unabhängige Gruppen vergleichen. Der P-Wert wird nicht gleich sein wie der t.test für die Veränderungen.

(results_t.test<-t.test(df_Randomisation$kg_6Monate~df_Randomisation$Randomisation, paired=FALSE, na.action='na.omit') )
## 
##  Welch Two Sample t-test
## 
## data:  df_Randomisation$kg_6Monate by df_Randomisation$Randomisation
## t = -2.2877, df = 130.9, p-value = 0.02376
## alternative hypothesis: true difference in means between group Aproz and group Henniez is not equal to 0
## 95 percent confidence interval:
##  -8.1836292 -0.5936506
## sample estimates:
##   mean in group Aproz mean in group Henniez 
##              116.7043              121.0929

Ob die Veränderung oder der Post-Werte Vergleich einen tieferen p-Wert ergibt, hängt von der Korrelation der Werte t0 zu t1 ab. Bei tiefer Korrelation hat der Post-Werte Vergleich kleinere p-Werte als der Veränderungsvergleich. In unserem Beispiel haben wir jedoch relative hohe Korrelation der t0 zu t1 Werte.

cor(df_Randomisation$kg_t0, df_Randomisation$kg_6Monate, use='complete')
## [1] 0.5158968

Die beste Analyse wäre eigentlich die Regression auf die Post-Werte oder die Change Wert, wenn gleichzeitig die Werte t0 mit in die Regressionsgleichung genommen werden.

Hier unten die beiden Regressionsanalysen, einmal sind die Post-Werte die abhängige Variable, in der zweiten Regression die Veränderungswerte. Sie sehen, dass dies beide Male das gleiche Resultat gibt. Der Effekt des Henniez-Wassers im Vergleich zum Approz-Wasser sehen Sie in der zweiten Zeile der Regression (RandomisationHenniez): Dies bedeutet, dass Henniez 4.84 Kilogramm mehr Körpergewicht hat als die Aproz Gruppe, respektive, dass der Unterschied in der Veränderung 4.84 war, wenn für die Ausgangswerte (auch Baselinewerte genant) korrigiert wird. Wir werden hier nicht näher auf die Details eingehen, wer jedoch interessiert ist, kann folgende Dokumente lesen: Common statistical tests are linear models und Senn 2006 Change from baseline and analysis of covariance revisited.

result_post_adjusted_t0<-lm(kg_6Monate~Randomisation+kg_t0, data=df_Randomisation)
jtools::summ(result_post_adjusted_t0, confint=TRUE)
Observations 135 (25 missing obs. deleted)
Dependent variable kg_6Monate
Type OLS linear regression
F(2,132) 29.85
0.31
Adj. R² 0.30
Est. 2.5% 97.5% t val. p
(Intercept) 5.48 -24.95 35.92 0.36 0.72
RandomisationHenniez 4.84 1.59 8.08 2.95 0.00
kg_t0 0.93 0.68 1.19 7.25 0.00
Standard errors: OLS
result_post_adjusted_t0<-lm(change_t1_t0~Randomisation+kg_t0, data=df_Randomisation)
jtools::summ(result_post_adjusted_t0, confint=TRUE)
Observations 135 (25 missing obs. deleted)
Dependent variable change_t1_t0
Type OLS linear regression
F(2,132) 4.55
0.06
Adj. R² 0.05
Est. 2.5% 97.5% t val. p
(Intercept) 5.48 -24.95 35.92 0.36 0.72
RandomisationHenniez 4.84 1.59 8.08 2.95 0.00
kg_t0 -0.07 -0.32 0.19 -0.53 0.60
Standard errors: OLS

Type-I Error: Man sagt, dass etwas ist, obschon es in Wahrheit nicht ist. Nicht das Gewicht ist das Problem, sondern die Schwerkraft.