Peningkatan, Signifikansi, dan Pengaman dalam SQL
Menghitung peningkatan konversi dan pemeriksaan data yang menandai eksperimen yang bermasalah.
Peningkatan, Signifikansi, dan Pengaman dalam SQL adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Dari Metrik ke Keputusan
Konversi per varian hanyalah permulaan. Pertanyaan dalam wawancara adalah: apakah perlakuan benar-benar menang? Artinya, menghitung kenaikan, menilai apakah perbedaannya nyata atau hanya variasi acak, dan memeriksa metrik pengaman yang dapat mendeteksi eksperimen yang rusak.
Anda tidak akan menjalankan paket statistik lengkap dalam SQL, tetapi Anda dapat menghitung nilai masukan dan sinyal kasar signifikansi yang ingin dilihat pewawancara.
CTE Ringkasan per Varian
Semua proses berikutnya dibangun di atas satu ringkasan yang rapi: untuk setiap varian, jumlah pengguna n, jumlah pengonversi c, dan tingkat konversi p. Hitung semuanya sekali dalam CTE dan gunakan kembali.
WITH summary AS (
SELECT
variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat
GROUP BY variant
)
SELECT
variant, n, c,
1.0 * c / n AS p
FROM summary;Kenaikan Absolut vs Relatif
Ada dua definisi kenaikan, dan pewawancara biasanya menginginkan definisi relatif:
- Kenaikan absolut = tingkat konversi perlakuan - tingkat konversi kontrol (poin persentase).
- Kenaikan relatif = (tingkat konversi perlakuan - tingkat konversi kontrol) / tingkat konversi kontrol (persentase peningkatan).
Mengatakan "kenaikan 2 poin" atau "kenaikan relatif 20%" dapat menggambarkan hasil yang sama. Jelaskan secara tegas.
Menghitung Kenaikan dengan Pivot Mandiri
Untuk membandingkan dua varian dalam satu baris, tampilkan kontrol dan perlakuan berdampingan menggunakan agregasi kondisional, lalu lakukan perhitungannya.
Dengan cara ini, Anda terhindar dari penggabungan mandiri yang rentan dan rumus kenaikan tetap mudah dibaca.
WITH s AS (
SELECT variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat GROUP BY variant
),
rates AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) AS p_ctrl,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p_trt
FROM s
)
SELECT
p_ctrl, p_trt,
p_trt - p_ctrl AS abs_lift,
ROUND(100.0 * (p_trt - p_ctrl) / p_ctrl, 2) AS rel_lift_pct
FROM rates;Mengapa Perbedaan Mungkin Hanya Variasi Acak
Tingkat perlakuan yang lebih tinggi bisa saja merupakan keberuntungan pengambilan sampel secara acak. Signifikansi menanyakan: seberapa mungkin selisih sebesar ini terjadi jika kedua varian benar-benar identik?
Komponen utamanya adalah galat baku setiap tingkat, yang mengecil seiring bertambahnya ukuran sampel. Sampel besar membuat kenaikan kecil lebih dapat dipercaya; sampel kecil membuat kenaikan besar sekalipun patut diragukan.
Galat Baku Suatu Proporsi
Untuk tingkat konversi p pada n pengguna, galat bakunya adalah sqrt(p * (1 - p) / n). Hitung nilai ini untuk setiap varian langsung dalam SQL.
Nilai ini mengukur fluktuasi setiap tingkat sebelum Anda membandingkannya.
WITH s AS (
SELECT variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat GROUP BY variant
)
SELECT
variant, n,
1.0 * c / n AS p,
SQRT( (1.0*c/n) * (1 - 1.0*c/n) / n ) AS std_err
FROM s;Skor-Z untuk Dua Proporsi
Sinyal kasar signifikansi adalah skor-z dua proporsi: selisih tingkat dibagi dengan galat baku selisih tersebut. Nilai absolut di atas sekitar 1.96 sesuai dengan ambang umum 95%.
Jelaskan bahwa ini adalah pendekatan, bukan pengganti uji yang tepat, tetapi cara ini menjawab pertanyaan "apakah hasil ini mungkin nyata?" dalam SQL.
WITH r AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) AS p1,
MAX(CASE WHEN variant='control' THEN n END) AS n1,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p2,
MAX(CASE WHEN variant='treatment' THEN n END) AS n2
FROM (
SELECT variant, COUNT(DISTINCT user_id) n,
COUNT(DISTINCT converted_user) c
FROM experiment_flat GROUP BY variant
) s
)
SELECT
p2 - p1 AS abs_lift,
(p2 - p1) / SQRT( p1*(1-p1)/n1 + p2*(1-p2)/n2 ) AS z_score
FROM r;Menafsirkan Skor-Z
Ubah angka menjadi kesimpulan agar pewawancara mendengar pemahaman bisnis, bukan sekadar matematika:
|z| >= 1.96: perbedaan signifikan pada tingkat keyakinan kira-kira 95%.|z| < 1.96: bukti belum cukup; kenaikan tersebut mungkin hanya variasi acak.
Bungkus hasilnya dalam CASE untuk menghasilkan label yang mudah dibaca, dan selalu kaitkan signifikansi dengan besarnya kenaikan secara praktis.
SELECT
z_score,
CASE WHEN ABS(z_score) >= 1.96
THEN 'significant at 95%'
ELSE 'not significant' END AS verdict
FROM (
SELECT 2.3 AS z_score
) t;Ketidaksesuaian Rasio Sampel (SRM)
Pemeriksaan pengaman pertama yang ditanyakan pewawancara: apakah pengguna benar-benar terbagi sesuai rancangan? Eksperimen 50/50 yang menghasilkan 53/47 dengan jutaan pengguna merupakan tanda bahaya; pengacakan atau pencatatan mengalami kerusakan.
Bandingkan jumlah yang teramati dengan pembagian yang diharapkan. Penyimpangan besar membuat seluruh uji tidak valid bahkan sebelum Anda membaca metriknya.
WITH cnt AS (
SELECT variant, COUNT(DISTINCT user_id) AS n
FROM experiment_flat GROUP BY variant
),
tot AS (SELECT SUM(n) AS total FROM cnt)
SELECT
c.variant, c.n,
ROUND(100.0 * c.n / t.total, 2) AS observed_pct,
50.0 AS expected_pct
FROM cnt c CROSS JOIN tot t;Metrik Pengaman
Metrik pengaman adalah metrik yang tidak boleh memburuk meskipun metrik utama membaik. Metrik pengaman yang umum meliputi latensi halaman, tingkat pengembalian dana, tingkat berhenti berlangganan, dan tingkat galat.
Laporkan metrik tersebut per varian bersama metrik keberhasilan. Perlakuan yang meningkatkan konversi tetapi menggandakan pengembalian dana bukanlah keberhasilan. Menghitung metrik pengaman tanpa diminta menunjukkan penilaian produk yang baik.
SELECT
variant,
AVG(load_ms) AS avg_latency_ms,
ROUND(100.0 * SUM(refunded) / COUNT(*), 2) AS refund_rate_pct,
ROUND(100.0 * SUM(errored) / COUNT(*), 2) AS error_rate_pct
FROM experiment_flat
GROUP BY variant;Laporan Hasil Lengkap
Laporan hasil eksperimen lengkap yang disukai pewawancara menggabungkan empat hal dalam satu hasil: tingkat per varian, kenaikan relatif, kesimpulan signifikansi, dan pemeriksaan SRM. Susun CTE secara bertingkat dan sajikan semuanya sebagai satu tabel yang siap digunakan untuk mengambil keputusan.
Tutup dengan menyatakan: signifikan, ukuran kenaikan dapat diterima, metrik pengaman sehat, pembagian seimbang, sehingga luncurkan atau tahan.
WITH s AS (
SELECT variant, COUNT(DISTINCT user_id) n,
COUNT(DISTINCT converted_user) c
FROM experiment_flat GROUP BY variant
),
r AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) p1,
MAX(CASE WHEN variant='control' THEN n END) n1,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) p2,
MAX(CASE WHEN variant='treatment' THEN n END) n2
FROM s
)
SELECT
ROUND(100.0*(p2-p1)/p1, 2) AS rel_lift_pct,
CASE WHEN ABS((p2-p1)/SQRT(p1*(1-p1)/n1 + p2*(1-p2)/n2)) >= 1.96
THEN 'significant' ELSE 'not significant' END AS verdict,
CASE WHEN ABS(1.0*n2/(n1+n2) - 0.5) > 0.02
THEN 'SRM warning' ELSE 'split ok' END AS srm_check
FROM r;Pemeriksaan Singkat
Perlakuan menunjukkan kenaikan relatif 25% dalam konversi, tetapi setiap varian hanya memiliki 40 pengguna. Apa kesimpulan yang tepat?
Rangkuman: Kenaikan, Signifikansi, dan Metrik Pengaman
Sekarang Anda dapat mengubah metrik varian mentah menjadi keputusan:
- Bedakan kenaikan absolut (poin) dari kenaikan relatif (persentase).
- Hitung galat baku setiap tingkat dan skor-z dua proporsi sebagai sinyal kasar signifikansi (|z| >= 1.96 ~ 95%).
- Lakukan pemeriksaan SRM untuk memastikan pembagian sesuai dengan rancangan.
- Laporkan metrik pengaman agar keberhasilan tidak menyembunyikan kemunduran.
- Sajikan satu laporan hasil yang siap digunakan untuk mengambil keputusan dan selalu kaitkan signifikansi dengan ukuran kenaikan secara praktis.
Dengan demikian, analisis corong dan uji A/B dalam SQL selesai.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Peningkatan, Signifikansi, dan Pengaman dalam SQL” gratis?
Ya — teks lengkap “Peningkatan, Signifikansi, dan Pengaman dalam SQL” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Peningkatan, Signifikansi, dan Pengaman dalam SQL”?
Menghitung peningkatan konversi dan pemeriksaan data yang menandai eksperimen yang bermasalah. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?
Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Peningkatan, Signifikansi, dan Pengaman dalam SQL” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?
Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membangun Corong Multi-Langkah
- Kejadian Berurutan dan Jendela Waktu
- Penetapan Uji A/B dan Metrik
- Peningkatan, Signifikansi, dan Pengaman dalam SQL