Tỷ lệ kiểm tra A / B của các khoản tiền


7

 Bối cảnh

Hãy xem xét kịch bản sau đây cho một công ty bán hàng trực tuyến. Người dùng có thể mua một số mặt hàng (ví dụ: giỏ vật phẩm), một số mặt hàng có tầm quan trọng đặc biệt và được theo dõi cụ thể (hãy gọi chúng là các mặt hàng sao).

Chúng tôi muốn kiểm tra sự thay đổi trong thuật toán (ví dụ: khuyến nghị, đánh giá rủi ro, thêm nhắm mục tiêu, bất cứ điều gì ...) có thể ảnh hưởng đến cả số lượng mặt hàng sao được bántổng doanh số .

  • Đây là một thiết lập thử nghiệm A / B tiêu chuẩn - đơn vị ngẫu nhiêncấp độ người dùng .
  • Mục đích của thử nghiệm A / B là so sánh tác động của thay đổi thuật toán: nhóm điều khiển có thuật toán gốc và biến thể có thuật toán mới
  • Một số liệu quan tâm chính được định nghĩa là tỷ lệ doanh số của các mặt hàng sao trên tổng doanh số . Đây là tổng của tất cả các giao dịch của tất cả người dùng trong phạm vi của từng nhóm A hoặc B.
  • Điều này có nghĩa là đơn vị phân tích ở cấp độ giao dịch, khác với đơn vị ngẫu nhiên
  • Số liệu được tính trong toàn bộ thời gian của bài kiểm tra (ví dụ 2 tuần)

Chi tiết về số liệu được sử dụng

Nhóm cho A và một tập hợp các người dùng , mỗi người dùng được tham gia vào một số giao dịch. được đặt của tất cả các giao dịch của tất cả người dùng trong nhóm A trong thời gian thử nghiệm là .UA={u1,u2,...,uNA}tunTATA={tu11,tu12,...tunm}

Số liệu quan tâm cho nhóm A được xác định trên tất cả các giao dịch trong phạm vi của nhóm A. Các khoản tiền nằm ở cấp độ giao dịch, không phải ở cấp độ người dùng.

MetricA=tiTAsales star items $tiTAsales $

Tất nhiên, chúng tôi có thể sửa đổi định nghĩa để tính mức trung bình của người dùng và điều đó sẽ đơn giản hóa mọi thứ, nhưng đó không phải là số liệu đang được sử dụng.

Câu hỏi

Kiểm tra thống kê nào có thể được sử dụng cho một số liệu như vậy? Một xem xét bổ sung là mặc dù chúng ta có thể cho rằng người dùng là iid một cách an toàn, rất có thể sai khi cho rằng các giỏ mua hàng riêng lẻ là iid cho cùng một người dùng.

Dưới đây là một vài ý tưởng tôi đã gặp, có bất kỳ học viên thử nghiệm A / B nào gặp phải các số liệu tương tự trong quá khứ không?

  • z-test của tỷ lệ
  • Bootstrapping và Jacknife
  • Phương pháp Delta
  • Thay đổi số liệu (phương sách cuối cùng)

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

Chỉnh sửa - Một số làm rõ

Lý do đằng sau câu hỏi này là tôi đã thường thấy z-test của tỷ lệ được sử dụng trong tình huống này. Các công cụ phổ biến được sử dụng để kiểm tra A / B thường được mặc định trong kiểm tra tỷ lệ và người dùng doanh nghiệp hiếm khi kiểm tra các giả định cơ bản cần có để kiểm tra có hiệu lực. Câu trả lời của @ dnqxt dưới đây là một ví dụ hay: "Chỉ cần sử dụng bài kiểm tra tỷ lệ z!" - nhưng tôi muốn thấy một bằng chứng thống kê nghiêm ngặt về lý do tại sao (hoặc tại sao không) thử nghiệm này có thể được sử dụng trong trường hợp như vậy.

Cá nhân tôi không nghĩ rằng việc sử dụng phép thử tỷ lệ z sẽ có hiệu quả ở đây vì doanh số từ một sự kiện mua hàng không phải là thử nghiệm của Bernoulli. Tôi lập luận rằng chúng ta không thể nói rằng mỗi đô la được bán theo mẫu số có thể được xem là một thử nghiệm Bernoulli dẫn đến đồng đô la vật phẩm 0 hoặc 1 sao được bán trong tử số. Hơn nữa, vì đơn vị ngẫu nhiên ở cấp độ người dùng, các sự kiện mua hàng của cùng một người dùng không độc lập (nhưng tôi sẽ nói đó là vấn đề thứ yếu). Tôi có thể sai ở đây, vì vậy xin vui lòng chứng minh điều này nếu không!

Chúng tôi cũng có thể thay đổi số liệu để biến nó thành Bernoulli / Binomial hội tụ thành Bình thường bằng cách sử dụng số đếm, nhưng đó sẽ là giải pháp cuối cùng

#sales with star items#bán hàng


Nếu số liệu tuân theo phân phối bình thường, có lẽ bạn có thể sử dụng hồi quy tuyến tính hoặc UniANOVA. Nếu số liệu không tuân theo phân phối bình thường, bạn có thể thử chuyển đổi giống như phân tích được sử dụng trong hồi quy logistic:x=log(metric/(1metric)), mặc dù nó có thể có vấn đề, khi số liệu là 0 hoặc là 1.
Ertxiem - phục hồi Monica

1
Chỉ cần lưu ý một điều: Bán hàng thường rất không bình thường. Bạn chắc chắn sẽ cần phải tính đến điều đó khi trình bày dữ liệu của bạn. Điều đó đang được nói, tại sao không sử dụng hồi quy Beta trên dữ liệu tổng hợp cấp độ người dùng? Phân tích có thể được phân tầng trực tiếp với thông tin nhân khẩu học có sẵn và / hoặc trong trường hợp người dùng hiện tại có thông tin bổ sung về hành vi người dùng trước đó. (ví dụ: chúng tôi biết rất chắc chắn nơi người dùng cư trú khi chúng tôi có thông tin giao hàng và / hoặc thông tin thanh toán.)
usεr11852

Thật vậy, không có lý do gì để tin rằng doanh số được phân phối bình thường ... chia doanh số cho số người dùng (nghĩa là doanh số trên mỗi người dùng) sẽ đưa ra một thống kê phân phối thông thường cho số lượng người dùng trong phạm vi. Có lẽ lấy nhật ký và sau đó thực hiện một thử nghiệm trong không gian biến đổi nhật ký?
Xavier Bourret Sicotte

1
Trong trường hợp đó, đây là một câu hỏi xuất sắc. (+1)
usεr11852

1
Tại sao bạn phân tích một thống kê xuất phát (một chiều và tổng hợp), thay vì cố gắng phân tích trực tiếp hơn dữ liệu và quan sát thô (và sau đó đưa ra kết luận về thống kê dẫn xuất dựa trên phân tích đó)? (Tỷ lệ này của hai khoản tiền có xấp xỉ phân phối Cauchy khó hiểu: nghĩa là tỷ lệ của hai khoản tiền mua nhiều trong đó cả hai khoản tiền xấp xỉ một biến phân phối bình thường đa biến) Bạn muốn dự đoán gì? Mục tiêu là gì? Các dữ liệu thô mà bạn có là gì?
Sextus Empiricus 22/03/19

Câu trả lời:


3
  • z-test của tỷ lệ

    Điều này áp dụng cho một trường hợp khác khi bạn có kết quả nhị phân. Phép thử z về tỷ lệ so sánh tỷ lệ của các kết quả nhị phân đó.

    (Bên dưới một số đối số được đưa ra là bạn sẽ có thể thực hiện kiểm tra t, với số lượng lớn gần bằng với kiểm tra z. Với tỷ lệ bạn có thể thực hiện kiểm tra z vì phân phối nhị thức có một tham số xác định phương sai và giá trị trung bình, không giống như phân phối bình thường)

  • Bootstrapping

    Điều này sẽ có thể nhưng không thực sự cần thiết vì phương pháp Delta cung cấp lỗi của thống kê quan sát của bạn đơn giản hơn.

  • Phương pháp Delta

    Bạn quan tâm đến tỷ lệ của hai biến có thể tương quan, 1. tổng doanh số và 2. doanh số trong các mặt hàng sao.

    Các biến này có khả năng được phân phối bình thường một cách bất thường vì chúng là tổng doanh số từ nhiều cá nhân (quy trình thử nghiệm có thể được coi là một quá trình như chọn một mẫu bán hàng từ người dùng cá nhân từ phân phối doanh số từ người dùng cá nhân). Vì vậy bạn có thể sử dụng phương pháp Delta.

    Việc sử dụng phương pháp Delta để ước tính tỷ lệ được mô tả ở đây . Kết quả của ứng dụng phương pháp Delta này thực sự trùng khớp với kết quả gần đúng của Hinkley , một biểu thức chính xác cho tỷ lệ của hai biến phân phối bình thường tương quan (Hinkley DV, 1969, Trên Tỷ lệ của hai biến ngẫu nhiên bình thường tương quan, Biometrica vol. 56 số 3).

    Dành cho Z= =XY với

    [XY]~N([μxμy],[σx2ρσxσyρσxσyσy2])
    Kết quả chính xác là:
    f(z)= =b(z)d(z)một(z)312πσXσY[Φ(b(z)1-ρ2một(z))-Φ(-b(z)1-ρ2một(z))]+1-ρ2πσXσYmột(z)2điểm kinh nghiệm(-c2(1-ρ2))
    với
    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)
    Và một xấp xỉ dựa trên một hành vi giả định là: (cho θY/σY):
    F(z)Φ(zμX/μYσXσYa(z)/μY)
    Bạn kết thúc với kết quả phương thức Delta khi bạn chèn xấp xỉ 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

    Các giá trị cho μX,μY,σX,σY,ρ có thể được ước tính từ các quan sát của bạn cho phép bạn ước tính phương sai và giá trị trung bình của phân phối cho một người dùng và liên quan đến phương sai này và trung bình cho phân phối mẫu của tổng số người dùng.

  • Thay đổi số liệu

    Tôi tin rằng việc can thiệp vào việc phân phối doanh số (không phải là tỷ lệ) từ những người dùng đơn lẻ là điều đáng ngại. Cuối cùng, bạn có thể kết thúc với một tình huống mà ở đó một sự khác biệt giữa các thành viên trong nhóm A và B, nhưng nó chỉ xảy ra là không đáng kể khi bạn xem các biến duy nhất của tỷ lệ (điều này là một chút tương tự như MANOVA là mạnh hơn hơn các xét nghiệm ANOVA đơn).

    Trong khi sự hiểu biết về sự khác biệt giữa các nhóm, mà không có một sự khác biệt đáng kể trong số liệu mà bạn đang interrested trong, có thể không giúp bạn nhiều trong việc đưa ra các quyết định, nó không giúp bạn trong việc tìm hiểu lý thuyết cơ bản và có khả năng thiết kế tốt hơn thay đổi / thí nghiệm lần sau.


Hình minh họa

Dưới đây là một minh họa đơn giản:

Hãy để sự phân bố giả định doanh thu từ những người dùng được phân phối như phân số một,b,c,d cho biết có bao nhiêu người dùng trong một trường hợp cụ thể (trong thực tế phân phối này sẽ phức tạp hơn):

                           star item sales
                         0$              40$ 

other item sales  0$      a               b
                 10$      c               d

Sau đó, phân phối mẫu cho tổng số từ một nhóm có 10000 người dùng, với một thuật toán

một= =0.190,b= =0,001,c= =0,800,d= =0,009
và thuật toán khác
một= =0.170,b= =0,001,c= =0,820,d= =0,009
sẽ giống như:

thí dụ

Trong đó cho thấy 10000 lượt chạy thu hút người dùng mới và tính toán doanh số và tỷ lệ. Biểu đồ là để phân phối các tỷ lệ. Các dòng là tính toán sử dụng chức năng từ Hinkley.

  • Bạn có thể thấy rằng phân phối của hai tổng doanh số xấp xỉ một mức bình thường đa biến. Các cách ly cho tỷ lệ cho thấy rằng bạn có thể ước tính tỷ lệ rất tốt bằng tổng tuyến tính (như trong phương pháp Delta được tuyến tính hóa được liên kết / đã đề cập trước đó) và một phép tính gần đúng bằng phân phối Gaussian sẽ hoạt động tốt (và sau đó bạn có thể sử dụng t- kiểm tra với số lượng lớn sẽ giống như kiểm tra z).
  • Bạn cũng có thể thấy rằng một biểu đồ phân tán như thế này có thể cung cấp cho bạn nhiều thông tin và hiểu biết hơn so với việc chỉ sử dụng biểu đồ.

Mã R để tính toán biểu đồ:

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)

Câu trả lời tuyệt vời Martijn, như mọi khi. Vì vậy, để tóm tắt lại, một khi tôi sử dụng xấp xỉ phương pháp Delta, hoặc kết quả Hinkley chính xác hơn bao gồm tương quan, tôi nhận được một rv mới không bình thường. Sau đó tôi có thể thực hiện kiểm tra z tiêu chuẩn về sự khác biệt về phương tiện trên rv mới này để kiểm soát và biến thể không? tức là H0 được cả hai điều khiển và biến thể có giá trị trung bình tương tự, hoặc trung bình = 0? Tôi thực sự chưa bao giờ thấy một ví dụ về việc sử dụng phương thức delta để kiểm tra sự khác biệt của phương tiện ... bạn có một ví dụ không?
Xavier Bourret Sicotte

Phương pháp Delta cũng bao gồm sự tương quan. Hinkley chỉ chính xác hơn nhưng sự khác biệt không quá quan trọng khi phương sai của các biến của bạn là nhỏ. Bạn có thể nói rằng
x/y-μx/μy(x-μx)1μy+(y-μy)μxμy2
tức là bạn ước tính sai số tỷ lệ theo một tổng tuyến tính mà phương sai có thể dễ dàng tính được (cũng có tương quan). Khi phân phối trải rộng trên một diện tích lớn hơn thì các đường đẳng cự đó không còn tương đương và song song, thì sự khác biệt giữa phương pháp Delta và công thức của Hinkley trở nên lớn hơn.
Sextus Empiricus

Hãy tiếp tục cuộc thảo luận này trong trò chuyện? chat.stackexchange.com/rooms/91683/ab-test-ratio-of-sums cảm ơn!
Xavier Bourret Sicotte

(+1) Chỉ là một nhận xét: bạn đã kiểm tra điều gì xảy ra nếu phân phối cơ bản của số liệu không bình thường mà thay vào đó là đuôi béo (ví dụ: log-normal)? Ở mức độ đó, nhanh chóng thấy điều này, phân phối tỷ lệ không bao giờ có giá trị là1(hoặc gần như vậy) trong khi "chắc chắn" rằng một số người sẽ chỉ mua một (hoặc hai) vật phẩm được gắn dấu sao nói chung. Để trích dẫn Hole (2007): " Phương pháp delta là chính xác nhất khi dữ liệu được điều hòa tốt, trong khi bootstrap mạnh hơn đối với dữ liệu nhiễu và lỗi chính tả của mô hình. ".
usεr11852

2
@ usεr11852 Việc phân phối doanh số từ những người dùng đơn lẻ không cần phải bình thường. Giống như trong ví dụ nơi nó là một loại phân phối Bernoulli đa biến. Những gì bạn cần là phân phối mẫu của tổng doanh số của người dùng cần phải (xấp xỉ) bình thường. Đây sẽ là trường hợp khi phân phối cho người dùng đơn lẻ có những khoảnh khắc hữu hạn (sau đó họ sẽ biến mất trong tổng số). Chúng thực sự sẽ biến mất nhanh hơn khi bạn không có đuôi xiên hoặc mỡ rất cao và bạn sẽ cần một cỡ mẫu đủ (nhưng điều tương tự cũng đúng với bootstrapping).
Sextus Empiricus

5

Những gì được mô tả là một trường hợp cổ điển của một thử nghiệm A / B nơi chúng tôi có sự phụ thuộc giữa người dùng và các mặt hàng (mua hàng tại đây); chúng ta cần tính đến điều này bởi vì nếu không, chúng ta sẽ có ước tính sai lệch về phương sai liên quan. Để chống lại điều đó, chúng tôi hoặc bootstrap bằng cách lấy các cụm tài khoản / người dùng hoặc chúng tôi sử dụng mô hình hỗn hợp đầy đủ. Bài viết của Bakshy & Eckles (2013) Sự không chắc chắn trong các thử nghiệm trực tuyến với dữ liệu phụ thuộc: Đánh giá các phương pháp Bootstrap là một tài liệu tham khảo vô giá về vấn đề tập trung vào các thử nghiệm A / B trực tuyến.

Nhìn vào những điều chi tiết hơn, trong một số trường hợp, giấy B & E là một trường hợp sử dụng mở rộng của giấy Owen (2007) Bootstrap pigeonhole . Tương tự, cách tiếp cận hiệu ứng hỗn hợp dựa trên bài báo uber-classic của Bayeen et al. (2009) Mô hình hóa hiệu ứng hỗn hợp với các hiệu ứng ngẫu nhiên chéo cho các đối tượng và vật phẩm .

Để nhận xét ngắn gọn trong các phương pháp bạn đề cập: khi bạn xác định chính xác z-test về tỷ lệ là quá đơn giản; nó sẽ giả sử IID và như bài báo B & E trình bày, giả định đó có thể gây hiểu lầm nghiêm trọng. Giới hạn tương tự mở rộng đến bootstrap, nếu chúng ta bỏ qua cấu trúc của dữ liệu. Về phương pháp Delta: độ lệch so với dữ liệu thông thường và / hoặc dữ liệu nhiễu thường làm cho phương pháp Delta không tối ưu so với các phương pháp bootstrap (ví dụ Hole 2007 Một so sánh các phương pháp ước tính khoảng tin cậy để sẵn sàng trả các biện pháp ) nhưng tôi đã thấy một số bài báo gần đây ( ví dụ: Đặng và cộng sự 2017 Phân tích đáng tin cậy về các thử nghiệm A / B trực tuyến: Cạm bẫy, thách thức và giải pháp và Đặng và cộng sự 2018 Áp dụng Phương pháp Delta trong Phân tích số liệu: Hướng dẫn thực tiễn với Ý tưởng tiểu thuyết) có vẻ đầy hứa hẹn; lưu ý rằng có giả định ngầm định rằng hiệu quả điều trị trung bình sẽ bình thường. Cuối cùng, việc thay đổi số liệu cũng là một ý tưởng tuyệt vời khi hợp lý. Chúng ta không nên ngại thúc đẩy những thay đổi mạch lạc hơn về mặt toán học chỉ vì một số liệu đã có sẵn.

Tóm lại: Nếu có một sơ đồ bao quát trên tất cả các bài báo tôi đã trích dẫn ở trên thì chúng tôi cần đảm bảo rằng đơn vị phân tích và đơn vị ngẫu nhiên của chúng tôi phù hợp với các câu hỏi nghiên cứu của chúng tôi.


+1 câu trả lời tuyệt vời cảm ơn rất nhiều - bạn có cho rằng nếu các giả định của IID được tổ chức, thì bài kiểm tra tỷ lệ z sẽ hoạt động trong trường hợp này? Làm thế nào bạn chứng minh rằng đây là một khoản tiền của Bernoulli RV?
Xavier Bourret Sicotte

Tôi vui vì tôi có thể giúp. Tôi sẽ không sử dụngzkiểm tra tỷ lệ trong cài đặt thử nghiệm A / B vì tôi nghĩ rằng các giả định của IID là không thể thực tế. Nghiên cứu đang bùng nổ (như bạn có thể thấy) vì vậy chúng là nhiều lựa chọn thay thế tốt hơn!
usεr11852

Tôi đang theo dõi câu trả lời của bạn - thực sự các giả định iid cho các sự kiện mua hàng của cùng một người dùng rất mạnh. Nhưng về cơ bản hơn - làm thế nào chúng ta có thể biện minh cho việc sử dụng bài kiểm tra tỷ lệ trên một số liệu như vậy - điều này có yêu cầu mỗi sự kiện phải là một thử nghiệm 0-1 Bernoulli không? Điều đó sẽ yêu cầu xem xét mỗi đô la bán hàng là một sự kiện độc lập?
Xavier Bourret Sicotte

Vâng, nó sẽ nhưng rõ ràng đó là một giả định rất mạnh mẽ / đơn giản hóa vụng về. Điều đó đang được nói, các thử nghiệm A / B thường kiểm tra các kết quả nhị phân (ví dụ: khuấy / không khuấy) vì vậy việc sử dụng các thử nghiệm tỷ lệ có thể phù hợp. Để thuận tiện, đôi khi người ta có thể sử dụng một bài kiểm tra cho các kết quả liên tục trên dữ liệu rời rạc (hoặc ngược lại) và kết quả có thể không hoàn toàn sai lệch. Như bạn lưu ý chính xác, điều đó không làm cho chúng phát ra âm thanh.
usεr11852

2

Một cách tiếp cận rất đơn giản sẽ là sử dụng một bài kiểm tra hoán vị. Đây là thử nghiệm không phân phối, do đó bạn không phải lo lắng về việc phân phối.

Ý tưởng rất đơn giản. Bạn ngẫu nhiên xáo trộn các nhãn và đếm số lần chênh lệch đo được của số liệu quan tâm của bạn lớn hơn số chênh lệch bạn nhận được từ dữ liệu thực của mình. Tỷ lệ bạn nhận được là giá trị p của bạn.

Tại sao nó hoạt động? Chà, nếu giả thuyết null là True, thì việc xáo trộn ngẫu nhiên các nhãn (tức là nằm trong nhóm A hoặc B) sẽ thường mang lại giá trị tốt hơn so với giá trị bạn đo được. Tuy nhiên, nếu thuật toán đề xuất của bạn hoạt động, thì việc xáo trộn ngẫu nhiên sẽ hiếm khi mang lại kết quả tốt hơn so với thuật toán bạn nhận được.

Bạn cũng có thể sử dụng bootstrapping để có được khoảng tin cậy trên số liệu của cả nhóm A và B của bạn. Điều này, hai, được cho phép mà không có giả định về phân phối của bạn. Điều đó không tương đương với kiểm tra thống kê (ngay cả khi các khoảng CI không giao nhau), nhưng khía cạnh trực quan của các thanh "thanh + lỗi" có thể thú vị cho nhóm của bạn.

Tôi đã trả lời một câu hỏi rất giống nhau (nơi bạn thực sự tìm thấy tôi). Làm thế nào để kiểm tra sự khác biệt theo hai tỷ lệ khi kết quả không phải là nhị phân? . Tôi nghĩ rằng mã tôi đề nghị ở đó cũng áp dụng ở đây.

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

Tôi nghĩ rằng sử dụng phương pháp kiểm tra hoán vị đơn giản như phương pháp bạn mô tả sẽ yêu cầu các phép đo IID. Từ hiểu biết của tôi về vấn đề này, điều này không giữ được và do đó, một thử nghiệm hoán vị (vanilla) sẽ dẫn đến các xét nghiệm chống mê. Vì có phân nhóm liên quan đến người dùng (và có thể xảy ra), giả định IID có thể dẫn đến ước lượng sai lệch do sự khác biệt về hiệu quả điều trị riêng lẻ là lớn. Vui lòng xem một số tài liệu tham khảo (B & E 2013 hoặc D et al. 2017) trong câu trả lời của tôi để biết thêm chi tiết. (Họ đối phó với bootstrap bằng cách chuyển ý tưởng chung sang kiểm tra hoán vị.)
usεr11852

Cảm ơn vì nhận xét này. Tôi không hoàn toàn chắc chắn về vấn đề iid này. Trừ khi tôi hiểu sai, với số liệu mà anh ấy đề xuất, vấn đề có thể được xử lý thành một giá trị duy nhất bởi người dùng, điều này làm tan biến vấn đề iid.
brumar

Thật không may, đó không phải là trường hợp. OP đề cập đến nó ít nhất hai lần: một lần " ... chúng tôi có thể sửa đổi định nghĩa để tính mức trung bình của người dùng ... " (nghĩa là đây không phải là cấp độ người dùng) và sau đó khi nói: " sự kiện mua hàng của cùng một người dùng không độc lập ". Do đó, việc cho phép các nhãn sự kiện mua sẽ không mạch lạc vì chúng không phải là IID. (Đó là quan điểm của các loại giấy tờ tôi trích dẫn :).)
usεr11852

Tôi hiểu rồi. Điều này làm cho câu trả lời này khá không liên quan và trừ khi tôi tìm thấy một số spin hữu ích, tôi nghĩ đến việc xóa nó. Tôi tránh xa số liệu thống kê trong hai năm qua, nhưng những bài báo mà bạn tham khảo nghe có vẻ thú vị. Chắc chắn trong danh sách đọc của tôi trong trường hợp tôi tìm thấy sự quan tâm một lần nữa trong lĩnh vực này.
brumar

1
Cảm ơn bạn đã trả lời - những gì về bootstrapping hoặc hoán vị ở cấp độ người dùng - tức là đảm bảo rằng với mỗi hoán vị, tất cả hoặc không có doanh số cho một người dùng nhất định được bao gồm. Điều này có thể giúp giảm các vấn đề độc lập dưới mức người dùng. Điều đó sẽ làm việc tốt hơn?
Xavier Bourret Sicotte

1

Khoảng tin cậy của Bootstrap sẽ là lựa chọn kỹ thuật của tôi cho kịch bản này. Tôi muốn để phác thảo một cách tiếp cận với một số ví dụ số lựa chọn mà bạn có thể sử dụng và lý do đằng sau phương pháp này:

  1. Bạn có hai chậu / túi và mỗi túi chứa những người thuộc nhóm kiểm soát và nhóm biến thể: BạnctrBạnvmộtr với kích thước tương ứng NctrNvmộtr. Tôi đã thay đổi ký hiệu của bạn một chút, tôi hy vọng điều đó ổn.
  2. Bạn chọn một mẫu ngẫu nhiên kngười từ cả hai nhóm với sự thay thế. Nếu cả hai quần thể của bạn đều "đủ lớn" (ví dụ ít nhất 2000 người dùng), bạn có thể chọnkNctrkNvmộtr. Nguyên tắc nhỏ: Tôi thường chọnk= =mTôin(Nctr,Nvmộtr)5để có kết quả linh hoạt hơn nhưng trong hầu hết các thuật toán đóng gói (tổng hợp bootstrap), tùy chọn mặc định là lấy mẫu từ toàn bộ dân số. Nếu dân số của bạn nhỏ hơn thì bạn vẫn có thể làm điều đó nhưng hãy chắc chắn rằng bạn chọn một "đủ lớn"k(nói ít nhất 400 người dùng), một lần nữa bằng cách lấy mẫu với sự thay thế. Hãy nói rằng lưu ý họSBạnctrSBạnvmộtr cả hai kích thước k
  3. Bạn tính toán số liệu của mình bằng cách nhận tất cả các giao dịch mà mỗi người trong mỗi nhóm thực hiện bằng cách xem bản gốc T tập dữ liệu giao dịch cho mỗi người dùng trong SBạnctrSBạnvmộtr. Sau đó bạn sẽ kết thúc vớiMetrTôicctr1MetrTôicctr2. Lưu trữ những giá trị này. Thông báo quan trọng: bạn nên tính toán các giá trị này bằng cách tính tổng doanh số của các mục sao và chia cho tổng doanh số. Đừng lấy trung bình của giỏ hàng cá nhân của mỗi người. Điều này rất quan trọng vì đây là số liệu bạn đang xem.
  4. Quay trở lại điểm 2 và lặp lại. Số lượng mẫu bootstrap tối ưu,B, mà bạn có thể chọn tùy thuộc vào nhiều yếu tố, nhưng một lần nữa, một quy tắc tốt sẽ là khoảng 1000 lần.
  5. Bây giờ bạn có một B số lượng MetrTôicctr và tương tự cho MetrTôicvmộtr. Bây giờ bạn có thể chọn để so sánh phương tiện của họ bằng cách sử dụng nhiều kỹ thuật thông thường. Cá nhân tôi sẽ chọn xây dựng các khoảng tin cậy và xem liệu chúng có trùng nhau hay thử nghiệm mẫu độc lập VÀ hoàn thành phân tích với một số biểu đồ / biểu đồ mật độ & ô vuông.

Ý kiến ​​cá nhân ngoài chủ đề: Luôn chọn để viz những thứ như phân phối bất cứ khi nào có thể, chúng ta có sức mạnh để làm điều đó ngày nay. Các xét nghiệm trên là hoàn toàn tốt nhưng có những trường hợp chúng có thể sai. Chẳng hạn nếu bạn chọnB là cực kỳ cao, giả sử 1000000, thì ngay cả sự khác biệt nhỏ nhất giữa các phương tiện cũng có nhiều khả năng được gắn cờ là đáng kể.

Ở trên là mạnh mẽ bởi vì bất kể phân phối cơ bản là gì, định lý giới hạn trung tâm đảm bảo rằng nếu Blà đủ lớn, cả hai phương tiện củaMetrTôicvmộtrMetrTôicctrtrên các mẫu sẽ được phân phối bình thường và các xét nghiệm sẽ hợp lệ. Bạn sẽ chứng kiến ​​điều đó từ hình ảnh là tốt. Bất kỳ mối quan tâm nào về phân phối cơ bản của các khoản chi tiêu khác nhau của người dùng, v.v. sẽ được CLT giải quyết.

Có rất nhiều tài liệu tham khảo và đọc tốt của người dùng trước tôi. Hơn nữa, có rất nhiều nghiên cứu được thực hiện trên các số ví dụ tối ưu mà tôi đã đề cập ở trên, bạn có thể xem xét nó. Tôi chỉ muốn cung cấp cho bạn một phác thảo thực nghiệm và dễ hiểu hơn về cách tiếp cận mạnh mẽ. Bạn có thể bắt đầu với điều đó và xem liệu mọi thứ có thay đổi hay không bằng cách thay đổi các số ví dụ trên.


Thông minh ! Đây chính xác là những gì tôi đang tìm kiếm cảm ơn rất nhiều! Sử dụng một cách tiếp cận khác, bạn có suy nghĩ gì về cách người ta cũng có thể áp dụng phương pháp Delta cho vấn đề này không? stats.stackexchange.com/questions/291594/ Mạnh
Xavier Bourret Sicotte

Ngoài ra - bạn sẽ có một số tài nguyên về các lựa chọn phù hợp cho B và SU? Trong ví dụ (hư cấu) này, chúng ta có thể tưởng tượng rằng có 1 triệu người dùng đang kiểm soát và nói 100k người dùng biến thể ij
Xavier Bourret Sicotte

Tài liệu tham khảo chung: Kinh thánh Bootstrap là amazon.co.uk/ nhưng có một bản tóm tắt xuất sắc ở đây: galton.uchicago.edu/~eichler/stat24600/Handouts/bootstrap.pdf
Vasilis Vasileiou

Về SU: Trong đóng bao (tổng hợp bootstrap), trạng thái của nghệ thuật (và tùy chọn mặc định cho nhiều thuật toán đóng bao) là lấy mẫu từ cả hai quần thể giữ nguyên kích thước ban đầu. Có một định lý nói rằng chúng tôi mong đợi 63,2% duy nhất và phần còn lại người dùng trùng lặp vì vậy hãy thoải mái chọn kích thước N_ctr và N_var chỉ lấy mẫu từ đó. Tôi chọn 1/5 vì tôi thường muốn ước tính linh hoạt hơn so với ước tính ổn định. Đó là một câu hỏi đánh đổi sai lệch một lần nữa!
Vasilis Vasileiou

Về B: Ở đây mọi thứ thậm chí còn không rõ ràng hơn. Trong trang của wikipedia, họ lấy ví dụ về B = 1000, trong elem. của stat. tìm hiểu web.stanford.edu/~hastie/Papers/ESLII.pdf họ thử 100, 200 trong 2000 quan sát. Trong trường hợp mô hình quần thể này onlinelibrary.wiley.com/doi/full/10.1111/coin.12198 họ cố gắng 500 và 1000. và đây dưới 100 statistics.berkeley.edu/sites/default/files/tech-reports/... Tôi muốn nói rằng con số này phụ thuộc vào khả năng máy của bạn. Trong thực tế, những con số trên 1000 không tạo ra sự khác biệt lớn nhưng bất kỳ lựa chọn nào trên 500 tôi đều nói là công bằng.
Vasilis Vasileiou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.