Mode Kegagalan Umum

Survivorship bias, paradoks Simpson, dan cara berpikir yang menyesatkan analisis.

Daftar isi

Analisis yang keliru jarang bermula dari kode yang salah, melainkan dari data yang tidak mewakili pertanyaannya. Topik ini memperkenalkan dua mode kegagalan penalaran yang paling sering menyesatkan, yaitu bias ketahanan (survivorship bias) dan paradoks Simpson, keduanya diperagakan pada data kecil yang dapat dihitung ulang. Setelah membacanya, kedua pola ini dapat dikenali sebelum kesimpulannya terlanjur dilaporkan.

Bias ketahanan: yang hilang tidak terdata#

Bias ketahanan terjadi ketika sampel yang tersedia hanya mencakup entitas yang bertahan, sedangkan entitas yang gagal atau keluar tidak ikut terdata. Analisis kemudian terlihat jujur karena dihitung dari data asli, tetapi pertanyaan yang dijawabnya berbeda dari pertanyaan yang ditanyakan.

Skrip berikut memperagakannya pada program belajar. Lima peserta yang masih aktif meningkat nilainya, sedangkan dua peserta yang keluar justru menurun. Ringkasan yang hanya melihat peserta aktif menghasilkan gambaran yang jauh lebih baik daripada ringkasan yang menyertakan semua peserta.

python mode_kegagalan.py
"""Dua mode kegagalan penalaran: survivorship bias dan paradoks Simpson."""
import numpy as np
import pandas as pd

# ---- bagian 1: survivorship bias -------------------------------------------
# Peserta program belajar yang berhenti tidak ikut diukur.
aktif = pd.DataFrame(
    {
        "peserta": ["Ali", "Budi", "Citra", "Dewi", "Eka"],
        "peningkatan_nilai": [12, 9, 15, 8, 11],
    }
)
keluar = pd.DataFrame({"peserta": ["Farhan", "Gita"], "peningkatan_nilai": [-6, -9]})

print("Rata-rata peningkatan peserta aktif :",
      aktif["peningkatan_nilai"].mean())
print("Rata-rata termasuk yang keluar      :",
      pd.concat([aktif, keluar])["peningkatan_nilai"].mean().round(1))
print()

# ---- bagian 2: paradoks Simpson ---------------------------------------------
# Metode A lebih baik di setiap kelas, tetapi B lebih baik secara agregat
# karena mayoritas peserta B mengikuti kelas dasar yang tingkat keberhasilan-
# nya memang tinggi.
pola = [
    # (kelas, metode, jumlah_peserta, jumlah_berhasil)
    ("dasar", "A", 50, 45),
    ("dasar", "B", 250, 200),
    ("lanjut", "A", 100, 40),
    ("lanjut", "B", 50, 5),
]
baris = []
for kelas, metode, n, sukses in pola:
    baris.append(pd.DataFrame({
        "kelas": [kelas] * n,
        "metode": [metode] * n,
        "berhasil": np.concatenate([np.ones(sukses), np.zeros(n - sukses)]),
    }))
data = pd.concat(baris, ignore_index=True)

per_kelas = data.groupby(["kelas", "metode"])["berhasil"].agg(["count", "sum"])
per_kelas["persen"] = (per_kelas["sum"] / per_kelas["count"] * 100).round(0)
print(per_kelas.to_string())
print()

agregat = data.groupby("metode")["berhasil"].agg(["count", "sum"])
agregat["persen"] = (agregat["sum"] / agregat["count"] * 100).round(1)
print(agregat.to_string())
text Keluaran
Rata-rata peningkatan peserta aktif : 11.0
Rata-rata termasuk yang keluar      : 5.7

               count    sum  persen
kelas  metode                      
dasar  A          50   45.0    90.0
       B         250  200.0    80.0
lanjut A         100   40.0    40.0
       B          50    5.0    10.0

        count    sum  persen
metode                      
A         150   85.0    56.7
B         300  205.0    68.3

Selisih pada bagian pertama keluaran tersebut adalah 11.0 berbanding 5.7, dan selisih itu bukan tanda program gagal, melainkan bukti bahwa pertanyaan “bagaimana hasil peserta aktif” berbeda dari pertanyaan “bagaimana hasil seluruh peserta”. Pertanyaan yang benar ditentukan lebih dahulu, lalu data yang hilang dicari atau kekurangannya dinyatakan terbuka dalam laporan.

Paradoks Simpson: agregat yang membalik#

Paradoks Simpson terjadi ketika arah hubungan pada kelompok kecil berbalik pada agregasinya, dan penyebabnya hampir selalu perbedaan proporsi antar kelompok. Bagian kedua keluaran di atas memperlihatkan pembalikan lengkap. Pada kelas dasar metode A lebih unggul, yaitu 90.0 berbanding 80.0, dan pada kelas lanjut A juga unggul, yaitu 40.0 berbanding 10.0. Namun pada agregat terakhir, metode B yang tampak lebih baik, yaitu 68.3 berbanding 56.7.

Penjelasannya ada pada komposisi. Sebanyak 250 dari 300 peserta metode B mengikuti kelas dasar yang tingkat keberhasilannya memang tinggi, sedangkan mayoritas peserta A berada di kelas lanjut yang lebih sulit. Agregat menimbang dua metode dengan campuran kelas yang berbeda, sehingga perbandingannya tidak sah. Kesimpulan yang benar menyebut komposisinya, misalnya “per kelas, A lebih baik, sedangkan agregat memfavoritkan B karena campuran kelasnya berbeda”.

Pembalikan seperti ini bukan keanehan matematis yang langka, melainkan situasi harian, misalnya perbandingan antar cabang layanan yang melayani segmen pengguna dengan proporsi berbeda. Kebiasaan segmentasi pada modul EDA adalah penangkal pertamanya.

Penangkal yang bisa dijadikan kebiasaan#

Tiga kebiasaan menutup sebagian besar celah kedua mode kegagalan ini. Pertama, selalu tanyakan siapa yang tidak ada di data, karena setiap dataset adalah hasil seleksi dari proses tertentu. Kedua, hancurkan agregat sebelum menyimpulkan, yaitu kelompokkan berdasarkan variabel yang wajar memengaruhi hasil dan bandingkan di dalam kelompoknya. Ketiga, catat komposisi pada setiap laporan agregat, sekecil apa pun laporannya, sehingga pembaca dapat melihat bobot yang mendasari angkanya.

Kekeuh pada rata-rata keseluruhan hampir selalu tanda bahaya. Apabila sebuah kesimpulan hanya bertahan pada agregat dan gugur pada setiap segmennya, kesimpulan itu belum layak dilaporkan.

Kesalahan umum#

Kesalahan pertama adalah menyalahkan kalkulasi ketika hasil terasa aneh. Kedua mode kegagalan di atas dihitung dengan kode yang benar sepenuhnya, dan persis karena itulah keduanya berbahaya. Pemeriksaan yang lebih berguna adalah bertanya apakah sampelnya mewakili dan apakah perbandingannya adil.

Kesalahan kedua adalah membuang baris yang hilang secara diam-diam. Baris peserta yang keluar pada contoh pertama justru membawa informasi terpenting, sehingga perlakuan terhadap data hilang selalu disertai justifikasi sebagaimana dibahas pada modul pembersihan.

Kesalahan ketiga adalah melaporkan agregat tanpa segmentasi karena terlihat lebih sederhana. Kesederhanaan itu dibayar dengan kesimpulan yang salah arah, sedangkan tabel per segmen dengan catatan komposisinya hanya sedikit lebih panjang.

Ringkasan#

  • Bias ketahanan membuat analisis hanya melihat yang bertahan, sehingga hasilnya lebih baik daripada kenyataan.
  • Paradoks Simpson membalik arah kesimpulan saat proporsi antar kelompok berbeda, dan agregatnya memang tidak sah untuk dibandingkan.
  • Penangkalnya adalah bertanya siapa yang hilang dari data, mengurai agregat per segmen, dan mencatat komposisi pada laporan.
  • Kode yang benar tidak menjamin kesimpulan yang benar, karena sumber kekeliruannya ada pada representasi data.

Referensi#