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],[σ2xρσxσyρσxσyσ2y])
Das genaue Ergebnis ist: f(z)=b(z)d(z)a(z)312π−−√σXσY[Φ(b(z)1−ρ2−−−−−√a(z))−Φ(−b(z)1−ρ2−−−−−√a(z))]+1−ρ2−−−−−√πσXσYa(z)2exp(−c2(1−ρ2))
mit a(z)b(z)cd(z)====(z2σ2X−2ρzσXσY+1σ2Y)12μXzσ2X−ρ(μX+μYz)σXσY+μYσ2Yμ2Xσ2Y−2ρμXμY+σXσY+μ2Yσ2Yexp(b(z)2−ca(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/μY≈a(μX/μY)σXσY/μY=(μ2Xσ2Yμ4Y−2μXσXσYμ3Y+σ2Xμ2Y)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 a = 0,190 , b = 0,001 , c = 0,800 , d= 0,009
und der andere Algorithmus a = 0,170 , b = 0,001 , c = 0,820 , d= 0,009
wird aussehen wie:
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)