Leistungsanalyse in R
Übersicht
Die Power-Analyse ist ein wichtiger Aspekt der Versuchsplanung. Sie ermöglicht es uns, den Stichprobenumfang zu bestimmen, der erforderlich ist, um einen Effekt einer bestimmten Größe mit einem bestimmten Grad an Sicherheit zu entdecken. Umgekehrt können wir damit die Wahrscheinlichkeit bestimmen, einen Effekt einer bestimmten Größe mit einem bestimmten Konfidenzniveau zu entdecken, wenn der Stichprobenumfang begrenzt ist. Wenn die Wahrscheinlichkeit unannehmbar niedrig ist, sollten wir das Experiment ändern oder abbrechen.
Die folgenden vier Größen stehen in einer engen Beziehung zueinander:
- Stichprobengröße
- Effektgröße
- Signifikanzniveau = P(Fehler vom Typ I) = Wahrscheinlichkeit, einen Effekt zu finden, der nicht vorhanden ist
- Potenz = 1 - P(Fehler vom Typ II) = Wahrscheinlichkeit, einen Effekt zu finden, der vorhanden ist
Wenn wir drei haben, können wir den vierten bestimmen.
Leistungsanalyse in R
Das von Stéphane Champely entwickelte pwr-Paket implementiert die Leistungsanalyse, wie sie von Cohen (!988)</a > beschrieben wurde. Einige der wichtigsten Funktionen sind im Folgenden aufgeführt.
Funktion | Leistungsberechnungen für |
pwr.2p.test | zwei Proportionen (gleich n) |
pwr.2p2n.test | zwei Proportionen (ungleich n) |
pwr.anova.test | ausgeglichene Einweg-ANOVA |
pwr.chisq.test | Chi-Quadrat-Test |
pwr.f2.test | allgemeines lineares Modell |
pwr.p.test | Anteil (eine Probe) |
pwr.r.test | Korrelation |
pwr.t.test | t-Tests (eine Stichprobe, 2 Stichproben, gepaart) |
pwr.t2n.test | t-Test (zwei Stichproben mit ungleichem n) |
Für jede dieser Funktionen gibst du drei der vier Größen (Effektgröße, Stichprobengröße, Signifikanzniveau, Power) ein und die vierte wird berechnet.</strong >
Das Signifikanzniveau ist standardmäßig auf 0,05 eingestellt. Um das Signifikanzniveau bei gegebener Effektgröße, Stichprobengröße und Mächtigkeit zu berechnen, verwende daher die Option "sig.level=NULL".
Eine Effektgröße zu bestimmen, kann eine schwierige Aufgabe sein. Die ES-Formeln und Cohens Vorschläge (basierend auf sozialwissenschaftlicher Forschung) sind unten aufgeführt. Cohens Vorschläge sollten nur als sehr grobe Richtlinien betrachtet werden. Du solltest deine eigene fachliche Erfahrung mit einbringen.
(Um Konfidenzintervalle und das Ziehen von Schlussfolgerungen aus Stichproben zu erkunden, probiere diesen interaktiven Kurs über die Grundlagen der Inferenz aus)</a >
t-Tests
Für t-Tests kannst du die folgenden Funktionen verwenden:
pwr.t.test(n = , d = , sig.level = , power = , type = c("two.sample", "one.sample", "paired"))</strong >
Dabei ist n die Stichprobengröße, d die Effektgröße und der Typ gibt an, ob es sich um einen t-Test mit zwei Stichproben, einen t-Test mit einer Stichprobe oder einen gepaarten t-Test handelt. Wenn du ungleiche Stichprobengrößen hast, verwende
pwr.t2n.test(n1 = , n2= , d = , sig.level =, power = )
wobei n1 und n2 die Stichprobengrößen sind.
Bei t-Tests wird die Effektgröße wie folgt bewertet
Cohen geht davon aus, dass d-Werte von 0,2, 0,5 und 0,8 kleine, mittlere bzw. große Effektstärken darstellen.
Du kannst alternativ="two.sided", "less" oder "greater" angeben, um einen zweiseitigen oder einseitigen Test anzugeben. Die Standardeinstellung ist ein zweiseitiger Test.
ANOVA
Für eine einseitige Varianzanalyse verwenden Sie
pwr.anova.test(k = , n = , f = , sig.level = , power = )
wobei k die Anzahl der Gruppen und n der gemeinsame Stichprobenumfang in jeder Gruppe ist.
Bei einer einseitigen ANOVA wird die Effektgröße durch f gemessen, wobei
Cohen geht davon aus, dass f-Werte von 0,1, 0,25 und 0,4 kleine, mittlere bzw. große Effektgrößen darstellen.
Korrelationen
Für Korrelationskoeffizienten verwenden Sie
pwr.r.test(n = , r = , sig.level = , power = )
wobei n der Stichprobenumfang und r die Korrelation ist. Wir verwenden den Korrelationskoeffizienten der Bevölkerung als Maß für die Effektgröße. Cohen geht davon aus, dass r-Werte von 0,1, 0,3 und 0,5 kleine, mittlere bzw. große Effektstärken darstellen.
Lineare Modelle
Für lineare Modelle (z. B. multiple Regression) verwenden Sie
pwr.f2.test(u =, v = , f2 = , sig.level = , power = )
wobei u und v die Freiheitsgrade im Zähler und im Nenner sind. Wir verwenden f2 als Maß für die Effektgröße.
Die erste Formel ist geeignet, wenn wir die Auswirkungen einer Reihe von Prädiktoren auf ein Ergebnis bewerten. Die zweite Formel ist geeignet, wenn wir die Auswirkungen einer Gruppe von Prädiktoren zusätzlich zu einer zweiten Gruppe von Prädiktoren (oder Kovariaten) bewerten. Cohen schlägt vor, dass f2-Werte von 0,02, 0,15 und 0,35 für kleine, mittlere und große Effektgrößen stehen.
Tests von Proportionen
Wenn du zwei Proportionen vergleichst, verwende
pwr.2p.test(h = , n = , sig.level =, power = )
wobei h die Effektgröße und n die gemeinsame Stichprobengröße in jeder Gruppe ist.
Cohen geht davon aus, dass h-Werte von 0,2, 0,5 und 0,8 kleine, mittlere bzw. große Effektstärken darstellen.
Für ungleiche n's verwenden Sie
pwr.2p2n.test(h = , n1 = , n2 = , sig.level = , power = )
Um einen einzelnen Anteil zu testen, verwende
pwr.p.test(h = , n = , sig.level = power = )
Sowohl bei zweiseitigen als auch bei einseitigen Proportionstests kannst du alternativ="two.sided", "less" oder "greater" angeben, um einen zweiseitigen bzw. einseitigen Test zu kennzeichnen. Die Standardeinstellung ist ein zweiseitiger Test.
Chi-Quadrat-Tests
Für Chi-Quadrat-Tests verwenden Sie
pwr.chisq.test(w =, N = , df = , sig.level =, power = )
Dabei ist w die Effektgröße, N die Gesamtstichprobengröße und df die Freiheitsgrade. Die Effektgröße w ist definiert als
Cohen geht davon aus, dass w-Werte von 0,1, 0,3 und 0,5 kleine, mittlere bzw. große Effektstärken darstellen.
Einige Beispiele
library(pwr)
# For a one-way ANOVA comparing 5 groups, calculate the
# sample size needed in each group to obtain a power of
# 0.80, when the effect size is moderate (0.25) and a
# significance level of 0.05 is employed.
pwr.anova.test(k=5,f=.25,sig.level=.05,power=.8)
# What is the power of a one-tailed t-test, with a
# significance level of 0.01, 25 people in each group,
# and an effect size equal to 0.75?
pwr.t.test(n=25,d=0.75,sig.level=.01,alternative="greater")
# Using a two-tailed test proportions, and assuming a
# significance level of 0.01 and a common sample size of
# 30 for each proportion, what effect size can be detected
# with a power of .75?
pwr.2p.test(n=30,sig.level=0.01,power=0.75)
Erstellen von Power- oder Stichprobengrößenplots
Die Funktionen im pwr-Paket können verwendet werden, um Leistungs- und Stichprobengrößengrafiken zu erstellen.
# Plot sample size curves for detecting correlations of
# various sizes.
library(pwr)
# range of correlations
r <- seq(.1,.5,.01)
nr <- length(r)
# power values
p <- seq(.4,.9,.1)
np <- length(p)
# obtain sample sizes
samsize <- array(numeric(nr*np), dim=c(nr,np))
for (i in 1:np){
for (j in 1:nr){
result <- pwr.r.test(n = NULL, r = r[j],
sig.level = .05, power = p[i],
alternative = "two.sided")
samsize[j,i] <- ceiling(result$n)
}
}
# set up graph
xrange <- range(r)
yrange <- round(range(samsize))
colors <- rainbow(length(p))
plot(xrange, yrange, type="n",
xlab="Correlation Coefficient (r)",
ylab="Sample Size (n)" )
# add power curves
for (i in 1:np){
lines(r, samsize[,i], type="l", lwd=2, col=colors[i])
}
# add annotation (grid lines, title, legend)
abline(v=0, h=seq(0,yrange[2],50), lty=2, col="grey89")
abline(h=0, v=seq(xrange[1],xrange[2],.02), lty=2,
col="grey89")
title("Sample Size Estimation for Correlation Studies\n
Sig=0.05 (Two-tailed)")
legend("topright", title="Power",
as.character(p),
fill=colors)