Saya seorang pengembang perangkat lunak yang bekerja pada sistem pengujian A / B. Saya tidak memiliki latar belakang statistik yang solid tetapi telah mengambil pengetahuan selama beberapa bulan terakhir.
Skenario pengujian tipikal melibatkan membandingkan dua URL di situs web. Pengunjung mengunjungi LANDING_URL
dan kemudian secara acak diteruskan ke salah satu URL_CONTROL
atau URL_EXPERIMENTAL
. Pengunjung merupakan sampel, dan kondisi kemenangan dicapai ketika pengunjung melakukan beberapa tindakan yang diinginkan di situs tersebut. Ini merupakan konversi dan tingkat konversi adalah tingkat konversi (biasanya dinyatakan sebagai persentase). Tingkat konversi khas untuk URL yang diberikan adalah sesuatu di ranah 0,01% hingga 0,08%. Kami menjalankan tes untuk menentukan bagaimana perbandingan URL baru dengan URL lama. Jika URL_EXPERIMENTAL
ditampilkan untuk mengungguli URL_CONTROL
, kami ganti URL_CONTROL
dengan URL_EXPERIMENTAL
.
Kami telah mengembangkan sistem menggunakan teknik pengujian hipotesis sederhana. Saya menggunakan jawaban untuk pertanyaan CrossValidated lain di sini untuk mengembangkan sistem ini.
Tes diatur sebagai berikut:
- Tingkat konversi perkiraan
CRE_CONTROL
dariURL_CONTROL
dihitung dengan menggunakan data historis. - Tingkat konversi yang diinginkan Target
CRE_EXPERIMENTAL
dariURL_EXPERIMENTAL
adalah set. - Tingkat signifikansi 0,95 biasanya digunakan.
- Kekuatan 0,8 biasanya digunakan.
Bersama-sama, semua nilai ini digunakan untuk menghitung ukuran sampel yang diinginkan. Saya menggunakan fungsi R power.prop.test
untuk mendapatkan ukuran sampel ini.
Tes akan berjalan sampai semua sampel dikumpulkan. Pada titik ini, interval kepercayaan untuk CR_CONTROL
dan CR_EXPERIMENTAL
dihitung. Jika mereka tidak tumpang tindih, maka pemenang dapat dinyatakan dengan tingkat signifikansi 0,95 dan kekuatan 0,8.
Pengguna tes kami memiliki dua masalah utama, meskipun:
1. Jika, pada titik tertentu selama pengujian, cukup sampel dikumpulkan untuk menunjukkan pemenang yang jelas, tidak bisakah tes dihentikan?
2. Jika tidak ada pemenang yang dinyatakan pada akhir tes, dapatkah kami menjalankan tes lebih lama untuk melihat apakah kami dapat mengumpulkan sampel yang cukup untuk menemukan pemenang?
Perlu dicatat bahwa banyak alat komersial di luar sana yang memungkinkan penggunanya melakukan apa yang diinginkan pengguna kami. Saya telah membaca bahwa ada banyak kekeliruan dengan hal di atas, tetapi saya juga menemukan ide tentang penghentian aturan dan ingin mengeksplorasi kemungkinan menggunakan aturan semacam itu dalam sistem kami sendiri.
Berikut adalah dua pendekatan yang ingin kami pertimbangkan:
1. Menggunakan power.prop.test
, bandingkan tingkat konversi terukur saat ini dengan jumlah sampel saat ini dan lihat apakah cukup sampel telah dikumpulkan untuk menyatakan pemenang.
Contoh: Tes telah diatur untuk melihat apakah perilaku berikut ada di sistem kami:
CRE_CONTROL
: 0,1CRE_EXPERIMENTAL
: 0.1 * 1.3- Dengan parameter ini, ukuran sampel
N
adalah 1774.
Namun, seiring dengan kemajuan tes dan mencapai 325 sampel, CRM_CONTROL
(tingkat konversi yang diukur untuk kontrol) adalah 0,08 dan CRM_EXPERIMENTAL
0,15. power.prop.test
dijalankan pada tingkat konversi ini dan N
ditemukan menjadi 325. Tepatnya jumlah sampel yang diperlukan untuk menyatakan CRM_EXPERIMENTAL
sebagai pemenang! Pada titik ini adalah harapan kami bahwa tes dapat berakhir. Demikian pula, jika tes mencapai 1.774 sampel tetapi tidak ada pemenang yang ditemukan, tetapi kemudian mencapai 2.192 sampel yang cukup untuk menunjukkan bahwa CRM_CONTROL
0,1 danCRM_EXPERIMENTAL
0,128 adalah hasil di mana pemenang dapat dinyatakan.
Dalam pertanyaan terkait, pengguna menyarankan bahwa tes semacam itu kurang kredibel karena mendorong pemberhentian awal yang memiliki sampel lebih sedikit dan juga rentan terhadap bias estimasi. dan peningkatan jumlah kesalahan Tipe I dan Tipe II. Apakah ada cara untuk membuat aturan penghentian ini berfungsi? Ini adalah pendekatan yang kami sukai karena ini berarti lebih sedikit waktu pemrograman bagi kami. Mungkin aturan penghentian ini bisa berfungsi dengan menawarkan semacam skor numerik atau skor yang mengukur kredibilitas tes jika harus dihentikan lebih awal?
2. Menggunakan analisis sekuensial atau SPRT .
Metode pengujian ini dirancang tepat untuk situasi di mana kita berada: bagaimana pengguna kami dapat memulai tes dan mengakhirinya sedemikian rupa sehingga mereka tidak membuang waktu berlebih dalam pengujian? Baik menjalankan tes terlalu lama, atau harus memulai tes dengan parameter yang berbeda.
Dari dua metode di atas, saya menyukai SPRT karena matematika sedikit lebih mudah bagi saya untuk dipahami dan karena sepertinya lebih mudah diprogram. Namun, saya tidak mengerti bagaimana cara menggunakan fungsi kemungkinan dalam konteks ini. Jika seseorang dapat membuat contoh bagaimana menghitung rasio kemungkinan, jumlah kumulatif rasio kemungkinan, dan melanjutkan melalui contoh yang menggambarkan situasi ketika seseorang akan terus memantau, ketika seseorang akan menerima hipotesis nol dan hipotesis alternatif, itu akan membantu kami menentukan apakah SPRT adalah cara yang tepat untuk pergi.