A / B-Testverhältnis der Summen

7

 Kontext

Stellen Sie sich das folgende Szenario für ein Unternehmen vor, das Waren online verkauft. Ein Benutzer kann mehrere Artikel (dh einen Warenkorb mit Artikeln) kaufen, von denen einige von besonderer Bedeutung sind und speziell verfolgt werden (nennen wir sie Sternartikel).

Wir möchten eine Änderung in einem Algorithmus testen (z. B. Empfehlung, Risikobewertung, Targeting hinzufügen, was auch immer ...), die sowohl die Anzahl der verkauften Sternartikel als auch den Gesamtumsatz beeinflussen kann .

  • Dies ist ein Standard-A / B-Testaufbau - die Randomisierungseinheit befindet sich auf Benutzerebene .
  • Der Zweck des A / B-Tests besteht darin, die Auswirkungen der Algorithmusänderung zu vergleichen: Die Kontrollgruppe verfügt über den ursprünglichen Algorithmus und die Variante über den neuen Algorithmus
  • Eine wichtige Metrik von Interesse ist das Verhältnis des Umsatzes mit Sternartikeln zum Gesamtumsatz . Dies ist eine Summe aller Transaktionen aller Benutzer im Bereich jeder A- oder B-Gruppe.
  • Dies bedeutet, dass sich die Analyseeinheit auf Transaktionsebene befindet, die sich von der Randomisierungseinheit unterscheidet
  • Die Metriken werden über die gesamte Testdauer (z. B. 2 Wochen) berechnet.

Detail der verwendeten Metrik

Bei gegebener Gruppe A und einer Gruppe von Benutzern ist jeder Benutzer an einer Anzahl von Transaktionen beteiligt. Die Menge aller Transaktionen aller Benutzer in Gruppe A für die Dauer des Tests ist .U.EIN={u1,u2,...,uN.EIN}}tunT.EINT.EIN={tu11,tu12,...tunm}}

Die interessierende Metrik für Gruppe A wird für alle Transaktionen im Bereich von Gruppe A definiert. Die Beträge befinden sich auf Transaktionsebene und nicht auf Benutzerebene.

MetrischEIN=tichT.EINVerkaufsstern Artikel $tichT.EINDer Umsatz $

Natürlich könnten wir die Definition ändern, um den Mittelwert auf Benutzerebene zu berechnen, und das würde alles vereinfachen, aber das ist nicht die Metrik, die verwendet wird.

Fragen

Welcher statistische Test könnte für eine solche Metrik verwendet werden? Eine zusätzliche Überlegung ist, dass, obwohl wir sicher davon ausgehen können, dass Benutzer iid sind, es höchstwahrscheinlich falsch ist anzunehmen, dass einzelne Einkaufskörbe für denselben Benutzer iid sind.

Hier sind einige Ideen, auf die ich gestoßen bin. Haben A / B-Testpraktiker in der Vergangenheit ähnliche Kennzahlen gefunden?

  • Z-Test der Proportionen
  • Bootstrapping und Jacknife
  • Delta-Methode
  • Ändern Sie die Metrik (letzter Ausweg)

https://en.wikipedia.org/wiki/Ratio_estimator

Bearbeiten - Einige Erläuterungen

Der Grund für diese Frage ist, dass ich oft gesehen habe, wie der Z-Test der Proportionen in dieser Situation verwendet wird. Beliebte Tools, die für A / B-Tests verwendet werden, werden beim Proportional-Test häufig standardmäßig verwendet, und Geschäftsbenutzer überprüfen selten die zugrunde liegenden Annahmen, die für die Gültigkeit des Tests erforderlich sind. Die Antwort von @ dnqxt unten ist ein gutes Beispiel: "Verwenden Sie einfach den z-Test der Proportionen!" - aber ich würde gerne eine strenge statistische Begründung dafür sehen, warum (oder warum nicht) dieser Test in einem solchen Fall verwendet werden kann.

Ich persönlich glaube nicht, dass die Verwendung eines Z-Tests mit Proportionen hier funktionieren würde, da Verkäufe von einem Kaufereignis keine Bernoulli-Versuche sind. Ich behaupte, dass wir nicht sagen können, dass jeder im Nenner verkaufte Dollar als Bernoulli-Versuch angesehen werden kann, der dazu führt, dass im Zähler ein Dollar mit 0 oder 1 Stern verkauft wird. Da sich die Randomisierungseinheit auf Benutzerebene befindet, sind Kaufereignisse desselben Benutzers nicht unabhängig (aber ich würde sagen, dass dies ein sekundäres Problem ist). Ich könnte mich hier irren, also zögern Sie nicht, dies anders zu beweisen!

Wir könnten die Metrik auch ändern, um daraus ein Bernoulli / Binomial zu machen, das durch Verwendung von Zählwerten gegen Normal konvergiert, aber das wäre ein letzter Ausweg

#sales with star items#sales

Xavier Bourret Sicotte
quelle
Wenn die Metrik einer Normalverteilung folgt, können Sie möglicherweise eine lineare Regression oder UniANOVA verwenden. Wenn die Metrik keiner Normalverteilung folgt, können Sie eine Transformation versuchen, die der in der logistischen Regression verwendeten ähnelt: , obwohl es Probleme geben kann, wenn die Metrik oder ist . x=log(metric/(1metric))01
Ertxiem - stellen Sie Monica
1
Nur um etwas zu beachten: Verkäufe sind normalerweise sehr nicht normal. Dies müssten Sie bei der Präsentation Ihrer Daten unbedingt berücksichtigen. Warum nicht eine Beta-Regression für aggregierte Daten auf Benutzerebene verwenden? Die Analyse könnte direkt mit verfügbaren demografischen Informationen und / oder bei vorhandenen Benutzern mit zusätzlichen Informationen zum bereits vorhandenen Benutzerverhalten geschichtet werden. (zB wissen wir mit guter Sicherheit, wo ein Benutzer wohnt, da wir Lieferinformationen und / oder Rechnungsinformationen haben.)
usεr11852
In der Tat gibt es keinen Grund zu der Annahme, dass die Verkäufe normal verteilt sind. Wenn Sie die Verkäufe durch die Anzahl der Benutzer (dh den durchschnittlichen Umsatz pro Benutzer) dividieren, erhalten Sie eine normalverteilte Statistik angesichts der Anzahl der Benutzer im Umfang. Nehmen Sie vielleicht das Protokoll und führen Sie dann einen Test im protokolltransformierten Bereich durch?
Xavier Bourret Sicotte
1
In diesem Fall ist dies eine ausgezeichnete Frage. (+1)
usεr11852
1
Warum analysieren Sie eine abgeleitete (eindimensionale und aggregierte) Statistik, anstatt zu versuchen, die Daten und Rohbeobachtungen direkter zu analysieren (und dann auf der Grundlage dieser Analyse Schlussfolgerungen über die abgeleitete Statistik zu ziehen)? (Dieses Verhältnis von zwei Summen hat ungefähr eine unangenehme Cauchy-Verteilung: dh das Verhältnis von zwei Summen vieler kleiner Einkäufe, bei denen beide Summen ungefähr eine multivariate normalverteilte Variable sind.) Was möchten Sie vorhersagen? Was ist das Ziel? Was sind die Rohdaten, die Sie haben?
Sextus Empiricus

Antworten:

3
  • Z-Test der Proportionen

    Dies gilt für einen anderen Fall, wenn Sie binäre Ergebnisse haben. Der Z-Test der Proportionen vergleicht die Proportionen dieser binären Ergebnisse.

    (Im Folgenden wird argumentiert, dass Sie einen t-Test durchführen können, der für große Zahlen ungefähr dem z-Test entspricht. Mit Proportionen können Sie einen z-Test durchführen, da die Binomialverteilung einen Parameter hat, der den bestimmt Varianz und Mittelwert im Gegensatz zu einer Normalverteilung)

  • Bootstrapping

    Dies ist möglich, aber aufgrund der Delta-Methode, die den Fehler Ihrer beobachteten Statistik einfacher liefert, nicht unbedingt erforderlich.

  • Delta-Methode

    Sie interessieren sich für das Verhältnis zweier möglicherweise korrelierter Variablen: 1. des Gesamtumsatzes und 2. des Umsatzes mit Sternartikeln.

    Diese Variablen sind wahrscheinlich asymptotisch normalverteilt, da sie die Summe der Verkäufe vieler Einzelpersonen darstellen (das Testverfahren könnte als ein Prozess angesehen werden, bei dem eine Stichprobe von Verkäufen einzelner Benutzer aus einer Verteilung der Verkäufe einzelner Benutzer ausgewählt wird). Somit können Sie die Delta-Methode verwenden.

    Die Verwendung der Delta-Methode zur Schätzung von Verhältnissen wird hier beschrieben . Das Ergebnis dieser Anwendung der Delta-Methode stimmt tatsächlich mit einer Annäherung an Hinkleys Ergebnis überein , einem exakten Ausdruck für das Verhältnis zweier korrelierter normalverteilter Variablen (Hinkley DV, 1969, On the Ratio of Two Correlated Normal Random Variables, Biometrica Vol. 56) Nr. 3).

    Zum Z=XY mit

    [XY]N([μxμy],[σx2ρσxσyρσxσyσy2])
    Das genaue Ergebnis ist:
    f(z)=b(z)d(z)a(z)312πσXσY[Φ(b(z)1ρ2a(z))Φ(b(z)1ρ2a(z))]+1ρ2πσXσYa(z)2exp(c2(1ρ2))
    mit
    a(z)=(z2σX22ρzσXσY+1σY2)12b(z)=μXzσX2ρ(μX+μYz)σXσY+μYσY2c=μX2σY22ρμXμY+σXσY+μY2σY2d(z)=exp(b(z)2ca(z)22(1ρ2)a(z)2)
    Und eine Annäherung, die auf einem assymptotischen Verhalten basiert, ist: (z θY/σY):
    F(z)Φ(zμX/μYσXσYa(z)/μY)
    Sie erhalten das Ergebnis der Delta-Methode, wenn Sie die Näherung einfügen a(z)=a(μX/μY)
    a(z)σXσY/μYa(μX/μY)σXσY/μY=(μX2σY2μY42μXσXσYμY3+σX2μY2)12

    Die Werte für μX,μY,σX,σY,ρ kann aus Ihren Beobachtungen geschätzt werden, die es Ihnen ermöglichen, die Varianz und den Mittelwert der Verteilung für einzelne Benutzer zu schätzen und damit die Varianz und den Mittelwert für die Stichprobenverteilung der Summe mehrerer Benutzer zu bestimmen.

  • Ändern Sie die Metrik

    Ich glaube, dass es interessant ist, zumindest eine erste Darstellung der Verteilung der Verkäufe (nicht der Verhältnisse) der einzelnen Benutzer zu machen. Schließlich könnte man mit einer Situation am Ende , dass es ist ein Unterschied zwischen den Benutzern in der Gruppe A und B, aber es passiert einfach nicht signifikant sein , wenn Sie die einzige Variable des Verhältnisses betrachten (das ist ein bisschen ähnlich ist MANOVA mächtiger zu sein als einzelne ANOVA-Tests).

    Während die Kenntnis einer Differenz zwischen den Gruppen, ohne einen signifikanten Unterschied in der Metrik , dass Sie in interressiert sind, können Sie nicht viel helfen , Entscheidungen zu treffen, es tut Ihnen helfen, in die zugrunde liegende Theorie zu verstehen und möglicherweise bessere Änderungen / Experimente beim nächsten Mal entwerfen.


Illustration

Unten ist eine einfache Illustration:

Lassen Sie die hypothetische Verteilung der Verkäufe von Benutzern als Bruchteile verteilt werden a,b,c,d die angeben, wie viele Benutzer sich in einem bestimmten Fall befinden (in Wirklichkeit wird diese Verteilung komplexer sein):

                           star item sales
                         0$              40$ 

other item sales  0$      a               b
                 10$      c               d

Dann die Stichprobenverteilung für Summen aus einer Gruppe mit 10000 Benutzern mit einem Algorithmus

ein=0,190,b=0,001,c=0,800,d=0,009
und der andere Algorithmus
ein=0,170,b=0,001,c=0,820,d=0,009
wird aussehen wie:

Beispiel

Das zeigt 10000 Läufe, die neue Benutzer anziehen und die Verkäufe und Verhältnisse berechnen. Das Histogramm dient zur Verteilung der Verhältnisse. Die Linien sind Berechnungen mit der Funktion von Hinkley.

  • Sie können sehen, dass die Verteilung der beiden Gesamtverkaufszahlen ungefähr eine multivariate Normalität ist. Die Isolinien für das Verhältnis zeigen, dass Sie das Verhältnis sehr gut als lineare Summe schätzen können (wie bei der zuvor erwähnten / verknüpften linearisierten Delta-Methode) und dass eine Approximation durch eine Gaußsche Verteilung gut funktionieren sollte (und dann können Sie ein t- verwenden) Test, der für große Zahlen wie ein Z-Test ist).
  • Sie können auch sehen, dass ein Streudiagramm wie dieses Ihnen im Vergleich zur Verwendung nur des Histogramms möglicherweise mehr Informationen und Einblicke bietet.

R-Code zur Berechnung des Graphen:

set.seed(1)
#
# 
# function to sampling hypothetic n users 
# which will buy star items and/or regular items
#
#                                star item sales
#                             0$              40$ 
#  
#  regular item sales  0$      a               b
#                     10$      c               d
#
#
sample_users <- function(n,a,b,c,d) {
  # sampling 
  q <- sample(1:4, n, replace=TRUE, prob=c(a,b,c,d))
  # total dolar value of items
  dri = (sum(q==3)+sum(q==4))*10
  dsi = (sum(q==2)+sum(q==4))*40
  # output
  list(dri=dri,dsi=dsi,dti=dri+dsi, q=q)
}


# 
# function for drawing those blocks for the tilted histogram
#
block <- function(phi=0.045+0.001/2, r=100, col=1) {
  if (col == 1) {
    bgs <- rgb(0,0,1,1/4)
    cols <- rgb(0,0,1,1/4)
  } else {
    bgs <- rgb(1,0,0,1/4)
    cols <- rgb(1,0,0,1/4)
  }
  angle <- c(atan(phi+0.001/2),atan(phi+0.001/2),atan(phi-0.001/2),atan(phi-0.001/2))
  rr <- c(90000,90000+r,90000+r,90000)
  x <- cos(angle)*rr
  y <- sin(angle)*rr
  polygon(x,y,col=cols,bg=bgs)
}
block <- Vectorize(block)


#
# function to compute Hinkley's density formula
#
fw <- function(w,mu1,mu2,sig1,sig2,rho) {
  #several parameters
  aw <- sqrt(w^2/sig1^2 - 2*rho*w/(sig1*sig2) + 1/sig2^2)
  bw <- w*mu1/sig1^2 - rho*(mu1+mu2*w)/(sig1*sig2)+ mu2/sig2^2
  c <- mu1^2/sig1^2 - 2 * rho * mu1 * mu2 / (sig1*sig2) + mu2^2/sig2^2
  dw <- exp((bw^2 - c*aw^2)/(2*(1-rho^2)*aw^2))

  # output from Hinkley's density formula
  out <- (bw*dw / ( sqrt(2*pi) * sig1 * sig2 * aw^3)) * (pnorm(bw/aw/sqrt(1-rho^2),0,1) - pnorm(-bw/aw/sqrt(1-rho^2),0,1)) + 
    sqrt(1-rho^2)/(pi*sig1*sig2*aw^2) * exp(-c/(2*(1-rho^2)))

  out
}
fw <- Vectorize(fw)

#
# function to compute
# theoretic distribution for sample with parameters (a,b,c,d)
# lazy way to compute the mean and variance of the theoretic distribution
fwusers <- function(na,nb,nc,nd,n=10000) {
  users <- c(rep(1,na),rep(2,nb),rep(3,nc),rep(4,nd))
  dsi <- c(0,40,0,40)[users]
  dri <- c(0,0,10,10)[users]
  dti <- dsi+dri

  sig1 <- sqrt(var(dsi))*sqrt(n)
  sig2 <- sqrt(var(dti))*sqrt(n)
  cor <- cor(dti,dsi)
  mu1 <- mean(dsi)*n
  mu2 <- mean(dti)*n

  w <- seq(0,1,0.001)
  f <- fw(w,mu1,mu2,sig1,sig2,cor)
  list(w=w,f=f,sig1 = sig1, sig2=sig2, cor = cor, mu1= mu1, mu2 = mu2)
}


# sample many ntr time to display sample distribution of experiment outcome
ntr <- 10^4

# sample A
dsi1 <- rep(0,ntr)
dti1 <- rep(0,ntr)
for (i in 1:ntr) {
  users <- sample_users(10000,0.19,0.001,0.8,0.009)
  dsi1[i] <- users$dsi
  dti1[i] <- users$dti
}

# sample B
dsi2 <- rep(0,ntr)
dti2 <- rep(0,ntr)
for (i in 1:ntr) {
  users <- sample_users(10000,0.19-0.02,0.001,0.8+0.02,0.009)
  dsi2[i] <- users$dsi
  dti2[i] <- users$dti
}


# hiostograms for ratio
ratio1 <- dsi1/dti1
ratio2 <- dsi2/dti2
h1<-hist(ratio1, breaks = seq(0, round(max(ratio2+0.04),2), 0.001))
h2<-hist(ratio2, breaks = seq(0, round(max(ratio2+0.04),2), 0.001))

# plotting

plot(0, 0, 
     xlab = "sum of total sales", ylab = "sum of star item sales",
     xlim = c(82000,92000),
     ylim = c(2500,6000), 
     pch=21, col = rgb(0,0,1,1/10), bg = rgb(0,0,1,1/10))
title("sample distribution for sum of 10 000 users")

# isolines
brks <- seq(0, round(max(ratio2+0.02),2), 0.001)
for (ls in 1:length(brks)) {
  col=rgb(0,0,0,0.25+0.25*(ls%%5==1))
  lines(c(0,10000000),c(0,10000000)*brks[ls],lty=2,col=col)
}

# scatter points
points(dti1, dsi1,
       pch=21, col = rgb(0,0,1,1/10), bg = rgb(0,0,1,1/10))
points(dti2, dsi2,
       pch=21, col = rgb(1,0,0,1/10), bg = rgb(1,0,0,1/10))

# diagonal axis
phi <- atan(h1$breaks)
r <- 90000
lines(cos(phi)*r,sin(phi)*r,col=1)

# histograms
phi <- h1$mids
r <- h1$density*10
block(phi,r,col=1)

phi <- h2$mids
r <- h2$density*10
block(phi,r,col=2)

# labels for histogram axis
phi <- atan(h1$breaks)[1+10*c(1:7)]
r <- 90000
text(cos(phi)*r-130,sin(phi)*r,h1$breaks[1+10*c(1:7)],srt=-87.5,cex=0.9)
text(cos(atan(0.045))*r-400,sin(atan(0.045))*r,"ratio of sum of star items and sum of total items", srt=-87.5,cex=0.9)

# plotting functions for Hinkley densities using variance and means estimated from theoretic samples distribution
wf1 <- fwusers(190,1,800,9,10000)
wf2 <- fwusers(170,1,820,9,10000)
rf1 <- 90000+10*wf1$f
phi1 <- atan(wf1$w)
lines(cos(phi1)*rf1,sin(phi1)*rf1,col=4)
rf2 <- 90000+10*wf2$f
phi2 <- atan(wf2$w)
lines(cos(phi2)*rf2,sin(phi2)*rf2,col=2)
Sextus Empiricus
quelle
Fantastische Antwort Martijn, wie immer. Um es noch einmal zusammenzufassen: Sobald ich die Delta-Methoden-Näherung oder das genauere Hinkley-Ergebnis, das die Korrelation enthält, verwende, erhalte ich ein neues RV, das asymptotisch normal ist. Kann ich dann einen Standard-Z-Test der Mittelwertdifferenz auf diesem neuen Wohnmobil für Steuerung und Variante durchführen? dh H0 haben sowohl Kontrolle als auch Variante den gleichen Mittelwert oder Mittelwert = 0? Ich habe noch nie ein Beispiel für die Verwendung der Delta-Methode für einen Test der Mittelwertdifferenz gesehen ... haben Sie ein Beispiel?
Xavier Bourret Sicotte
Die Delta-Methode umfasst auch die Korrelation. Hinkley ist nur genauer, aber der Unterschied ist nicht so wichtig, wenn die Varianz Ihrer Variablen gering ist. Das könntest du sagen
x/yμx/μy(xμx)1μy+(yμy)μxμy2
dh Sie approximieren den Verhältnisfehler durch eine lineare Summe, für die die Varianz leicht berechnet werden kann (auch mit Korrelation). Wenn sich die Verteilung über einen größeren Bereich ausbreitet, sind diese Isolinien nicht mehr annähernd äquidistant und parallel, dann wird der Unterschied zwischen der Delta-Methode und der Hinkley-Formel größer.
Sextus Empiricus
Lasst uns diese Diskussion im Chat fortsetzen? chat.stackexchange.com/rooms/91683/ab-test-ratio-of-sums danke!
Xavier Bourret Sicotte
(+1) Nur ein Kommentar: Haben Sie überprüft, was passiert, wenn die zugrunde liegende Verteilung der Metrik nicht normal ist, sondern einen Fettschwanz aufweist (z. B. logarithmisch normal)? Insofern hat die Verteilung des Verhältnisses, wenn man dies schnell sieht, niemals Werte von1(oder in der Nähe davon), während es "sicher" ist, dass einige Leute nur einen (oder zwei) markierte Artikel als Ganzes kaufen. Um Hole (2007) zu zitieren: " Die Delta-Methode ist am genauesten, wenn die Daten gut konditioniert sind, während der Bootstrap gegenüber verrauschten Daten und Fehlspezifikationen des Modells robuster ist. "
usεr11852
2
@ usεr11852 Die Verteilung der Verkäufe von einzelnen Benutzern muss nicht normal sein. Wie in dem Beispiel, in dem es sich um eine Art multivariate Bernoulli-Verteilung handelt. Was Sie brauchen, ist, dass die Stichprobenverteilung der Verkaufssumme der Benutzer (ungefähr) normal sein muss. Dies ist der Fall, wenn die Verteilung für einzelne Benutzer endliche Momente hat (dann verschwinden sie für die Summe). Sie verschwinden in der Tat schneller, wenn Sie keine sehr hohen Schräglauf- oder Fettschwänze haben und eine ausreichende Stichprobengröße benötigen (dies gilt jedoch auch für das Bootstrapping).
Sextus Empiricus
5

Was beschrieben wird, ist ein klassischer Fall eines A / B-Experiments, bei dem wir eine Abhängigkeit zwischen Benutzern und Gegenständen haben (Käufe hier); Wir müssen dies berücksichtigen, da wir sonst eine voreingenommene Schätzung der zugehörigen Varianz haben. Um dem entgegenzuwirken, booten wir entweder unter Berücksichtigung von Benutzer- / Elementclustern oder gehen mit einem gemischten Modell vollständig parametrisch vor. Das Papier von Bakshy & Eckles (2013) Unsicherheit in Online-Experimenten mit abhängigen Daten: Eine Bewertung von Bootstrap-Methoden ist eine unschätzbare Referenz in dieser Angelegenheit, die sich auf Online-A / B-Tests konzentriert.

Bei näherer Betrachtung der Dinge ist das B & E-Papier in gewisser Weise ein erweiterter Anwendungsfall des Papiers The Pigeonhole Bootstrap von Owen (2007) . In ähnlicher Weise basiert der Ansatz mit gemischten Effekten auf dem überklassischen Artikel von Bayeen et al. (2009) Modellierung mit gemischten Effekten mit gekreuzten Zufallseffekten für Subjekte und Gegenstände .

Um die von Ihnen erwähnten Methoden kurz zu kommentieren: Wenn Sie die richtig identifizieren z-Test auf Proportionen ist zu einfach; Es wird von IID ausgegangen, und wie das B & E-Papier zeigt, kann diese Annahme ernsthaft irreführend sein. Die gleiche Einschränkung gilt auch für Bootstrap, wenn wir die Struktur der Daten ignorieren. Die Delta - Methode in Bezug auf : Abweichungen von der Normalität und / oder verrauschten Daten machen in der Regel die Delta - Methode suboptimal im Vergleich zu Bootstrap - Ansätze (zB Loch 2007 Ein Vergleich der Ansätze zur Abschätzung Konfidenzintervall für Zahlungsbereitschaft Maßnahmen ) , aber ich habe einige neuere Arbeiten gesehen ( zB Deng et al. 2017 Vertrauenswürdige Analyse von Online-A / B-Tests: Fallstricke, Herausforderungen und Lösungen und Deng et al. 2018 Anwendung der Delta-Methode in Metric Analytics: Ein praktischer Leitfaden mit neuartigen Ideen) die vielversprechend erscheinen; Beachten Sie, dass implizit davon ausgegangen wird, dass der durchschnittliche Behandlungseffekt normal ist. Schließlich ist die Änderung der Metrik auch eine ausgezeichnete Idee, wenn dies sinnvoll ist. Wir sollten keine Angst haben, auf Änderungen zu drängen, die mathematisch kohärenter sind, nur weil bereits eine Metrik vorhanden ist.

Fazit: Wenn es bei allen oben genannten Arbeiten ein übergreifendes Schema gibt, müssen wir sicherstellen, dass unsere Analyseeinheit und unsere Randomisierungseinheit mit unseren Forschungsfragen übereinstimmen.

usεr11852
quelle
+1 fantastische Antwort vielen Dank - würden Sie argumentieren, dass der Z-Proportionstest in diesem Fall funktionieren würde, wenn die IID-Annahmen eingehalten würden? Wie würden Sie zeigen, dass dies eine Summe von Bernoulli-Wohnmobilen ist?
Xavier Bourret Sicotte
Ich bin froh, dass ich helfen konnte. Ich würde nicht verwendenz-Proportions-Test in einer A / B-Testeinstellung, da ich denke, dass IID-Annahmen realistisch unmöglich sind. Die Forschung boomt (wie Sie sehen können), es handelt sich also um mehrere bessere Alternativen!
usεr11852
Ich verfolge Ihre Antwort - tatsächlich sind die iid-Annahmen für Kaufereignisse desselben Benutzers stark. Aber grundlegender - wie könnten wir die Verwendung des Proportionstests für eine solche Metrik rechtfertigen - würde dies nicht erfordern, dass jedes Ereignis ein 0-1-Bernoulli-Versuch ist? Dazu müsste jeder Umsatzdollar als eigenständiges Ereignis betrachtet werden.
Xavier Bourret Sicotte
Ja, aber das ist eindeutig eine sehr starke Annahme / umständliche Vereinfachung. Abgesehen davon untersuchen A / B-Tests häufig binäre Ergebnisse (z. B. aufgewühlt / nicht aufgewühlt), sodass die Verwendung von Proportionen-Tests angemessen sein kann. Der Einfachheit halber kann man manchmal einen Test für kontinuierliche Ergebnisse mit diskreten Daten verwenden (oder umgekehrt), und die Ergebnisse sind möglicherweise nicht völlig irreführend. Wie Sie richtig bemerken, klingen sie dadurch nicht.
usεr11852
2

Ein sehr einfacher Ansatz wäre die Verwendung eines Permutationstests. Dies ist ein verteilungsfreier Test, sodass Sie sich keine Gedanken über Verteilungen machen müssen.

Die Idee ist einfach. Sie mischen die Beschriftungen nach dem Zufallsprinzip und zählen, wie oft die gemessene Differenz Ihrer interessierenden Metrik größer ist als die Differenz, die Sie von Ihren realen Daten erhalten haben. Das Verhältnis, das Sie erhalten, ist Ihr p-Wert.

Warum funktioniert es? Nun, wenn die Nullhypothese wahr ist, würde ein zufälliges Mischen der Etiketten (dh in Gruppe A oder B) sehr oft bessere Werte ergeben als die, die Sie gemessen haben. Wenn Ihr Empfehlungsalgorithmus jedoch funktioniert, führt ein zufälliges Mischen selten zu einem besseren Ergebnis als das, das Sie erhalten haben.

Sie können auch Bootstrapping verwenden, um Konfidenzintervalle für Ihre Metrik Ihrer A- und B-Gruppe abzurufen. Dies, zwei, ist ohne Annahmen über Ihre Verteilung zulässig. Dies entspricht nicht einem statistischen Test (auch wenn sich die CI-Intervalle nicht kreuzen), aber der visuelle Aspekt von "Balken + Fehler" -Balken kann für Ihr Team interessant sein.

Ich habe eine sehr ähnliche Frage beantwortet (wo Sie mich tatsächlich gefunden haben). Wie kann man den Unterschied in zwei Proportionen testen, wenn die Ergebnisse nicht binär sind?. Ich denke, der Code, den ich dort vorgeschlagen habe, gilt auch hier.

p1 <- sum(sales_data[target_control==1,"final_value"])/sum(sales_data[target_control==1,"initial_value"])
p2 <- sum(sales_data[target_control==0,"final_value"])/sum(sales_data[target_control==0,"initial_value"])
yourGap<-abs(p1-p2)
L<-sales_data["target_control"]==1
LfilterOnlyBuyers<-sales_data["sale_success"]==1

count=0
for ( i in 1:10000) {
  Lperm=sample(L)
  p1_perm <- sum(sales_data[Lperm,"final_value"])/sum(sales_data[Lperm & LfilterOnlyBuyers,"initial_value"])
  p2_perm <- sum(sales_data[!Lperm,"final_value"])/sum(sales_data[!Lperm & LfilterOnlyBuyers,"initial_value"])
  if (abs(p1_perm-p2_perm)>=yourGap) {
    count=count+1
  }
}
pvalue=count/10000
brumar
quelle
Ich denke, dass die Verwendung eines einfachen Permutationstestansatzes wie dem von Ihnen beschriebenen IID-Messungen erfordert. Von meinem Verständnis des Problems, bedeutet dies nicht halten und somit eine (Vanille) Permutationstest führen anti -conservative Tests. Da es eine benutzerbezogene (und wahrscheinlich auch eine Artikel-) Clusterbildung gibt, kann die IID-Annahme zu einer Unterschätzung der Varianz führen, da die Variation des einzelnen Behandlungseffekts groß ist. Weitere Einzelheiten finden Sie in einigen Referenzen (B & E 2013 oder D et al. 2017) in meiner Antwort. (Sie befassen sich mit Bootstrap durch die allgemeine
Ideenübertragung
Danke für diesen Kommentar. Ich bin mir über dieses Problem nicht ganz sicher. Wenn ich nicht falsch verstanden habe, kann das Problem mit der von ihm vorgeschlagenen Metrik vom Benutzer auf einen einzigen Wert reduziert werden, wodurch das iid-Problem gelöst wird.
Brumar
Das ist leider nicht der Fall. Das OP erwähnt es mindestens zweimal: einmal " ... wir könnten die Definition ändern, um den Mittelwert auf Benutzerebene zu berechnen ... " (dh dies ist keine Benutzerebene) und später, wenn gesagt wird: " Kaufereignisse desselben Benutzers sind nicht unabhängig ". Das Zulassen der Kaufereignisetiketten ist daher inkohärent, da sie nicht IID sind. (Welches ist der Punkt der Papiere, die ich zitiere. :))
usεr11852
Aha. Dies macht diese Antwort ziemlich irrelevant und wenn ich keinen nützlichen Dreh finde, denke ich darüber nach, sie zu löschen. Ich habe mich in den letzten zwei Jahren von Statistiken distanziert, aber diese Artikel, auf die Sie verweisen, klingen interessant. Auf jeden Fall auf meiner Leseliste, falls ich wieder Interesse auf dem Gebiet finde.
Brumar
1
Vielen Dank für Ihre Antworten - wie wäre es mit Bootstrapping oder Permutieren auf Benutzerebene - dh sicherstellen, dass für jede Permutation alle oder keine Verkäufe für einen bestimmten Benutzer enthalten sind. Dies könnte dazu beitragen, die Probleme der Unabhängigkeit unter die Benutzerebene zu reduzieren. Würde das besser funktionieren?
Xavier Bourret Sicotte
1

Bootstrap-Konfidenzintervalle wären meine Wahl der Technik für dieses Szenario. Ich möchte einen Ansatz mit einigen Beispielauswahlnummern , die Sie verwenden können, und den Gründen für den Ansatz skizzieren :

  1. Sie haben zwei Töpfe / Beutel und jeder Beutel enthält Personen aus der Kontrollgruppe und der Variantengruppe: Uctr und Uvar mit entsprechenden Größen Nctr und Nvar. Ich habe deine Notation leicht geändert, ich hoffe das ist OK.
  2. Sie wählen eine zufällige Stichprobe von kMenschen aus beiden Gruppen mit Ersatz. Wenn Ihre beiden Populationen "ausreichend groß" sind (z. B. mindestens 2000 Benutzer), können Sie auswählenkNctr und kNvar. Faustregel: Ich wähle normalerweisek=min(Nctr,Nvar)5Für flexiblere Ergebnisse, jedoch bei den meisten Bagging-Algorithmen (Bootstrap-Aggregation), wird standardmäßig eine Stichprobe aus der gesamten Grundgesamtheit erstellt. Wenn Ihre Populationen kleiner sind, können Sie dies trotzdem tun, aber stellen Sie sicher, dass Sie eine "ausreichend große" auswählen.k(sagen wir mindestens 400 Benutzer), erneut durch Probenahme mit Ersatz. Sagen wir, notieren Sie sieSUctr und SUvar beide von Größe k
  3. Sie berechnen Ihre Metrik, indem Sie alle Transaktionen abrufen, die jede Person in jeder Gruppe durch Betrachten des Originals getätigt hat T Transaktionsdatensatz für jeden Benutzer in SUctr und SUvar. Sie werden dann mit endenMetricctr1 und Metricctr2. Speichern Sie diese Werte. Wichtiger Hinweis: Sie sollten diese Werte berechnen, indem Sie den Gesamtumsatz mit Sternartikeln summieren und durch den Gesamtumsatz dividieren. Nehmen Sie nicht den Durchschnitt des individuellen Verkaufskorbs jeder Person. Dies ist sehr wichtig, da dies die Metrik ist, die Sie betrachten.
  4. Gehen Sie zurück zu Punkt 2 und wiederholen Sie den Vorgang. Die optimale Anzahl von Bootstrap-Beispielen,B, dass Sie wählen können, hängt von vielen Faktoren ab, aber auch hier wäre eine gute Faustregel etwa 1000-mal.
  5. Sie haben jetzt eine B Menge von Metricctr und das gleiche für Metricvar. Sie können jetzt ihre Mittelwerte mit vielen der üblichen Techniken vergleichen. Ich persönlich würde mich dafür entscheiden, Konfidenzintervalle zu konstruieren und zu prüfen, ob sie sich überlappen, oder einen unabhängigen Stichproben-T-Test durchzuführen UND die Analyse mit einigen Histogrammen / Dichtediagrammen und Boxplots abzuschließen.

Off-Topic persönliche Meinung: Wählen Sie immer Dinge wie Distributionen, wann immer dies möglich ist. Wir haben heutzutage die Macht, dies zu tun. Die obigen Tests sind völlig in Ordnung, aber es gibt Fälle, in denen sie schief gehen könnten. Zum Beispiel, wenn Sie möchtenB Um extrem hoch zu sein, sagen wir 1000000, wird selbst der kleinste Unterschied zwischen den Mitteln eher als signifikant gekennzeichnet.

Das Obige ist robust, da unabhängig von der zugrunde liegenden Verteilung der zentrale Grenzwertsatz sicherstellt, dass wenn Bausreichend groß ist, beide Mittel vonMetricvar und Metricctrüber die Proben verteilt werden normal und die Tests sind gültig. Das werden Sie auch an der Grafik erkennen. Alle Bedenken hinsichtlich der zugrunde liegenden Verteilung verschiedener Benutzerausgaben usw. werden vom CLT behandelt.

Es gibt viele Referenzen und gute Lesungen von den Benutzern vor mir. Darüber hinaus wird viel über die optimalen Beispielnummern geforscht, die ich oben erwähnt habe. Ich wollte Ihnen nur einen empirischeren und leichter verständlichen Überblick über einen robusten Ansatz geben. Sie können damit beginnen und sehen, ob sich die Dinge ändern, indem Sie die obigen Beispielnummern ändern.

Vasilis Vasileiou
quelle
Ausgezeichnet ! Genau das habe ich gesucht, vielen Dank! Mit einem anderen Ansatz, irgendwelche Gedanken darüber, wie man die Delta-Methode auch auf dieses Problem anwenden könnte? stats.stackexchange.com/questions/291594/…
Xavier Bourret Sicotte
Außerdem - hätten Sie einige Ressourcen zu den geeigneten Optionen für B und SU? In diesem (fiktiven) Beispiel könnten wir uns vorstellen, dass 1 Million Benutzer die Kontrolle haben und sagen, 100.000 Benutzer ij Variante
Xavier Bourret Sicotte
Allgemeine Hinweise: Bible of Bootstrap ist amazon.de, aber es gibt eine ausgezeichnete Zusammenfassung hier: galton.uchicago.edu/~eichler/stat24600/Handouts/bootstrap.pdf
Vasilis Vasileiou
In Bezug auf die SU: Beim Absacken (Bootstrap-Aggregation) besteht der Stand der Technik (und die Standardoption für viele Absackalgorithmen) darin, aus beiden Populationen Proben zu entnehmen, wobei die Originalgrößen unberührt bleiben. Es gibt einen Satz, der besagt, dass wir 63,2% Unique erwarten und der Rest doppelte Benutzer. Sie können also die Größen N_ctr und N_var auswählen, die Sie nur von dort aus probieren. Ich wähle 1/5, da ich normalerweise flexiblere Schätzungen als stabile Schätzungen möchte. Es ist wieder eine Bias-Varianz-Kompromissfrage!
Vasilis Vasileiou
Zum B: Hier sind die Dinge noch unklarer. Auf der Wikipedia-Seite finden Sie ein Beispiel für B = 1000 im Element. von stat. lernen web.stanford.edu/~hastie/Papers/ESLII.pdf sie 100 versuchen, 200 im Jahr 2000 Beobachtungen. In diesem Ensemble-Modellierungsfall onlinelibrary.wiley.com/doi/full/10.1111/coin.12198 versuchen sie 500 und 1000. und hier unter 100 statistics.berkeley.edu/sites/default/files/tech-reports/… Ich würde Angenommen, diese Anzahl hängt von Ihren Maschinenfunktionen ab. In der Praxis machen Zahlen über 1000 keinen großen Unterschied, aber jede Wahl über 500 ist fair.
Vasilis Vasileiou