Sepanjang Section ini kita menemukan banyak hal: hubungan cabang dan kepuasan, perbedaan nilai transaksi antar kelompok, segmen pelanggan yang menonjol. Temuan eksploratif seperti itu adalah bahan mentah yang berharga, tetapi ada satu sifat data yang selalu mengintai: bila kita menggali cukup dalam dan cukup lama, sesuatu yang “signifikan” hampir pasti muncul — termasuk dari data yang sama sekali tidak berpola. Analisis konfirmasi adalah disiplin yang menjaga kita dari menipu diri sendiri: dugaan dirumuskan lebih dulu, rencana ujinya dikunci, lalu data dibuka dan keputusan diambil apa adanya. Pada chapter ini kita membedah bedanya analisis eksploratif dan konfirmatif, melihat betapa mudahnya menambang signifikansi palsu, lalu menjalankan satu uji hipotesis yang terencana dari awal sampai keputusan akhir.

Eksploratif vs Konfirmatif: Dua Fase dengan Aturan Berbeda #

Kedua jenis analisis memakai alat yang sama — pandas, uji-t, chi-square — tetapi memakainya dalam semangat yang berbeda. Analisis eksploratif bertujuan menemukan pola: kita bebas memotong-motong data, mencoba grafik, dan menghitung apa saja, karena keluarannya bukan kesimpulan melainkan kandidat hipotesis. Analisis konfirmatif bertujuan menguji dugaan: pertanyaan dan metode sudah dikunci lebih dulu, dan hasil ujinya menjadi keputusan.

AspekAnalisis eksploratifAnalisis konfirmatif
Tujuanmenemukan pola dan anomalimenguji dugaan yang sudah dirumuskan
Kapan hipotesis terbentuksetelah melihat datasebelum data dibuka
Posisi uji statistikpenyaring — hasilnya hipotesis barupemutus — hasilnya keputusan
Keluarandaftar kandidat temuankesimpulan yang layak dilaporkan
Kebebasan menganalisisluas: silakan coba segalanyasempit: ikuti rencana yang dikunci

Keduanya sama-sama sah dan sama-sama perlu — hampir semua analisis nyata dimulai eksploratif lalu ditutup konfirmatif. Yang berbahaya adalah mencampurnya diam-diam: menjelajah dulu, menemukan pola, lalu merumuskan hipotesis seolah-olah sudah dirancang sejak awal dan mengujiinya pada data yang sama. Praktik itu punya nama: HARKing (Hypothesizing After the Results are Known) — hipotesis dibuat setelah hasil diketahui. Uji yang tampak meyakinkan itu sebenarnya tidak menguji apa-apa, karena polanya sudah terlihat di data yang dipakai menguji.

Menambang Signifikansi: Data Dredging #

Kerabat dekat HARKing adalah data dredging — menggali data dengan puluhan uji, berbagai potongan, dan banyak definisi metrik, lalu melaporkan yang signifikan saja. Ambang 0,05 berarti tiap uji membawa peluang sekitar 5% menemukan “perbedaan” pada data yang sama sekali acak. Peluang itu tampak kecil, tetapi melipat: dengan 30 uji yang saling bebas, peluang sekurang-kurangnya satu temuan palsu adalah 1 - 0.95^30 — sekitar 78,5%. Kita buktikan dengan simulasi kecil yang sepenuhnya deterministik:

python
import numpy as np
from scipy.stats import ttest_ind

rng = np.random.default_rng(42)

temuan_palsu = 0
for uji_ke in range(1, 31):
    grup_a = rng.normal(50, 10, 20)
    grup_b = rng.normal(50, 10, 20)
    hasil = ttest_ind(grup_a, grup_b)
    if hasil.pvalue < 0.05:
        temuan_palsu += 1
        print("Uji no. %2d: p-value %.4f -> tampak 'signifikan'" % (uji_ke, hasil.pvalue))

print()
print("Dari 30 uji pada data murni acak,", temuan_palsu, "yang lolos ambang 0.05")

Output yang Dihasilkan:

text
Uji no. 22: p-value 0.0064 -> tampak 'signifikan'
Uji no. 23: p-value 0.0495 -> tampak 'signifikan'

Dari 30 uji pada data murni acak, 2 yang lolos ambang 0.05

Bedah kode dan hasilnya:

  1. np.random.default_rng(42) membuat generator angka acak dengan benih tetap — setiap kali dijalankan, urutan angkanya identik, sehingga simulasi ini bisa direproduksi persis.
  2. rng.normal(50, 10, 20) membuat 20 nilai acak berdistribusi normal dengan pusat 50. Dua grup dibuat dari mesin acak yang sama, jadi secara konstruksi tidak ada perbedaan apa pun antar keduanya.
  3. ttest_ind(grup_a, grup_b) menguji dua grup itu; hasil.pvalue diambil langsung dari objek hasil. Uji ke-22 dan ke-23 menghasilkan p-value 0,0064 dan 0,0495 — di bawah ambang 0,05.
  4. Pembacaannya mengganggu: bila kita menjalankan 30 uji pada data yang benar-benar tanpa pola, dua di antaranya akan tampak sebagai temuan. Bayangkan seorang analis yang menguji 30 potongan segmen pelanggan lalu hanya melaporkan dua yang “signifikan” — laporan itu akan terlihat meyakinkan, padahal isinya ulir acak.

Pra-Pendaftaran: Mengunci Rencana Sebelum Data Dibuka #

Penawar HARKing dan data dredging sederhana: tuliskan rencana uji sebelum data dibuka, lalu patuhi. Praktik ini dikenal sebagai pra-pendaftaran (pre-registration). Isinya tidak panjang — satu halaman cukup:

Elemen kartu rencanaIsian pada kasus kita
PertanyaanApakah member klub kopi bertransaksi lebih besar daripada non-member?
Hipotesis nolRata-rata transaksi member sama dengan non-member
Hipotesis alternatifRata-rata transaksi member lebih besar
Metrik primerNilai transaksi per kunjungan (ribu rupiah)
Metode ujiUji-t Welch, satu sisi, ambang 0,05
Cakupan data12 transaksi member dan 12 non-member, Januari 2026

Dua hal membuat kartu seperti ini bekerja. Pertama, metrik primer tunggal: dengan satu metrik yang dijanjikan, kita tidak bisa berbelok ke metrik lain ketika yang utama gagal. Kedua, jejak waktu: kirim kartu itu ke rekan kerja, simpan di repositori dengan tanggal, atau gunakan fitur rencana eksperimen pada platform A/B — yang penting ada bukti rencana mendahului data.

Menjalankan Uji yang Terencana #

Sekarang kita jalankan kartu rencana di atas dari atas ke bawah — kartu dicetak, data dibuka, uji dijalankan, keputusan diambil sesuai ambang yang sudah dikunci:

python
from scipy.stats import ttest_ind

kartu_rencana = {
    "pertanyaan": "Apakah member klub kopi bertransaksi lebih besar?",
    "hipotesis_nol": "Rata-rata transaksi member = rata-rata non-member",
    "hipotesis_alter": "Rata-rata transaksi member > rata-rata non-member",
    "metrik_primer": "nilai transaksi per kunjungan (ribu rupiah)",
    "metode_uji": "uji-t Welch, satu sisi (alternative='greater')",
    "ambang_alpha": 0.05,
}
for kunci, isi in kartu_rencana.items():
    print("%-15s: %s" % (kunci, isi))
print()

transaksi_member = [51, 44, 47, 53, 40, 49, 55, 42, 48, 46, 38, 52]
transaksi_non = [45, 39, 50, 42, 46, 37, 44, 48, 36, 43, 49, 41]

hasil = ttest_ind(transaksi_member, transaksi_non, equal_var=False, alternative="greater")
rata_member = sum(transaksi_member) / len(transaksi_member)
rata_non = sum(transaksi_non) / len(transaksi_non)

print("Rata-rata member    : %.2f ribu rupiah" % rata_member)
print("Rata-rata non-member: %.2f ribu rupiah" % rata_non)
print("Selisih             : %.2f ribu rupiah" % (rata_member - rata_non))
print("t = %.3f, p = %.4f" % (hasil.statistic, hasil.pvalue))
print()
if hasil.pvalue < kartu_rencana["ambang_alpha"]:
    print("Keputusan: tolak hipotesis nol - member bertransaksi lebih besar")
else:
    print("Keputusan: gagal menolak hipotesis nol - bukti belum cukup")

Output yang Dihasilkan:

text
pertanyaan     : Apakah member klub kopi bertransaksi lebih besar?
hipotesis_nol  : Rata-rata transaksi member = rata-rata non-member
hipotesis_alter: Rata-rata transaksi member > rata-rata non-member
metrik_primer  : nilai transaksi per kunjungan (ribu rupiah)
metode_uji     : uji-t Welch, satu sisi (alternative='greater')
ambang_alpha   : 0.05

Rata-rata member    : 47.08 ribu rupiah
Rata-rata non-member: 43.33 ribu rupiah
Selisih             : 3.75 ribu rupiah
t = 1.855, p = 0.0387

Keputusan: tolak hipotesis nol - member bertransaksi lebih besar

Bedah kode dan hasilnya:

  1. kartu_rencana dicetak lebih dulu — bukan sekadar gaya. Mencetak rencana di awal keluaran membuat urutan “rencana dulu, data kemudian” terlihat jelas oleh siapa pun yang membaca hasilnya.
  2. alternative="greater" memilih uji satu sisi: hipotesis alternatif kita memang searah — member lebih besar, bukan sekadar berbeda. Arah ini bagian dari rencana dan tidak boleh dipilih setelah melihat data, karena uji satu sisi lebih mudah menghasilkan p-value kecil.
  3. equal_var=False kembali memilih ragam Welch, dan alasannya tercatat di kartu — metode dipilih sebelum data, bukan dicoba-coba.
  4. Keputusan membaca kartu_rencana["ambang_alpha"], bukan ambang yang ditulis ulang di tempat lain. p-value 0,0387 di bawah ambang 0,05: kita menolak hipotesis nol dengan bukti yang moderat, selisih praktisnya 3,75 ribu rupiah per transaksi.

Sekarang bagian yang paling menguji karakter: bayangkan hasilnya p = 0,07. Tidak ada jalan memutar — metrik lain tidak boleh dirogoh, periode tidak boleh diperpanjang, dan uji dua sisi tidak boleh ditukar ke satu sisi. Keputusannya satu kalimat: bukti belum cukup, dan hasil negatif itu layak dilaporkan. Kebiasaan memendam hasil negatif — dikenal sebagai masalah file drawer — membuat organisasi dan literatur hanya menyimpan temuan “berhasil”, dan tim lain akan mengulang eksperimen yang sama hanya untuk menemukan kegagalan yang sama. Laporan konfirmatif yang jujur melaporkan dua arah.

Rangkuman #

  • Analisis eksploratif menghasilkan kandidat hipotesis; analisis konfirmatif menguji dugaan yang dirumuskan sebelumnya — alatnya sama, aturan mainnya berbeda.
  • HARKing (merumuskan hipotesis setelah hasil diketahui) dan data dredging (menguji banyak potongan lalu melaporkan yang signifikan saja) menghasilkan temuan palsu yang tampak meyakinkan; simulasi kita memperlihatkan 2 dari 30 uji acak murni lolos ambang 0,05.
  • Pra-pendaftaran mengunci pertanyaan, hipotesis, metrik primer tunggal, metode uji, dan ambang sebelum data dibuka; jejak waktu membuat rencana itu bisa diverifikasi.
  • Uji yang terencana diakhiri keputusan yang mengikuti rencana — termasuk melaporkan hasil negatif apa adanya.

Konfirmasi menjaga kesimpulan kita dari kebetulan ulir acak. Namun setiap keputusan tadi tetap berdiri di atas pilihan-pilihan: bagaimana outlier diperlakukan, bagaimana metrik didefinisikan, periode data mana yang dipakai. Seberapa kokoh kesimpulan bila pilihan-pilihan itu diganti? Pertanyaan itulah yang dijawab analisis sensitivitas pada chapter berikutnya. Lanjut ke chapter Analisis Sensitivitas .

Referensi #

  1. SciPy — scipy.stats
  2. NumPy — The absolute basics for beginners