Distribusi, Variansi, dan Korelasi
Kenali kemiringan distribusi dan sebaran lewat std dan var, ukur hubungan antar kolom dengan corr(), dan pahami lewat contoh nyata kenapa korelasi bukan kausalitas.
Bentuk Data Bercerita Lebih dari Rata-rata
Dua kelompok bisa punya rata-rata yang sama tapi cerita yang sangat berbeda. Kelas A semua nilainya 70, kelas B separuh 40 dan separuh 100, rata-ratanya sama-sama 70. Tanpa melihat sebaran (variansi) dan bentuk distribusi (miring ke mana), kamu tidak tahu apa-apa. Statistik deskriptif jilid dua ini mengajarkanmu membaca bentuk data, bukan cuma titik tengahnya.
Untuk data analyst, ini krusial saat membandingkan segmen. "Rata-rata belanja sama" tidak berarti perilakunya sama: satu segmen mungkin konsisten belanja 50 ribu tiap minggu, segmen lain gabungan pembeli 10 ribu dan sultan 500 ribu. Keputusan promonya harus beda, dan kamu hanya tahu itu kalau membaca sebarannya.
Sebaran: var(), std(), dan Kemiringan (skew)
import pandas as pd
konsisten = pd.Series([48, 50, 52, 49, 51]) # belanja stabil
ekstrem = pd.Series([10, 10, 90, 10, 130]) # campur sultan
for nama, s in [("konsisten", konsisten), ("ekstrem", ekstrem)]:
print(nama, "| mean:", s.mean(),
"| std:", round(s.std(), 1),
"| skew:", round(s.skew(), 2))Rata-ratanya sama (50), tapi standar deviasi (std) kelompok ekstrem jauh lebih besar. var() adalah variansi (std kuadrat), std() adalah versi yang satuannya sama dengan data sehingga lebih mudah dibaca. skew() mengukur kemiringan: positif berarti ekor panjang di kanan (segelintir nilai besar), negatif berarti ekor di kiri. Data gaji karyawan biasanya skew positif karena segelintir gaji direktur.
Korelasi dengan corr(): Seberapa Sejalan Dua Kolom
import pandas as pd
df = pd.DataFrame({
"suhu": [30, 32, 35, 28, 33, 36, 31],
"es_krim": [120, 150, 200, 90, 170, 210, 130],
"tenggelam": [3, 4, 7, 2, 5, 8, 3],
})
print(df.corr())corr() menghasilkan matriks korelasi bernilai -1 sampai 1. Mendekati 1 berarti naik bersama (suhu dan penjualan es krim), mendekati -1 berarti berlawanan arah, mendekati 0 berarti tidak ada hubungan linear. Ini cara tercepat menemukan pasangan kolom yang bergerak bersama sebelum kamu menggali lebih dalam.
Catatan teknis:
corr()default memakai metode Pearson yang hanya menangkap hubungan linear. Kalau hubungannya melengkung (misalnya efek diminishing return), pertimbangkanmethod="spearman"yang menangkap hubungan monoton apa pun bentuknya.
Korelasi Bukan Kausalitas: Contoh Es Krim vs Tenggelam
Perhatikan contoh di atas: penjualan es krim dan kasus tenggelam berkorelasi kuat positif. Apakah es krim menyebabkan orang tenggelam? Tentu tidak. Keduanya naik karena variabel ketiga: suhu panas membuat orang beli es krim DAN pergi berenang. Inilah jebakan paling terkenal dalam analisis data.
Contoh nyata di bisnis: jumlah payung terjual berkorelasi dengan kemacetan. Bukan payung bikin macet, tapi hujan menyebabkan keduanya. Sebagai analyst, setiap kali kamu menemukan korelasi kuat, tugasmu berikutnya adalah bertanya: "variabel ketiga apa yang mungkin menjelaskan keduanya?" Jangan pernah menulis "X menyebabkan Y" hanya dari angka korelasi.
Jebakan Umum
SALAH: menyimpulkan kausalitas dari korelasi.
# "Terbukti: es krim meningkatkan risiko tenggelam!" -> salah totalBENAR: laporkan sebagai hubungan, lalu cari penjelasan.
print(df[["es_krim", "tenggelam"]].corr())
# "Keduanya berkorelasi 0.97, kemungkinan karena faktor suhu."SALAH: mengabaikan skew lalu memakai mean dan std begitu saja.
df["gaji"].mean() # di data skew positif, mean menyesatkanBENAR: cek skew() dulu. Kalau |skew| besar, pertimbangkan transformasi log atau ringkas dengan median dan IQR alih-alih mean dan std.
Tantangan
Selidiki Korelasi yang Menyesatkan
Diberikan DataFrame dengan kolom suhu, es_krim, dan tenggelam. Hitung matriks korelasi, identifikasi pasangan dengan korelasi tertinggi, lalu tulis penjelasan satu paragraf: kenapa korelasi tinggi ini bukan bukti kausalitas.