Ich bin in Folge 25 für mein Zahlenbeispiel mit einem Permutations-F-Test zu dem Ergebnis gekommen, dass die durchschnittlichen Konversionsraten für mindestens zwei Varianten der Landing-Page signifikant verschieden sind.
Für die insgesamt vier Varianten der Landing-Page hatten sich die folgenden durchschnittlichen Konversionsraten ergeben (siehe Folge 24):
H1T1: 0,77
H1T2: 0,51
H2T1: 0,57
H2T2: 0,46
Ich will jetzt prüfen, welche der vier Mittelwerte sich signifikant unterscheiden. Hierzu muss ich die durchschnittlichen Konversionsraten der vier Varianten paarweise vergleichen, was auf unterschiedliche Weise geht.
Die meiner Ansicht nach sinnvollste Vorgehensweise besteht in einem konservativen Ansatz, bei dem die Anforderungen an ein signifikantes Ergebnis hoch sind, frei nach dem Motto: »Lieber ein signifikantes Ergebnis übersehen als voreilig auf Unterschiede schließen, wo keine sind.« Ein konservativer Ansatz zielt darauf ab, signifikante Ergebnisse gut abzusichern.
Ich beschäftige mich zunächst mit der Frage, warum Verfahren zum Vergleich zweier Mittelwerte für multiple Mittelwertvergleiche nur in modifizierter Form geeignet sind. Danach untersuche ich mein Zahlenbeispiel. Ich mache sechs Mittelwertvergleiche mit Hilfe von Permutationstests und korrigiere die p-Werte mit dem Holm-Verfahren.
Man kann Wahrscheinlichkeiten als relative Häufigkeiten interpretieren. Ich wiederhole zum Beispiel das Zufallsexperiment »Eine Münze werfen« sehr oft und berechne in Form eines Prozentsatzes, wie oft ich das Ergebnis »Zahl« erhalten habe. Bei einer symmetrischen Münze wird »Zahl« in ungefähr 50 Prozent aller Fälle auftreten.
Ich mache dies am Computer mit meiner Statistiksoftware R, zu der die Funktion runif() gehört, die gleichverteilte Zufallszahlen zwischen 0 und 1 liefert. Hierbei deute ich Zufallszahlen < 0,5 als »Zahl« und Zufallszahlen ≥ 0,5 als »Kopf«. Ich wiederhole den Münzwurf nsim Mal und berechne, welchen Anteil das Ergebnis »Zahl« hat.
muenzwurf <- function(nsim) {
zahl <- 0
for (i in 1:nsim) {
if (runif(1)<0.5) zahl <- zahl+1
}
zahl/nsim
}
Ich zeichne jetzt die relative Häufigkeit von »Zahl« in Abhängigkeit von der Anzahl der Münzwürfe nsim. Hierzu variiere ich nsim in 500er-Schritten von 500 bis 50.000.
wuerfe <- seq(500,50000,by=500)
anteil_zahl <- sapply(wuerfe, muenzwurf)
ergebnisse <- data.frame(x=wuerfe, y=anteil_zahl)
library(ggplot2)
svg("emim-26-1.svg", width=4.3, height=3.1, bg="transparent")
ggplot(data=ergebnisse, aes(x=x,y=y)) +
geom_hline(yintercept=0.5, colour="#00DD00") +
geom_line() +
labs(x="nsim",y='Anteil "Zahl"', title="Genauigkeit der Schätzung\nin Abhängigkeit von nsim") +
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()
Der Schätzwert für die Wahrscheinlichkeit von »Zahl« liegt ab nsim=15.000 ziemlich dicht beim korrekten Wert (0,5). Würde ich nsim wesentlich höher ansetzen, zum Beispiel nsim = 200.000 bis 250.000, so wäre meine Schätzung deutlich genauer als in der rechten Hälfte des obigen Diagramms.
Das anhand des Münzwurfs beschriebene Simulationsverfahren ist universell anwendbar. Sie können auf diese Weise auch Wahrscheinlichkeiten schätzen, die sich nicht oder nur sehr schwer berechnen lassen.
Ich verwende das Verfahren jetzt für die hier interessierenden Mittelwertvergleiche.
Als erstes beschäftige ich mich mit dem Vergleich zweier Mittelwerte. Ich bilde hierfür zwei normalverteilte Zufallsvariablen mit gleichem Mittelwert und gleicher Varianz. Für diese Zufallsvariablen erzeuge ich 100.000 Mal jeweils 140 Beobachtungswerte und teste meine Nullhypothese H0 (»Beide Mittelwerte stimmen in der Grundgesamtheit überein«). Weil H0 richtig ist, müsste mein Signifikanzniveau (p-Wert) bei jedem der insgesamt 100.000 Tests größer als 0,5 sein.
nsim <- 100000
fehler <- 0
for (i in 1:nsim) {
NW.1 <- rnorm(140,mean=0.6,sd=0.4)
NW.2 <- rnorm(140,mean=0.6,sd=0.4)
if (t.test(NW.1,NW.2)$p.value <= 0.05)
fehler <- fehler+1
}
fehler/nsim # 0.04909
Wenn ich meine Simulation wiederhole, erhalte ich im Allgemeinen ein etwas anderes Ergebnis als vorher. Alle relativen Häufigkeiten liegen jedoch beim korrekten Wert (0,05).
Mein Signifikanztest führt demnach in ungefähr fünf Prozent der Fälle zu einer Fehleinschätzung (p-Wert ≤ 0,05 und daher H0 als falsch eingestuft).
Ich verwende das Verfahren jetzt für den Vergleich von vier Mittelwerten. Hierzu bilde ich vier normalverteilte Zufallsvariablen mit jeweils 0,6 als Mittelwert und 0,4 als Varianz. Die Nullhypothese H0 »Beide Mittelwerte stimmen in der Grundgesamtheit überein« ist daher für jeden paarweisen Vergleich richtig.
Ich erzeuge jeweils 140 Werte der vier Zufallsvariablen, mache dann alle sechs möglichen paarweisen Mittelwertvergleiche und prüfe, ob mindestens einer dieser Mittelwertvergleiche ein falsches Ergebnis geliefert hat. Finde ich mindestens ein falsches Ergebnis, so erhöhe ich den Wert der Variablen »fehler« um eins. Ich wiederhole diese Vorgehensweise 100.000 Mal und bestimme zum Abschluss den Anteil der fehlerhaften Durchgänge.
nsim <- 100000
fehler <- 0
for (i in 1:nsim) {
NW.1 <- rnorm(140,mean=0.6,sd=0.4)
NW.2 <- rnorm(140,mean=0.6,sd=0.4)
NW.3 <- rnorm(140,mean=0.6,sd=0.4)
NW.4 <- rnorm(140,mean=0.6,sd=0.4)
if (
t.test(NW.1,NW.2)$p.value <= 0.05 |
t.test(NW.1,NW.3)$p.value <= 0.05 |
t.test(NW.1,NW.4)$p.value <= 0.05 |
t.test(NW.2,NW.3)$p.value <= 0.05 |
t.test(NW.2,NW.4)$p.value <= 0.05 |
t.test(NW.3,NW.4)$p.value <= 0.05
)
fehler <- fehler+1
}
fehler/nsim # 0.20071
Die auf diese Weise ermittelte Wahrscheinlichkeit für einen fehlerhaften Test (mindestens einer der sechs p-Werte kleiner oder gleich 0,05) liegt bei 0,20 bis 0,21 und damit etwa viermal so hoch wie meine Irrtumswahrscheinlichkeit bei den einzelnen t-Tests.
Es wäre demnach ungünstig, ein Verfahren für den Vergleich zweier Mittelwerte in unveränderter Form für den Vergleich von vier Mittelwerten zu verwenden. Die Gefahr, Mittelwertdifferenzen zu diagnostizieren wo keine sind wäre viel zu groß.
Ich beschäftige mich jetzt mit meinem Zahlenbeispiel. Hierzu lese ich meine als Excel-Tabelle vorliegenden Daten und erstelle die Spalte für die Gruppeneinteilung (»Variante«).
library(readxl)
daten <- read_excel("0025.xlsx")
library(dplyr)
daten2 <- mutate(daten, Variante=paste(Headline, Beschreibung, sep=""))
Die ersten fünf Zeilen ohne die Kennzahl-Spalte:
Headline | Beschreibung | Konversion | Variante |
---|---|---|---|
H1 | T1 | 0 | H1T1 |
H2 | T1 | 1 | H2T1 |
H1 | T1 | 1 | H1T1 |
H2 | T1 | 1 | H2T1 |
H1 | T1 | 0 | H1T1 |
Ich ermittle für jede Variante die zugehörigen Werte aus der Spalte Konversion:
H1T1 <- filter(daten2, Variante=="H1T1")$Konversion
H1T2 <- filter(daten2, Variante=="H1T2")$Konversion
H2T1 <- filter(daten2, Variante=="H2T1")$Konversion
H2T2 <- filter(daten2, Variante=="H2T2")$Konversion
Ich vergleiche jetzt die Mittelwerte der vier Gruppen, was auf sechs Permutationstests hinausläuft (Einzelheiten dazu finden Sie in Folge 21 und Folge 22):
library(DAAG)
pwerte <- c(
twotPermutation(H1T1, H1T2, nsim=20000),
twotPermutation(H1T1, H2T1, nsim=20000),
twotPermutation(H1T1, H2T2, nsim=20000),
twotPermutation(H1T2, H2T1, nsim=20000),
twotPermutation(H1T2, H2T2, nsim=20000),
twotPermutation(H2T1, H2T2, nsim=20000)
)
Die Ergebnisse:
vergleich | pwerte |
---|---|
H1T1/H1T2 | 0,049 |
H1T1/H2T1 | 0,125 |
H1T1/H2T2 | 0,014 |
H1T2/H2T1 | 0,806 |
H1T2/H2T2 | 0,814 |
H2T1/H2T2 | 0,470 |
Nach meinen Ausführungen im letzten Abschnitt sind die in der Tabelle angegebenen p-Werte für meine Zwecke als Entscheidungskriterium unbrauchbar. Ich muss die p-Werte daher korrigieren.
Die einfachste Möglichkeit besteht im Bonferroni-Verfahren, bei dem ich die p-Werte mit der Anzahl der paarweisen Vergleiche multipliziere. Für mein Zahlenbeispiel muss ich daher jeden p-Wert mit sechs multiplizieren und jedes den Wert eins überschreitende Ergebnis gleich eins setzen (Wahrscheinlichkeiten sind maximal gleich eins).
Mit dem Bonferroni-Verfahren stellen Sie sicher, dass die Wahrscheinlichkeit, bei den sechs paarweisen Vergleichen eine richtige Nullhypothese H0 abzulehnen nicht größer ist als die vorgegebene Irrtumswahrscheinlichkeit (0,05).
Das Holm-Verfahren ist eine Verbesserung des Bonferroni-Verfahrens. Beim Holm-Verfahren wird wie folgt gerechnet:
Ich erhalte die modifizierten p-Werte mit der Funktion p.adjust():
p.adjust(pwerte,"bonferroni")
p.adjust(pwerte, "holm")
Die Ergebnisse:
vergleich | pwerte | bonferroni | holm |
---|---|---|---|
H1T1/H1T2 | 0,049 | 0,296 | 0,247 |
H1T1/H2T1 | 0,125 | 0,750 | 0,500 |
H1T1/H2T2 | 0,014 | 0,084 | 0,084 |
H1T2/H2T1 | 0,806 | 1,000 | 1,000 |
H1T2/H2T2 | 0,814 | 1,000 | 1,000 |
H2T1/H2T2 | 0,470 | 1,000 | 1,000 |
Alle mit dem Holm-Verfahren korrigierten p-Werte sind größer als 0,05. Signifikante Unterschiede zwischen den vier Gruppenmittelwerten (den vier durchschnittlichen Konversionsraten) sind demnach nicht erkennbar.
Nach meinem Permutations-F-Test aus Folge 25 unterscheiden sich mindestens zwei der insgesamt vier Mittelwerte signifikant. Meine paarweisen Mittelwertvergleiche widerlegen diese Einschätzung nicht. Das Holm-Verfahren, eine konservative Vorgehensweise, läuft darauf hinaus, signifikante Mittelwertdifferenzen im Zweifelsfall zu verneinen.
Ein möglicher Ausweg besteht darin, die Fragestellung auf andere Weise zu untersuchen.
Das liberale Propaganda-Handbuch, Taschenbuch, 382 Seiten
Einführung in die Statistik-Software R Commander
Business Cases für den Verkauf
Fachliteratur suchen mit Google Scholar, WorldCat etc. pp.
Ghostwriter für Dissertationen, Bachelor- und Masterarbeiten
Wissenschaftliches Ghostwriting
Content-Marketing mit White Papers für Start-up-Unternehmen im B2B-Geschäft
1. White Papers als Werbemittel
2. Fallstudien im Sinne von White Papers
Warum White Papers im B2B-Geschäft häufig wirkungsvoller sind als klassische Werbung
Lead-Management im B2B-Geschäft - warum und wie?
White Papers erstellen - von der Themenwahl bis zum Layout