Panduan Lengkap Analisis Statistik Deskriptif dengan Python: Studi Kasus Skor Ujian

Meta Deskripsi: Belajar analisis statistik deskriptif dasar menggunakan Python, Pandas, dan Matplotlib. Pahami cara menghitung mean, median, skewness, dan membuat box plot untuk mengubah data mentah menjadi wawasan.

Target Kata Kunci: analisis statistik deskriptif, python, pandas, matplotlib, data sains, mean, median, mode, skewness, kurtosis, box plot

Apa Itu Analisis Statistik Deskriptif?

Setiap hari, kita dibanjiri oleh data. Tetapi, data mentah hanyalah kumpulan angka yang tidak berarti. Di sinilah analisis statistik deskriptif berperan.

Ini adalah proses menggunakan teknik statistik untuk meringkas dan menggambarkan fitur utama dari sebuah kumpulan data. Tujuannya sederhana: mengubah data yang kompleks menjadi wawasan yang ringkas dan mudah dipahami.

Dalam panduan ini, kita akan melakukan analisis deskriptif lengkap menggunakan tools favorit data scientist: Python, beserta library-nya, Pandas dan Matplotlib.

Data yang Akan Kita Gunakan (Data Dummy)

Untuk studi kasus ini, kita tidak akan menggunakan data medis yang kompleks. Kita akan menggunakan sesuatu yang lebih familiar: skor ujian Matematika dari 15 siswa di kelas fiksi.

Ini adalah data mentah kita: [82, 75, 90, 88, 92, 75, 68, 85, 85, 95, 78, 65, 88, 90, 80]

Tugas kita adalah menganalisis skor ini untuk memahami performa kelas secara keseluruhan.

Langkah 1: Persiapan (Setup Library dan Data)

Pertama, kita siapkan tools kita. Kita akan menggunakan Pandas untuk menghitung statistik dan Matplotlib untuk membuat visualisasi.

# Import library yang dibutuhkan
import pandas as pd
import matplotlib.pyplot as plt

# Dataset dummy kita
data = [82, 75, 90, 88, 92, 75, 68, 85, 85, 95, 78, 65, 88, 90, 80]

# Ubah data list menjadi DataFrame Pandas
# Kita beri nama kolomnya 'Skor_Ujian'
df = pd.DataFrame(data, columns=['Skor_Ujian'])

# Tampilkan 5 data pertama
print(df.head())

Langkah 2: Menghitung Ukuran Pemusatan Data

Bagian pertama dari analisis kita adalah mencari "pusat" dari data. Di mana sebagian besar nilai berkumpul? Kita akan menggunakan tiga ukuran utama:

  • Mean: Rata-rata dari semua skor.

  • Median: Nilai tengah setelah data diurutkan.

  • Mode: Nilai yang paling sering muncul.

# 1. Ukuran Pemusatan Data
mean_skor = df['Skor_Ujian'].mean()
median_skor = df['Skor_Ujian'].median()
mode_skor = df['Skor_Ujian'].mode()[0] # [0] untuk ambil nilainya

print(f"Mean (Rata-rata): {mean_skor:.2f}")
print(f"Median (Nilai Tengah): {median_skor}")
print(f"Mode (Paling Sering Muncul): {mode_skor}")

Hasil dan Interpretasi:

  • Mean (Rata-rata): 82.40

  • Median (Nilai Tengah): 85.0

  • Mode (Paling Sering Muncul): 75, 85, 88, 90 (Dalam kasus ini, ada beberapa mode)

Wawasan: Rata-rata skor kelas adalah 82.40. Namun, nilai tengah (median) adalah 85. Fakta bahwa mean lebih rendah dari median memberi kita petunjuk pertama bahwa mungkin ada beberapa siswa dengan skor rendah yang "menarik" nilai rata-rata ke bawah.

Langkah 3: Menghitung Ukuran Penyebaran Data

Selanjutnya, kita ingin tahu seberapa tersebar skor-skor tersebut. Apakah semua siswa mendapat nilai yang mirip, atau ada kesenjangan yang besar?

  • Range (Jangkauan): Perbedaan antara nilai tertinggi dan terendah.

  • Variance & Standard Deviation: Ukuran seberapa jauh, rata-rata, setiap skor dari mean.

# 2. Ukuran Penyebaran Data
min_skor = df['Skor_Ujian'].min()
max_skor = df['Skor_Ujian'].max()
range_skor = max_skor - min_skor
std_dev_skor = df['Skor_Ujian'].std()
variance_skor = df['Skor_Ujian'].var()

print(f"Nilai Minimum: {min_skor}")
print(f"Nilai Maksimum: {max_skor}")
print(f"Range (Jangkauan): {range_skor}")
print(f"Standard Deviation: {std_dev_skor:.2f}")
print(f"Variance: {variance_skor:.2f}")

Hasil dan Interpretasi:

  • Nilai Minimum: 65

  • Nilai Maksimum: 95

  • Range (Jangkauan): 30

  • Standard Deviation: 8.58

Wawasan: Jangkauan skornya adalah 30 poin, yang cukup lebar. Standar deviasi 8.58 memberi kita gambaran kuantitatif tentang seberapa besar penyebarannya.

Langkah 4: Menentukan Bentuk Distribusi

Bagian ini memberi tahu kita bentuk dari data kita. Apakah simetris (seperti lonceng) atau miring?

  • Skewness (Kemiringan): Mengukur simetri data.

    • 0 = Simetris Sempurna.

    • < 0 (Negatif) = Miring ke kiri (ekor panjang di kiri).

    • > 0 (Positif) = Miring ke kanan (ekor panjang di kanan).

  • Kurtosis (Keruncingan): Mengukur "keruncingan" puncak data.

# 3. Bentuk Distribusi
skewness_skor = df['Skor_Ujian'].skew()
kurtosis_skor = df['Skor_Ujian'].kurt()

print(f"Skewness (Kemiringan): {skewness_skor:.4f}")
print(f"Kurtosis (Keruncingan): {kurtosis_skor:.4f}")

Hasil dan Interpretasi:

  • Skewness (Kemiringan): -0.5878

  • Kurtosis (Keruncingan): -0.5180

Wawasan:

  • Symmetry (Skewness): Nilainya negatif (-0.5878). Ini mengonfirmasi apa yang kita duga dari perbandingan mean dan median! Distribusi data miring ke kiri (negative skew). Ini berarti ada beberapa skor rendah (seperti 65 dan 68) yang membuat "ekor" di sisi kiri, sementara sebagian besar siswa mendapat skor di sisi kanan (tinggi).

  • Kurtosis: Nilai negatifnya menunjukkan distribusi ini platykurtik, yang berarti puncaknya lebih datar dan ekornya lebih tipis daripada distribusi normal.

Langkah 5: Visualisasi dengan Box Plot

Angka itu bagus, tapi gambar bernilai seribu kata. Box Plot (atau Quartile Plot) adalah cara terbaik untuk merangkum semua temuan kita (kecuali mode) ke dalam satu visualisasi yang kuat.

Box plot meringkas 5 angka: minimum, Quartile 1 (Q1), Median (Q2), Quartile 3 (Q3), dan maksimum.

# 4. Membuat Visualisasi Boxplot
plt.figure(figsize=(10, 4)) # Atur ukuran gambar

# Buat boxplot horizontal (vert=False)
plt.boxplot(df['Skor_Ujian'], vert=False, patch_artist=True)

plt.title('Box Plot Distribusi Skor Ujian Matematika', fontsize=16)
plt.xlabel('Skor Ujian')
plt.yticks([]) # Hilangkan label sumbu y
plt.grid(True, linestyle='--', alpha=0.6) # Tambahkan grid

# Tampilkan plot
plt.show()

Hasil Visual dan Ulasan Plot:

Ulasan Plot:

  1. Garis di Dalam Kotak (Median): Anda bisa lihat garis di dalam kotak (median) berada di 85. Ini adalah nilai tengah dari data.

  2. Kotak (IQR): "Kotak" itu sendiri mewakili 50% siswa di tengah.

    • Tepi kiri kotak (Q1) adalah 76.5.

    • Tepi kanan kotak (Q3) adalah 89.

    • Ini berarti 50% dari kelas mendapat skor antara 76.5 dan 89.

  3. Kumis (Whiskers): Garis yang memanjang dari kotak ("kumis") menunjukkan sisa data.

    • Kumis kiri memanjang hingga nilai minimum (65).

    • Kumis kanan memanjang hingga nilai maksimum (95).

  4. Simetri Visual: Lihatlah kotaknya. Garis median (85) tidak berada persis di tengah kotak, melainkan sedikit di sebelah kanan. Dan "kumis" di sebelah kiri (dari 65 ke 76.5) terlihat lebih panjang daripada kumis di sebelah kanan (dari 89 ke 95). Ini adalah konfirmasi visual dari kemiringan negatif (miring ke kiri) yang kita hitung sebelumnya.

Kesimpulan: Apa yang Kita Pelajari?

Hanya dengan beberapa baris kode Python, kita telah mengubah 15 angka mentah menjadi cerita yang jelas:

"Secara keseluruhan, performa kelas cukup baik, dengan nilai tengah (median) 85. Setengah dari kelas mendapat skor solid antara 76.5 dan 89. Namun, ada beberapa siswa dengan skor lebih rendah (hingga 65) yang menarik rata-rata keseluruhan ke bawah (mean 82.40). Tidak ada nilai yang sangat ekstrem (outlier)."

Inilah kekuatan dari analisis statistik deskriptif. Ini bukan hanya tentang menghitung angka, tetapi tentang menggunakan angka-angka tersebut untuk memahami gambaran yang lebih besar.

Komentar