Tôi là một nhà phát triển phần mềm làm việc trên các hệ thống thử nghiệm A / B. Tôi không có một nền tảng thống kê vững chắc nhưng đã tiếp thu kiến thức trong vài tháng qua.
Một kịch bản thử nghiệm điển hình liên quan đến việc so sánh hai URL trên một trang web. Một lần khách truy cập LANDING_URL
và sau đó được chuyển tiếp đến một cách ngẫu nhiên một trong hai URL_CONTROL
hoặc URL_EXPERIMENTAL
. Một khách truy cập tạo thành một mẫu và điều kiện chiến thắng đạt được khi khách truy cập thực hiện một số hành động mong muốn trên trang web đó. Điều này tạo thành một chuyển đổi và tỷ lệ tỷ lệ chuyển đổi là tỷ lệ chuyển đổi (thường được biểu thị dưới dạng phần trăm). Tỷ lệ chuyển đổi điển hình cho một URL nhất định là một cái gì đó trong phạm vi 0,01% đến 0,08%. Chúng tôi chạy thử nghiệm để xác định cách URL mới so sánh với URL cũ. Nếu URL_EXPERIMENTAL
được hiển thị tốt hơn URL_CONTROL
, chúng tôi thay thế URL_CONTROL
bằng URL_EXPERIMENTAL
.
Chúng tôi đã phát triển một hệ thống sử dụng các kỹ thuật kiểm tra giả thuyết đơn giản. Tôi đã sử dụng các câu trả lời cho một câu hỏi CrossValidated khác ở đây để phát triển hệ thống này.
Một bài kiểm tra được thiết lập như sau:
- Ước tính tỷ lệ chuyển đổi
CRE_CONTROL
củaURL_CONTROL
tính sử dụng dữ liệu lịch sử. - Tỷ lệ chuyển đổi mục tiêu mong muốn
CRE_EXPERIMENTAL
củaURL_EXPERIMENTAL
được đặt. - Một mức ý nghĩa 0,95 thường được sử dụng.
- Công suất 0,8 thường được sử dụng.
Cùng với nhau, tất cả các giá trị này được sử dụng để tính kích thước mẫu mong muốn. Tôi đang sử dụng hàm R power.prop.test
để lấy kích thước mẫu này.
Một thử nghiệm sẽ chạy cho đến khi tất cả các mẫu được thu thập. Tại thời điểm này, khoảng tin cậy cho CR_CONTROL
và CR_EXPERIMENTAL
được tính toán. Nếu chúng không trùng nhau, thì một người chiến thắng có thể được tuyên bố với mức ý nghĩa 0,95 và sức mạnh là 0,8.
Tuy nhiên, người dùng thử nghiệm của chúng tôi có hai mối quan tâm chính:
1. Nếu, tại một số thời điểm trong quá trình thử nghiệm, đủ mẫu được thu thập để hiển thị người chiến thắng rõ ràng, thử nghiệm có thể bị dừng không?
2. Nếu không có người chiến thắng được tuyên bố vào cuối thử nghiệm, chúng ta có thể chạy thử nghiệm lâu hơn để xem liệu chúng ta có thể thu thập đủ mẫu để tìm ra người chiến thắng không?
Cần lưu ý rằng có nhiều công cụ thương mại ngoài kia cho phép người dùng của họ thực hiện chính xác những gì người dùng của chúng ta mong muốn. Tôi đã đọc được rằng có nhiều ngụy biện với những điều trên, nhưng tôi cũng nảy ra ý tưởng về quy tắc dừng và muốn khám phá khả năng sử dụng quy tắc như vậy trong các hệ thống của chúng ta.
Đây là hai cách tiếp cận chúng tôi muốn xem xét:
1. Sử dụng power.prop.test
, so sánh tỷ lệ chuyển đổi được đo hiện tại với số lượng mẫu hiện tại và xem có đủ mẫu được thu thập để tuyên bố người chiến thắng hay không.
Ví dụ: Một thử nghiệm đã được thiết lập để xem liệu hành vi sau có tồn tại trong hệ thống của chúng tôi không:
CRE_CONTROL
: 0,1CRE_EXPERIMENTAL
: 0,1 * 1,3- Với các tham số này, cỡ mẫu
N
là 1774.
Tuy nhiên, khi thử nghiệm tiến bộ và đạt tới 325 mẫu, CRM_CONTROL
(tỷ lệ chuyển đổi được kiểm soát) là 0,08 và CRM_EXPERIMENTAL
là 0,15. power.prop.test
được chạy trên các tỷ lệ chuyển đổi này và N
được tìm thấy là 325. Chính xác số lượng mẫu cần thiết để tuyên bố CRM_EXPERIMENTAL
là người chiến thắng! Tại thời điểm này, chúng tôi hy vọng rằng bài kiểm tra có thể kết thúc. Tương tự, nếu thử nghiệm đạt 1774 mẫu nhưng không tìm thấy người chiến thắng, nhưng sau đó nó đạt 2122 mẫu đủ để cho thấy CRM_CONTROL
0,1 và CRM_EXPERIMENTAL
0,125 là kết quả mà người chiến thắng có thể được tuyên bố.
Trong một câu hỏi liên quan, người dùng khuyên rằng một thử nghiệm như vậy ít đáng tin hơn do khuyến khích dừng sớm có ít mẫu hơn và cũng dễ bị sai lệch ước tính và số lỗi Loại I và Loại II tăng lên. Có một số cách để làm cho quy tắc dừng này hoạt động? Đây là cách tiếp cận ưa thích của chúng tôi vì nó có nghĩa là ít thời gian lập trình cho chúng tôi. Có lẽ quy tắc dừng này có thể hoạt động bằng cách cung cấp một số loại điểm số hoặc điểm số đo lường mức độ tin cậy của bài kiểm tra nên được dừng lại sớm?
2. Sử dụng phân tích tuần tự hoặc SPRT .
Các phương pháp kiểm tra này được thiết kế chính xác cho tình huống mà chúng tôi thấy: làm thế nào người dùng của chúng tôi có thể bắt đầu thử nghiệm và kết thúc thử nghiệm theo cách mà họ không lãng phí thời gian trong thử nghiệm? Chạy thử nghiệm quá lâu hoặc phải bắt đầu thử nghiệm với các thông số khác nhau.
Trong hai phương pháp trên, tôi ủng hộ SPRT vì toán học dễ nắm bắt hơn một chút và vì có vẻ như nó có thể dễ lập trình hơn. Tuy nhiên, tôi không hiểu cách sử dụng hàm khả năng trong ngữ cảnh này. Nếu ai đó có thể xây dựng một ví dụ về cách tính tỷ lệ khả năng, tổng tích lũy của tỷ lệ khả năng và tiếp tục thông qua một ví dụ minh họa một tình huống khi một người sẽ tiếp tục theo dõi, khi người ta chấp nhận giả thuyết khống và giả thuyết thay thế, điều đó sẽ giúp chúng tôi xác định xem SPRT có phải là hướng đi đúng đắn hay không.