Willkommen bei Stats by Randolph. Hier geht es zur Hauptseite mit weiteren Informationen und Inhalten.

Autor:innen dieser Seite: An den Inhalten dieser Seite haben mitgearbeitet: Valentin Koob und Markus Janczyk. Der Inhalt dieser Seite wird in der Lehre in den Studiengängen Psychologie von der AG Forschungsmethoden und Kognitive Psychologie an der Universität Bremen verwendet, steht aber allen Interessierten zur Verfügung. Rückmeldungen/Fehler/Vorschläge können gesendet werden an .

Versionshistory:

  • v1.0: erste online-gestellte Version (03.03.2024)

1 Power Berechnung für Varianzanalyse-Designs

1.1 Power für einfaktorielle between-subject Designs

Im Zuge der einfaktoriellen Varianzanalyse in Statistik II (siehe Teil 3) wurde erläutert, wie die Power für eine einfaktorielle Varianzanalyse berechnet werden kann. Essenziell war hierbei die Betrachtung der Effektstärke \(f\) und wie diese sich zur non-zentralen \(F\)-Verteilung mit \(N-J\) Freiheitsgraden verhält (mit \(N\) = Gesamtstichprobengröße und \(J\) = Anzahl der Stufen).

Für die praktische Umsetzung mit R kann für die einfaktorielle Varianzanalyse die Funktion pwr.anova.test() aus dem pwr Paket genutzt werden. Analog zur R Funktion power.t.test (siehe Teil 14, Statistik 1) können hierbei für

  • ein Signifikanzniveau \(\alpha\),
  • eine Effektstärke \(f\),
  • eine Stichprobengröße pro Gruppe \(n\) und
  • eine Anzahl der Gruppen \(J\)

die Power \(1-\beta\) für ein konkretes Design berechnet werden. Auch hier gilt natürlich, dass alle Größen voneinander mathematisch abhängig sind und sobald 4 der 5 Werte gesetzt sind, die letzte Größe automatisch berechnet wird. Sie eignet sich also sowohl für die a-priori wie auch post-hoc Power-Betrachtung.

Als Beispiel wollen wir die benötigte Stichprobengröße für ein einfaktorielles Design mit \(J=3\) Stufen berechnen, bei der die angenommene Effektstärke \(f = 0.5\) ist und wir eine Power von \(1-\beta = 0.8\) erreichen wollen. Die Funktion für diesen Fall wird dann wie folgt aufgerufen:

library(pwr)
pwr.anova.test(k = 3,            # Anzahl der Faktorstufen (bei uns im Skript J)
               n = NULL,         # wird gesucht
               f = 0.5,          # angenommene Effektstärke
               sig.level = 0.05, # Signifikanzniveau (standard 5%)
               power = 0.8)      # gewünschte Power 
## 
##      Balanced one-way analysis of variance power calculation 
## 
##               k = 3
##               n = 13.89521
##               f = 0.5
##       sig.level = 0.05
##           power = 0.8
## 
## NOTE: n is number in each group

Die Funktion gibt ein \(n = 14\) (aufgerundet) pro Gruppe aus. Unsere gesamte Stichprobengröße müsste also \(N = 3 \cdot 14 = 42\) sein, um bei einem einfaktoriellen Design mit \(J=3\) Stufen, mit einer Power von \(80\%\) einen Effekt von \(f = 0.5\) aufdecken zu können.

1.2 Power Berechnung für komplexere Designs mit Superpower

Das Problem ist nun, dass die Funktion pwr.anova.test() nur für einfaktorielle between-subject Varianzanalysen einsetzbar ist. Für mehrfaktorielle Varianzanalysen oder Varianzanalysen mit Messwiederholung gilt sie nicht mehr. Allerdings sind die genauen Herangehensweisen für die Power-Berechnung je nach Design anders und auch die dahinterliegende Mathematik wird mit steigender Komplexität der Varianzanalyse immer komplizierter. Eine Lösung ist jedoch die Nutzung von Simulationen. Anstatt die Power analytisch durch geschlossene Formeln herzuleiten, nutzt man die Rechenleistung moderner Computer um die Power für ein gegebenes Design zu simulieren. In R gibt es hierfür das Paket Superpower (Lakens & Caldwell, 2021). Wir wollen hier an dieser Stelle das Paket nur grundlegend einführen, da es bereits ein gut verständliches Tutorial als Publikation gibt (siehe hier).

Im Gegensatz zu bisher betrachteten Funktionen (wie power.t.test() oder pwr.anova.test()) muss man bei Superpower eine Vermutung über die wahren Populationserwartungswerte bzw. Standardabweichungen formulieren, welche dann als Basis der Simulation dient. Diese Informationen beschreibt man mit Hilfe der Funktion ANOVA_design(). Die folgenden Annahmen über die Erwartungswerte und Standardabweichungen entsprechen in etwa der vorherigen Situation mit einer angenommen Effektstärke von \(f = 0.5\):

library(Superpower)
design_result <- ANOVA_design(design = "3b",      # dreistufig between-subject 
                              n = 14,             # 14 Versuchspersonen
                              mu = c(1, 2, 3.45), # Die angenommenen Erwartungswerte
                              sd = 2,             # Die angenommen Standardabweichung
                              labelnames = c("condition", "S1", "S2", "S3"))