Statistik Deskriptif I:
Ukuran Pemusatan & Penyebaran
Sebelum menganalisis data, kita perlu "mengenal" data kita terlebih dulu. Statistik deskriptif adalah cara kita memperkenalkan diri pada data — seperti bertanya "berapa rata-ratanya? seberapa bervariasi nilainya? adakah yang ekstrem?"
1. Peran Statistik Deskriptif
Statistik deskriptif adalah sekumpulan metode untuk merangkum dan menggambarkan karakteristik utama sebuah dataset — tanpa menarik kesimpulan lebih jauh (itu tugas statistik inferensi di sesi 4–5).
Bayangkan seorang guru menerima 500 lembar nilai ujian. Tidak mungkin memahaminya satu per satu. Statistik deskriptif seperti membuat rapor ringkas: nilai tertinggi berapa? terendah berapa? rata-rata kelas berapa? ada yang sangat jauh dari rata-rata?
Tanpa statistik deskriptif, kita seperti membaca kamus kata per kata — tidak mendapat gambaran keseluruhan. Statistik deskriptif memberi kita "foto" dari data.
Ukuran Pemusatan → Di mana "pusat" / "nilai tengah" data berada? (mean, median, modus)
Ukuran Penyebaran → Seberapa "menyebar" data dari pusatnya? (range, variance, std, IQR)
2. Ukuran Pemusatan: Mean, Median, Modus
Ketiga ukuran ini sama-sama menjawab pertanyaan: "Nilai mana yang paling mewakili keseluruhan data?" — tetapi dengan cara yang berbeda.
Sebuah startup punya 9 karyawan bergaji Rp 4–5 juta, dan 1 CEO bergaji Rp 50 juta.
🔴 Mean (rata-rata): (9×4,5 + 50) / 10 = Rp 9,05 juta → Terdengar besar,
tapi tidak mewakili karyawan biasa karena "ditarik" oleh gaji CEO.
🟡 Median (nilai tengah): Rp 4,5 juta → Lebih jujur menggambarkan gaji
"karyawan biasa".
🟢 Modus (paling sering): Rp 4 juta atau 5 juta → Gaji yang paling banyak orang terima.
Contoh Manual: Data Nilai Ujian
Data: 70, 75, 78, 80, 82, 82, 85, 88, 90, 95 (n = 10, sudah terurut)
Mean: Data gaji pegawai negeri (distribusi normal, tidak ada outlier besar)
Median: Data harga rumah, data gaji swasta (selalu ada outlier kaya raya)
Modus: "Ukuran baju apa yang paling laris?" — data kategorikal/diskrit
3. Ukuran Penyebaran
Dua dataset bisa memiliki mean yang sama persis tapi karakteristik yang sangat berbeda. Itulah mengapa kita perlu ukuran penyebaran.
Kelas A: nilai ujian = 75, 76, 77, 78, 79 → Rata-rata 77, semua hampir sama
Kelas B: nilai ujian = 50, 60, 77, 90, 108 → Rata-rata 77 juga, tapi sangat bervariasi!
Mean saja tidak cukup. Kita perlu tahu "seberapa berpencar" data dari mean-nya. Itulah fungsi ukuran penyebaran — seperti tahu apakah tim bola kaki terdiri dari pemain yang seragam kemampuannya, atau sangat tidak merata.
3.1 Range (Jangkauan)
Ukuran termudah: Range = Nilai Maksimum − Nilai Minimum.
Data: 70, 75, 78, 82, 95
Range = 95 − 70 = 25
⚠️ Kelemahan: Hanya memperhatikan dua nilai (max dan min). Rentan dipengaruhi outlier.
3.2 Variance & Standar Deviasi
Ini adalah ukuran penyebaran yang paling umum digunakan.
Bayangkan 10 orang memanah target. Mean = rata-rata posisi semua anak panah. Standar Deviasi = seberapa "berpencar" anak panah dari rata-rata itu.
SD kecil → semua anak panah berkumpul rapat (konsisten)
SD besar → anak panah berserakan ke mana-mana (tidak konsisten)
Contoh Perhitungan Manual (Sederhana)
Data: 4, 6, 8, 10, 12 → Mean = 8
| xᵢ | xᵢ − x̄ | (xᵢ − x̄)² |
|---|---|---|
| 4 | 4 − 8 = −4 | 16 |
| 6 | 6 − 8 = −2 | 4 |
| 8 | 8 − 8 = 0 | 0 |
| 10 | 10 − 8 = 2 | 4 |
| 12 | 12 − 8 = 4 | 16 |
| Jumlah (Σ) | 40 | |
Variance = 40 / (5−1) = 40/4 = 10
Standar Deviasi = √10 ≈ 3.16
Artinya: nilai-nilai data rata-rata berjarak ≈3.16 dari mean (8).
3.3 Interquartile Range (IQR)
IQR adalah ukuran penyebaran yang tidak terpengaruh outlier — karena hanya memperhatikan 50% data tengah.
IQR = Q3 − Q1
Di mana Q1 = Kuartil pertama (25%) dan Q3 = Kuartil ketiga (75%)
Visualisasi distribusi data dalam kuartil:
↔ IQR = Rentang antara Q1 dan Q3 (50% data tengah) ↔
4. Ukuran Posisi: Kuartil, Desil, Persentil
Ukuran posisi memberitahu kita di mana posisi suatu nilai relatif terhadap keseluruhan data.
Nilai UN Anda 85. Apakah itu bagus? Bergantung! Jika berada di persentil ke-90, artinya Anda lebih tinggi dari 90% peserta lain — itu luar biasa. Jika persentil ke-40, berarti lebih dari separuh peserta nilainya di atas Anda.
| Ukuran | Pembagian | Notasi | Contoh |
|---|---|---|---|
| Kuartil | 4 bagian sama besar (25% tiap bagian) | Q1, Q2, Q3 | Q1=nilai batas bawah 25% data terendah |
| Desil | 10 bagian sama besar (10% tiap bagian) | D1, D2, ..., D9 | D5 = sama dengan median (50%) |
| Persentil | 100 bagian sama besar (1% tiap bagian) | P1, P2, ..., P99 | P90 = nilai yang melampaui 90% data lainnya |
WHO menggunakan persentil tinggi badan untuk menilai pertumbuhan anak:
• Anak di persentil ke-50: tinggi rata-rata untuk usianya
• Anak di persentil ke-95: sangat tinggi (lebih dari 95% anak seusianya)
• Anak di persentil ke-5: pendek — mungkin butuh perhatian medis
5. Pengaruh Outlier terhadap Statistik
Outlier adalah nilai yang sangat jauh dari nilai-nilai lainnya dalam dataset. Outlier bisa mengacaukan analisis kita jika tidak ditangani dengan benar.
Sekelas mahasiswa punya berat rata-rata 60 kg. Tiba-tiba kita memasukkan data seorang pegulat profesional 150 kg. Rata-rata kelas naik drastis — tapi itu tidak merepresentasikan mahasiswa lain sama sekali.
Median dan IQR tidak terpengaruh outlier ini, tapi mean dan variance sangat terpengaruh. Itulah mengapa penting memilih ukuran yang tepat!
Deteksi Outlier dengan Metode IQR (Pagar/Fence)
Batas Bawah = Q1 − 1.5 × IQR
Batas Atas = Q3 + 1.5 × IQR
Nilai di luar batas ini diklasifikasikan sebagai outlier.
| Ukuran Statistik | Terpengaruh Outlier? | Solusi |
|---|---|---|
| Mean | ✗ Sangat terpengaruh | Gunakan median sebagai gantinya |
| Median | ✓ Tidak terpengaruh | Aman digunakan saat ada outlier |
| Standar Deviasi | ✗ Sangat terpengaruh | Gunakan IQR sebagai gantinya |
| IQR | ✓ Tidak terpengaruh | Pilihan terbaik saat ada outlier |
6. Praktik: Statistik Deskriptif dengan Python
6.1 Dataset: Nilai Mahasiswa ISTN
import numpy as np
import pandas as pd
# Dataset: nilai UAS 20 mahasiswa Data Sains
nilai = [78, 85, 92, 67, 88, 74, 95, 81, 70, 83,
76, 89, 55, 91, 73, 86, 98, 79, 82, 77]
s = pd.Series(nilai) # buat Series Pandas
# ─── UKURAN PEMUSATAN ─────────────────────────────
print("═══ UKURAN PEMUSATAN ═══")
print(f"Mean (Rata-rata) : {s.mean():.2f}")
print(f"Median (Nilai Tengah): {s.median():.2f}")
print(f"Modus (Terbanyak) : {s.mode()[0]}")
# ─── UKURAN PENYEBARAN ────────────────────────────
print("\n═══ UKURAN PENYEBARAN ═══")
print(f"Nilai Min : {s.min()}")
print(f"Nilai Max : {s.max()}")
print(f"Range : {s.max() - s.min()}")
print(f"Variance : {s.var():.2f}")
print(f"Std Deviasi : {s.std():.2f}")
# ─── UKURAN POSISI ────────────────────────────────
Q1 = s.quantile(0.25)
Q3 = s.quantile(0.75)
IQR = Q3 - Q1
print("\n═══ UKURAN POSISI ═══")
print(f"Q1 (Kuartil 1 / 25%) : {Q1}")
print(f"Q2 (Median / 50%) : {s.quantile(0.50)}")
print(f"Q3 (Kuartil 3 / 75%) : {Q3}")
print(f"IQR (Q3 - Q1) : {IQR}")
# ─── DETEKSI OUTLIER ──────────────────────────────
batas_bawah = Q1 - 1.5 * IQR
batas_atas = Q3 + 1.5 * IQR
outlier = s[(s < batas_bawah) | (s > batas_atas)]
print("\n═══ DETEKSI OUTLIER (Metode IQR) ═══")
print(f"Batas Bawah (Q1 - 1.5×IQR): {batas_bawah}")
print(f"Batas Atas (Q3 + 1.5×IQR): {batas_atas}")
print(f"Outlier ditemukan: {outlier.values}")
═══ UKURAN PEMUSATAN ═══
Mean (Rata-rata) : 80.95
Median (Nilai Tengah): 81.50
Modus (Terbanyak) : 78
═══ UKURAN PENYEBARAN ═══
Nilai Min : 55
Nilai Max : 98
Range : 43
Variance : 98.47
Std Deviasi : 9.92
═══ UKURAN POSISI ═══
Q1 (Kuartil 1 / 25%) : 74.75
Q2 (Median / 50%) : 81.50
Q3 (Kuartil 3 / 75%) : 88.25
IQR (Q3 - Q1) : 13.5
═══ DETEKSI OUTLIER (Metode IQR) ═══
Batas Bawah (Q1 - 1.5×IQR): 54.5
Batas Atas (Q3 + 1.5×IQR): 108.5
Outlier ditemukan: [] ← tidak ada outlier!
6.2 Perbandingan: Saat Ada Outlier
# Simulasi: tambahkan outlier ekstrem (nilai 10)
nilai_dengan_outlier = nilai + [10] # satu mahasiswa dapat nilai 10!
s2 = pd.Series(nilai_dengan_outlier)
print("Perbandingan SEBELUM dan SESUDAH ada outlier (nilai=10):\n")
print(f"{'Ukuran':<20} {'Sebelum':>10} {'Sesudah':>10} {'Terpengaruh?':>15}")
print("-" * 58)
print(f"{'Mean':<20} {s.mean():>10.2f} {s2.mean():>10.2f} {'✗ YA, berubah jauh':>15}")
print(f"{'Median':<20} {s.median():>10.2f} {s2.median():>10.2f} {'✓ Stabil':>15}")
print(f"{'Std Deviasi':<20} {s.std():>10.2f} {s2.std():>10.2f} {'✗ YA, naik drastis':>15}")
print(f"{'IQR':<20} {s.quantile(.75)-s.quantile(.25):>10.2f} {s2.quantile(.75)-s2.quantile(.25):>10.2f} {'✓ Relatif stabil':>15}")
Perbandingan SEBELUM dan SESUDAH ada outlier (nilai=10):
Ukuran Sebelum Sesudah Terpengaruh?
----------------------------------------------------------
Mean 80.95 76.52 ✗ YA, berubah jauh
Median 81.50 79.00 ✓ Stabil
Std Deviasi 9.92 17.83 ✗ YA, naik drastis
IQR 13.50 14.00 ✓ Relatif stabil
Penambahan satu nilai outlier (10) membuat mean turun dari 80.95 → 76.52 dan std deviasi hampir dua kali lipat. Sementara itu, median hanya bergeser sedikit dan IQR hampir tidak berubah. Ini membuktikan bahwa median dan IQR lebih "tahan banting" (robust) terhadap outlier.
Uji Pemahaman Sesi 2
- Statistik deskriptif merangkum data menjadi angka-angka ringkas tanpa perlu melihat semua nilai satu per satu
- Mean (sensitif outlier) → gunakan saat data simetris; Median (robust) → gunakan saat ada outlier; Modus → untuk data kategorikal
- Range hanya melihat max−min; Standar Deviasi mengukur rata-rata jarak dari mean; IQR = Q3−Q1, robust terhadap outlier
- Outlier terdeteksi jika nilai < Q1 − 1.5×IQR atau > Q3 + 1.5×IQR
- Persentil menunjukkan posisi relatif: "nilai ini lebih tinggi dari X% data lain"
- Python Pandas: .mean(), .median(), .mode(), .std(), .var(), .quantile() memudahkan semua perhitungan
- Saat ada outlier: gunakan Median dan IQR — bukan Mean dan Std Deviasi