Multiple Comparison: Bahaya Menguji 20 Segmen Sekaligus
Blog/Tips & Trik/Multiple Comparison: Bahaya Menguji 20 Segmen Sekaligus

Multiple Comparison: Bahaya Menguji 20 Segmen Sekaligus

BimaBima
·30 Juli 2025·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Multiple comparison adalah masalah yang muncul waktu kamu nguji banyak hipotesis dari satu data, karena tiap uji tambahan naikin peluang dapat temuan palsu. Dengan ambang 5 persen dan 20 uji yang saling bebas, peluang minimal satu hasil palsu keluar jadi 64 persen. Koreksi paling gampang adalah Bonferroni, yaitu bagi ambang 0,05 sama jumlah uji yang kamu jalanin.

Multiple comparison adalah masalah yang muncul waktu kamu nguji banyak hipotesis dari satu data, karena tiap uji tambahan naikin peluang dapat temuan palsu.

Ini kejadian yang mukanya paling ramah. Kamu pecah hasil kampanye ke 20 segmen, satu keluar signifikan, dan rapatnya langsung seru.

Padahal peluang dapat minimal satu temuan palsu di situ 64 persen. Aku bakal tunjukin angkanya dari mana dan gimana ngoreksinya tanpa ribet.

Apa itu multiple comparison problem?

Multiple comparison problem adalah naiknya peluang temuan palsu waktu kamu nguji banyak hipotesis dari satu kumpulan data. Tiap uji punya peluang salah sendiri sebesar ambang yang kamu pakai, biasanya 5 persen. Peluang itu numpuk kalau ujinya banyak, jadi hasil yang keliatan meyakinkan bisa muncul dari kebetulan doang.

Istilah lain yang sering dipakai: multiplicity, atau look-elsewhere effect di fisika. Semuanya nunjuk hal yang sama.

Kalau kamu belum kenal ambang 5 persen ini datangnya dari mana, baca dulu p-value biar bagian berikutnya nyambung.

Kenapa nguji 20 segmen bikin temuan palsu?

Hitungannya sederhana. Kalau nggak ada beda sama sekali di data, satu uji punya peluang 5 persen ngeluarin hasil signifikan palsu. Artinya peluang dia bener-bener bersih 95 persen. Buat 20 uji yang saling bebas, peluang semuanya bersih adalah 0,95 pangkat 20, yaitu 35,8 persen.

Sisanya, 64,2 persen, adalah peluang minimal satu segmen keluar signifikan padahal nggak ada apa-apa.

Aku ngetes ini pakai simulasi. Aku bikin data acak yang dijamin nggak punya beda apa pun antara dua kelompok, terus nguji 20 segmen sekaligus, dan aku ulang 1.000 kali. Hasilnya: 636 dari 1.000 percobaan ngeluarin minimal satu segmen dengan p di bawah 0,05. Rata-rata p-value terkecil di tiap percobaan cuma 0,048.

Angka 636 itu nempel banget sama hitungan teorinya, 64,2 persen. Jadi ini bukan kasus langka. Ini yang bakal kamu alami tiap kali mecah data cukup halus.

Berapa peluang temuan palsu kalau ujinya nambah?

Ini tabel yang aku tempel di dekat meja. Semua pakai ambang 5 persen dan uji yang saling bebas.

Jumlah ujiPeluang minimal 1 temuan palsu
15,0%
522,6%
1040,1%
2064,2%
5092,3%

Di angka 50 uji, kamu hampir dijamin nemu sesuatu. Dan 50 uji itu gampang banget kecapai: 5 metrik dikali 10 segmen udah 50.

Yang bikin ini berbahaya, kamu jarang sadar lagi ngelakuinnya. Klik filter dashboard 12 kali sambil nyari pola itu 12 uji, walau nggak ada satu pun yang kamu tulis sebagai hipotesis.

Gimana cara koreksi multiple comparison?

Ada tiga cara yang paling kepakai. Pilih sesuai seberapa mahal akibat salah.

MetodeCara kerjaCocok buat
BonferroniBagi ambang sama jumlah ujiUji sedikit, akibat salah mahal
Holm-BonferroniAmbang bertingkat dari p terkecilPengganti Bonferroni yang selalu lebih longgar
Benjamini-HochbergNgatur proporsi temuan palsuPuluhan sampai ratusan uji penjelajahan

Bonferroni paling gampang. Ambang 0,05 dibagi 20 uji jadi 0,0025. Cuma p-value di bawah itu yang kamu anggap nyata. Kelemahannya, dia ketat, jadi efek nyata yang kecil sering kelewat.

Holm-Bonferroni ngurutin p-value dari kecil ke besar, lalu ngasih ambang 0,05 dibagi 20 buat yang pertama, 0,05 dibagi 19 buat yang kedua, dan seterusnya. Hasilnya selalu sama ketat atau lebih longgar dari Bonferroni, jadi nggak ada alasan buat nggak pakai ini.

Benjamini-Hochberg ngatur hal yang beda. Dia nggak nahan semua temuan palsu, tapi ngejaga proporsinya di antara yang kamu nyatain signifikan, misalnya maksimal 10 persen. Ini masuk akal buat penjelajahan awal yang hasilnya bakal kamu uji ulang.

Di Python, ketiganya nggak perlu kamu hitung tangan:

from scipy.stats import false_discovery_control

p = [0.031, 0.048, 0.12, 0.21, 0.33]
p_adj = false_discovery_control(p, method='bh')
print(p_adj)

Fungsi ini ada sejak SciPy 1.11. Penjelasan parameternya di dokumentasi scipy false_discovery_control.

Contoh kasus: 20 segmen pelanggan toko_berkah

Toko_berkah nguji promo bundling ke 4.000 pelanggan, separuh dapat promo dan separuh nggak. Hasil totalnya: beda tingkat belanjanya cuma 0,4 poin persen dengan p-value 0,58. Nggak ada apa-apa.

Tim marketing nggak puas, terus mecah hasilnya ke 20 segmen: 5 kota dikali 4 kelompok umur. Dari 20 segmen itu, satu keluar cantik. Pelanggan Bekasi umur 25 sampai 34 naik 6,1 poin persen dengan p-value 0,031.

Kelihatan meyakinkan. Tapi coba masukin ke koreksi.

Cara bacaAmbangp = 0,031
Tanpa koreksi0,05Signifikan
Bonferroni (20 uji)0,0025Nggak signifikan
Holm, urutan pertama0,0025Nggak signifikan
Benjamini-Hochberg, urutan pertama0,0025Nggak signifikan

Ketiga koreksi ngasih jawaban yang sama. Temuan Bekasi itu sama persis dengan yang aku dapat di simulasi data acak tadi, di mana rata-rata p terkecil dari 20 uji ada di 0,048.

Yang bener dilakukan tim toko_berkah: perlakuin temuan itu sebagai dugaan, bukan kesimpulan. Jalanin kampanye kedua khusus ke segmen Bekasi umur 25 sampai 34, dengan satu hipotesis, satu uji. Kalau tetap naik, baru itu temuan.

Kapan koreksi nggak perlu dipakai?

Nggak semua analisis butuh koreksi. Tiga situasi ini aman.

  1. Kamu punya satu hipotesis utama yang ditulis sebelum lihat data. Satu uji, nggak ada yang numpuk.
  2. Kamu lagi ngejelajah tanpa niat nyimpulin. Boleh lihat 50 grafik, asal hasilnya kamu tandai sebagai bahan uji berikutnya.
  3. Kamu ngelaporin ukuran efek dan rentang ketidakpastiannya, bukan lolos atau nggak lolos ambang. Cara ini lebih jujur nampilin seberapa goyang angkanya.

Patokan gampangnya: kalau kamu bakal senang dengan hasil apa pun yang muncul, kamu butuh koreksi. Kalau kamu udah nulis hasil apa yang kamu harapin sebelum ngeklik, kamu aman. Ini juga alasan kenapa desain A/B testing minta kamu nentuin metrik utama di depan.

Kesalahan umum soal multiple comparison

1. Nyari segmen sampai ketemu yang signifikan. Ini praktik yang bikin laporan jadi alat pembenaran. Tentuin segmen sebelum lihat hasil.

2. Nggak ngitung uji yang nggak ditulis. Ngeklik filter dashboard berkali-kali tetap kehitung uji, walau nggak ada di laporan.

3. Pakai Bonferroni buat 500 uji. Ambangnya jadi 0,0001 dan hampir nggak ada yang lolos. Buat jumlah segitu, Benjamini-Hochberg lebih masuk akal.

4. Nganggap koreksi bikin temuan jadi bener. Koreksi cuma ngurangin peluang salah tipe satu. Dia nggak nyelesaiin data yang bias atau sampel yang timpang.

5. Ngerayain segmen kecil. Segmen dengan 40 orang punya angka yang goyang. Cek jumlah datanya sebelum percaya persentasenya.

FAQ

Multiple comparison problem itu apa?

Multiple comparison problem adalah naiknya peluang temuan palsu waktu kamu nguji banyak hipotesis dari satu kumpulan data. Tiap uji punya peluang salah sendiri, dan peluang itu numpuk. Dengan ambang 5 persen dan 20 uji yang saling bebas, peluang minimal satu hasil palsu keluar udah 64 persen. Jadi temuan yang kamu dapat belum tentu nyata, walau p-value-nya keliatan kecil.

Kapan aku perlu koreksi multiple comparison?

Perlu kalau kamu nguji banyak segmen, banyak metrik, atau banyak varian sekaligus lalu ngambil kesimpulan dari mana pun yang keluar signifikan. Nggak perlu kalau kamu udah nentuin satu hipotesis utama sebelum lihat data dan cuma nguji itu. Patokan gampangnya: kalau kamu bakal senang dengan hasil apa pun yang muncul, kamu butuh koreksi.

Gimana cara pakai koreksi Bonferroni?

Bagi ambang signifikansimu sama jumlah uji yang kamu jalanin. Kalau ambangmu 0,05 dan kamu nguji 20 segmen, ambang barunya 0,05 dibagi 20 sama dengan 0,0025. Cuma p-value di bawah angka itu yang kamu anggap signifikan. Cara ini gampang dihitung dan aman, tapi ketat, jadi temuan nyata yang efeknya kecil bisa kelewat.

Apa bedanya Bonferroni sama Benjamini-Hochberg?

Bonferroni nahan peluang ada satu pun temuan palsu, jadi ambangnya sama ketat buat semua uji. Benjamini-Hochberg ngatur proporsi temuan palsu di antara yang kamu nyatain signifikan, jadi ambangnya bertingkat dan lebih longgar. Bonferroni cocok kalau salah satu temuan palsu aja udah mahal akibatnya. Benjamini-Hochberg cocok buat penjelajahan dengan ratusan uji.

Kalau segmennya saling berhubungan, hitungannya masih berlaku?

Angka 64 persen tadi berlaku buat uji yang saling bebas. Kalau segmenmu tumpang tindih, misalnya kota Bekasi juga masuk segmen Jabodetabek, peluang temuan palsunya lebih rendah dari itu tapi tetap jauh di atas 5 persen. Jadi arahnya nggak berubah. Kamu tetap perlu koreksi, cuma Bonferroni bakal terasa lebih ketat dari yang dibutuhkan.

Tulis dulu, baru ngeklik

Dua hal yang perlu nempel: 20 uji bikin peluang temuan palsu naik ke 64 persen, dan Bonferroni cuma butuh satu pembagian buat ngoreksinya.

Sebelum kamu buka dashboard besok, tulis di kertas satu segmen dan satu metrik yang mau kamu cek. Sisanya perlakuin sebagai bahan uji lanjutan, bukan kesimpulan.

Lanjut baca uji hipotesis buat dasar cara bacanya, atau glossary segmentation buat mikirin pembagi mana yang layak diuji.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Pandas to_excel: Ekspor DataFrame ke Excel (2026)
Tips & Trik
18 Juli 2026•8 menit baca

Pandas to_excel: Ekspor DataFrame ke Excel (2026)

to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.

BimaBima
Pandas read_excel: Baca File Excel di Python
Tips & Trik
16 Juli 2026•8 menit baca

Pandas read_excel: Baca File Excel di Python

pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.

BimaBima
Pandas read_csv: Baca File CSV di Python untuk Analis
Tips & Trik
14 Juli 2026•8 menit baca

Pandas read_csv: Baca File CSV di Python untuk Analis

pandas read_csv baca file CSV jadi DataFrame siap olah cuma satu baris kode. Ini cara pakai plus parameter penting kayak sep, encoding, dan usecols dengan contoh data toko.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore