Ghostwriting-Service Dr. Rainer Hastedt

Fachtexte, White Papers, statistische Auswertungen

Erfolgsmessung im Marketing - Folge 25: Konversionsvergleiche für mehr als zwei Gruppen (Permutations-F-Test)

Ich habe in Folge 24 anhand eines Zahlenbeispiels den Test von vier Varianten einer Landing-Page beschrieben. Die Variante H1T1 (Headline H1 + Produktbeschreibung T1) hat hierbei am besten abgeschnitten (durchschnittliche Konversionsrate = 0,77).

Ich beschäftige mich jetzt mit der Frage, ob das deutlich bessere Ergebnis für Variante H1T1 systematisch oder zufallsbedingt ist.

Das gute Abschneiden von Variante H1T1 taugt nur als Qualitätsbeweis, wenn Sie einen nachvollziehbaren Grund zu der Annahme haben, es gebe einen Ursache-Wirkungs-Zusammenhang zwischen der gewählten Variante und der durchschnittlichen Konversionsrate.

Ich mache in dieser Folge einen F-Test der die Frage klären soll, ob die beobachteten Unterschiede zwischen den vier Mittelwerten zufallsbedingt sind. Der F-Test ist so gesehen ein Kriterium mit dem Sie prüfen, ob paarweise Vergleiche zwischen den Mittelwerten sinnvoll sind (Mittelwert H1T1 im Vergleich zu Mittelwert H1T2, Mittelwert H2T1 im Vergleich zu Mittelwert H2T2, …).

Ich beschreibe zunächst die Grundidee von F-Tests, indem ich die für einen solchen Test benötigten Kennzahlen so einfach wie möglich herleite. Ich verwende hierzu Tabellen. Danach bespreche ich den Permutations-F-Test, der nach dem gleichen Grundprinzip funktioniert wie die in Folge 21 und Folge 22 besprochenen Permutationstests zum Vergleich zweier Mittelwerte. Zum Abschluss vergleiche ich meine Ergebnisse mit den Ergebnissen eines klassischen F-Tests mit F-Verteilung.

Die Grundidee von F-Tests

Ein F-Test ist für den Fall gedacht, dass Sie mindestens drei Mittelwerte vergleichen wollen. Der F-Test besteht im Wesentlichen aus einem Abgleich von Varianzen und wird daher auch als Varianzanalyse oder ANOVA (Analysis Of Variance) bezeichnet.

Die Daten meines Zahlenbeispiels liegen in folgender Form vor (die Kennzahl-Spalte habe ich weggelassen):

Headline Beschreibung Konversion Variante
H1 T1 0 H1T1
H2 T1 1 H2T1
H1 T1 1 H1T1
H2 T1 1 H2T1
H1 T1 0 H1T1

In der Spalte Konversion lautet das Ergebnis entweder 1 (Konversion ja) oder 0 (Konversion nein). Anhand der Konversionswerte und der Gruppeneinteilung aus der Spalte Variante erhalte ich die folgenden Kennzahlen:

Variante N MW Var
H1T1 35 0,77 0,18
H1T2 35 0,51 0,26
H2T1 35 0,57 0,25
H2T2 35 0,46 0,26
Alle 140 0,58 0,25

Die Spalte N enthält die Anzahl der Beobachtungswerte, zunächst für die vier Varianten separat und dann für alle vier Varianten zusammen. Es gibt demnach für jede der vier Varianten 35 Beobachtungswerte. Mein Zahlenbeispiel umfasst insgesamt 140 Beobachtungswerte.

Die Spalte MW enthält in den ersten vier Zeilen die durchschnittlichen Konversionsraten, die mit den vier Varianten erzielt worden sind. Geprüft werden soll, ob sich mindestens zwei dieser Mittelwerte signifikant unterscheiden.

Die Spalte Var enthält die Varianzen, zunächst für die vier Varianten separat berechnet und dann für alle vier Varianten zusammen. Sie sehen hier, dass die Varianz für die Gruppe H1T1 (für die Leads, denen Variante H1T1 präsentiert wurde) deutlich niedriger ist als für alle anderen Gruppen.

Ich ergänze die Tabelle um eine Spalte, die ich aus den Spalten N und Var berechne:

Variante N MW Var (N-1)*Var
H1T1 35 0,77 0,18 6,17
H1T2 35 0,51 0,26 8,74
H2T1 35 0,57 0,25 8,57
H2T2 35 0,46 0,26 8,69
Alle 140 0,58 0,25 34,14

Für die rechte Spalte habe ich jeweils den N-Wert um 1 gemindert und das Ergebnis dann mit dem zugehörigen Varianz-Wert multipliziert. Alle Mittelwert- und Varianzangaben sind gerundet.

Der Wert in der letzten Zeile der rechten Spalte (34,14) ist die Summe der Abweichungsquadrate unter der Bedingung, dass ich immer den Mittelwert aus der letzten Zeile zugrunde lege (0,58). Ich bezeichne diese Zahl mit QSA.

Die Summe der Gruppenwerte aus der rechten Spalte (6,17 + 8,74 + 8,57 + 8,69 = 32,17) ist die Summe der Abweichungsquadrate unter der Bedinung, dass ich immer den zugehörigen Gruppenmittelwert zugrunde lege. Ich bezeichne diese Zahl mit QSB.

Für QSA rechne ich für jeden Besucher: Konversionswert (1 oder 0) minus Gesamt-Mittelwert (0,58) und quadriere den Wert. Anschließend summiere ich die auf diese Weise berechneten Abweichungsquadrate.

Für QSB rechne ich für jeden Besucher: Konversionswert (1 oder 0) minus Gruppenmittelwert und quadriere den Wert. Anschließend summiere ich die auf diese Weise berechneten Abweichungsquadrate.

QSA ist immer größer oder gleich QSB.

  • Stimmen alle Gruppenmittelwerte überein, so gilt QSA gleich QSB
  • Sind alle Gruppenmittelwerte annähernd gleich, so ist QSA nur geringfügig größer als QSB
  • Unterscheiden sich zwei Gruppenmittelwerte deutlich, so ist QSA deutlich größer als QSB

Durch einen Vergleich von QSA und QSB können Sie demnach einschätzen, ob sich mindestens zwei Gruppenmittelwerte signifikant unterscheiden. Sie prüfen hierzu, ob QSA deutlich größer ist als QSB oder nicht.

Als Kritierium für den Vergleich von QSA und QSB dient ein Signifikanztest (p-Wert ≤ 0,05 gleichbedeutend mit QSA deutlich größer als QSB, was wiederum bedeutet, dass sich mindestens zwei Gruppenmittelwerte signifikant unterscheiden).

Permutations-F-Test

Der aus Lehrbüchern bekannte F-Test (klassischer F-Test, mit F-Verteilung) basiert auf drei Annahmen:

  • Die für eine beliebige Vergleichsgruppe vorliegenden Beobachtungswerte können als Stichprobe interpretiert werden
  • Die für eine beliebige Vergleichsgruppe vorliegenden Beobachtungswerte entstammen einer normalverteilten Population
  • Alle in den Mittelwertvergleich einbezogenen Populationen haben die gleiche Varianz (berechnet anhand der Ergebnisvariablen)

In meinem Zahlenbeispiel sind nur die Werte 1 (Konversion ja) oder 0 (Konversion nein) möglich. Dies steht im Widerspruch zur Normalverteilungsannahme. Außerdem: Wenn Daten, die nur aus Einsen und Nullen bestehen unterschiedliche Gruppenmittelwerte haben, dann werden im Allgemeinen auch die Varianzen unterschiedlich sein. Die Annahme der Varianzgleichheit ist daher für mein Zahlenbeispiel abwegig. Im Zahlenbeispiel ist die Varianz für Gruppe H1T1 wesentlich niedriger als für die anderen Gruppen.

Ein F-Test im herkömmlichen Sinne ist daher für mein Zahlenbeispiel ungeeignet.

Die für meine Daten sachgemäße Variante ist ein Permutations-F-Test, der nur erfordert, dass die Vergleichsgruppen per Zufallsauswahl eingeteilt worden sind. Mein Zahlenbeispiel erfüllt diese Bedingung (siehe Folge 24).

Beim Permutations-F-Test lauten meine Hypothesen:

H0 - Alle Gruppenmittelwerte sind gleich (die beobachteten Unterschiede sind zufällig aufgetreten)

H1 - Mindestens zwei Gruppenmittelwerte unterscheiden sich signifikant (nicht nur zufällig)

Bei einem klassischen F-Test hätten meine Hypothesen gelautet:

H0 - Die Mittelwerte der Grundgesamtheiten, aus denen meine Daten stammen sind alle gleich

H1 - Mindestens zwei der Grundgesamtheiten haben unterschiedliche Mittelwerte

Der mit einem klassischen F-Test versuchte Schluss von den vorliegenden Beobachtungswerten auf die entsprechenden Grundgesamtheiten setzt voraus, dass meine Daten als Stichproben angesehen werden können. Für meinen Permutations-F-Test spielt es dagegen keine Rolle, ob ich es mit Stichproben zu tun habe oder nicht. Beim Permutations-F-Test lautet die Frage: Sind die Abweichungen der Gruppenmittelwerte systematisch oder zufallsbedingt (Kausalität ja oder nein)?

Ich beginne, indem ich meine Daten in meine Statistik-Software R einlese und aus den Spalten Headline und Beschreibung die Spalte Variante erstelle:

library(readxl)
library(dplyr)
daten <- read_excel("0025.xlsx")
daten2 <- mutate(daten, Variante=paste(Headline,Beschreibung, sep=""))

Ich berechne die Werte QSA und QSB:

QSA <- sum((daten2$Konversion-mean(daten2$Konversion))^2)
QSB <- sum((daten2$Konversion-ave(daten2$Konversion,daten2$Variante,FUN=mean))^2)

Ich berechne, um wieviel Prozent QSA höher ist als QSB:

(QSA-QSB)/QSB # 0.06105684

QSA ist demnach 6,1 Prozent höher als QSB. Man könnte diese Zahl als den empirischen F-Wert ansehen und mit dieser Art von F-Wert den Permutations-F-Test durchführen. Ich werde dies aber nicht tun, weil der Quotient (QSA-QSB)/QSB üblicherweise mit der Konstanten (N-k)/(k-1) multipliziert wird (N = Gesamtzahl der Beobachtungswerte = 140, k = Anzahl der Vergleichsgruppen = 4).

Die Bedeutung der Konstanten besteht darin, dass die Größe ((QSA-QSB)/QSB)* (N-k)/(k-1) unter den Annahmen des herkömmlichen F-Tests F-verteilt ist. Für meinen Permutations-F-Test spielt dies keine Rolle. Ich multipliziere nur mit (N-k)/(k-1), damit mein F-Wert auf herkömmliche Weise definiert ist.

N <- 140 # Gesamtzahl Beobachtungswerte
k <- 4 # Anzahl der Gruppen
(QSA/QSB-1)*(N-k)/(k-1) # 2.76791

Das Ergebnis 2,76791 ist der empirische F-Wert für mein Zahlenbeispiel. Für den Signifikanztest ist es sinnvoll, die Berechnungsschritte als Funktion zusammenzufassen:

Femp <- function(x,y) {
QSA <- sum((x-mean(x))^2)
QSB <- sum((x-ave(x,y))^2)
N <- length(x)
k <- length(unique(y))
Value <- (QSA/QSB-1)*((N-k)/(k-1))
Value
}
# Test:
Femp(daten2$Konversion,daten2$Variante)
# 2.76791

Ich mache den Permutations-F-Test nach dem gleichen Schema wie in Folge 21 beim Mittelwertvergleich. Wenn die Nullhypothese H0 richtig ist und ich die zufallsbedingte Gruppeneinteilung wiederhole, dann werden die neu berechneten F-Werte in der großen Mehrzahl der Fälle relativ niedrig sein. Mein empirischer F-Wert (2,76791) wird daher zur Nullhypothese H0 passen, wenn relativ viele der neu berechneten F-Werte größer sind.

Zuerst bilde ich durch Zufallsauswahl neue Gruppen und berechne den empirischen F-Wert, der sich bei dieser Gruppeneinteilung ergibt:

neuberechnung <- function(x,y) {
neueinteilung <- sample(y)
Femp(x,neueinteilung)
}

Ich mache dies 20.000mal:

nsim <- 20000
neuwerte <- replicate(nsim, neuberechnung(daten2$Konversion,daten2$Variante))

Ich zeichne das Ergebnis:

FWert <- Femp(daten2$Konversion,daten2$Variante)
library(ggplot2)
svg("emim-25-1.svg", width=4.4, height=3.1, bg="transparent")
ggplot(as.data.frame(neuwerte), aes(x=neuwerte)) +
geom_histogram(binwidth=0.075) +
geom_vline(xintercept=FWert, colour="red", linetype="dotted", size=1) +
labs(title="Histogramm") +
annotate("text", x=FWert+0.1, y=500, label="Rote Linie:\nEmpirischer F-Wert", hjust=0, vjust=0.5) +
theme_bw() +
theme(plot.title=element_text(size=rel(1)), axis.text=element_text(size=rel(0.7)), axis.title=element_text(size=rel(0.9)), plot.background=element_rect(colour=NA,
fill="transparent"))
dev.off()

Histogramm

Gemäß Grafik sind von den neu berechneten F-Werten die weitaus meisten kleiner als mein empirischer F-Wert (2,76791). Ob dieser Anteil die 95-Prozent-Grenze erreicht oder überschreitet, kann ich der Grafik nicht entnehmen. Ich muss nachrechnen.

bedingung <- neuwerte >= Femp(daten2$Konversion,daten2$Variante)
sum(bedingung) # 976
mean(bedingung) # 0.0488

Von den 20.000 Neuwerten sind 976 mindestens so groß wie mein empirischer F-Wert (2,76791). Das Signifikanzniveau beträgt daher 0,049 (gerundet). Die Nullhypothese H0 wird daher abgelehnt.

Klassischer F-Test mit F-Verteilung

Nach meinen obigen Ausführungen ist ein klassischer F-Test (mit F-Verteilung) für mein Zahlenbeispiel ungeeignet (Daten nicht normalverteilt, Annahme der Varianzgleichheit für meine Daten abwegig). Ich mache den klassischen F-Test daher nur, um die Ergebnisse mit meinem Permutations-F-Test zu vergleichen.

R rechnet Varianzanalysen als lineare Regressionsanalysen, für die es die Funktion lm() gibt. Ich erhalte die gewünschten Ergebnisse daher mit folgendem Ansatz:

anova(lm(daten2$Konversion~daten2$Variante))

Weil ich meine Ergebnisse als Tabelle haben möchte, modifiziere ich meine Vorgehensweise:

library(broom)
a <- anova(lm(daten2$Konversion~daten2$Variante))
tabelle <- tidy(a)
write.csv2(tabelle,"clipboard")

Ich habe die Varianzanalyse als a gespeichert, daraus mit der Funktion tidy() eine Tabelle gemacht und diese Tabelle mit der Funktion write.csv2() in die Zwischenablage kopiert. Anschließend habe ich Excel geöffnet, den Inhalt der Zwischenablage an passender Stelle eingefügt und über das Menü Daten / Text in Spalten festgelegt, dass Spalten durch Semikolons getrennt sind. (Wenn ich diese Einstellung unverändert lasse, bleibt sie so lange wirksam, bis ich Excel beende.)

Ich habe in Excel die Zahlen formatiert und daten2$Variante in Variante umbenannt. Anschließend habe ich die Tabelle in meine Word-Datei kopiert.

term df sumsq meansq statistic p.value
Variante 3 1,964 0,655 2,768 0,044
Residuals 136 32,171 0,237 NA NA

Die in den Spalten df, sumsq, meansq und statistic enthaltenen Zahlen stehen im Einklang mit meinen obigen Berechnungen:

  • 3 = k-1
  • 136 = N-k
  • 1,964 = QSA-QSB
  • 32,171 = QSB
  • 0,655 = (QSA-QSB)/(k-1) = 1,964/3
  • 0,237 = QSB/(N-k) = 32,171/136
  • 2,768 = empirischer F-Wert

Das Signifikanzniveau des klassischen F-Tests beträgt 0,044 (Spalte p.value). Dieser Wert ist etwas geringer als beim Permutations-F-Test.

Beide F-Test-Varianten liefern für mein Zahlenbeispiel in etwa das gleiche Signifikanzniveau. Dies ändert nichts daran, dass ein klassischer F-Test (mit F-Verteilung) für meine Daten ungeeignet ist.

Ich hatte in Folge 22 die bei einem A/B-Test für die Testgruppe und die Kontrollgruppe ermittelten durchschnittlichen Konversionsraten mit einem Permutationstest und einem t-Test verglichen. Der t-Test lieferte ein falsches Ergebnis, weil der t-Test für meine Daten ungeeignet war.