Ringkasan yang salah pilih membuat data yang baik menghasilkan kesimpulan yang tidak bermakna, dan sumber kesalahan yang paling sering terjadi adalah tidak menyesuaikan ringkasan dengan jenis datanya. Topik ini mengelompokkan data menjadi kategorikal dan numerik, lalu memecah data numerik menjadi diskret dan kontinu. Pada bagian akhir, setiap jenis data dihubungkan dengan pilihan ringkasan yang sah, lengkap dengan contoh perhitungannya di Python. Contoh yang digunakan sepanjang topik berangkat dari kegiatan belajar siswa sehingga setiap angkanya mudah diperiksa ulang.
Data kategorikal dan data numerik#
Data kategorikal (categorical data) menyimpan label atau nama kelompok, sedangkan data numerik (numerical data) menyimpan bilangan hasil penghitungan atau pengukuran. Pembeda utamanya adalah operasi aritmetika yang dapat dilakukan atas nilainya. Penjumlahan dan perata-rataan bermakna pada data numerik karena nilainya menyatakan besaran, sedangkan operasi yang sama pada label tidak menyatakan apa pun. Karena itu, pertanyaan pertama sebelum meringkas data adalah menentukan apakah setiap kolomnya berisi label atau bilangan.
Pada ranah pendidikan, hobi, jurusan, dan status kelulusan adalah contoh data kategorikal, sedangkan nilai ujian, durasi belajar, dan jumlah buku yang dibaca adalah contoh data numerik. Pembagian ini berlaku umum dan tidak terbatas pada ranah pendidikan. Tabel berikut merangkum perbedaan perlakuan keduanya secara ringkas.
| Aspek | Data kategorikal | Data numerik |
|---|---|---|
| Isi nilai | label atau nama kelompok | bilangan hasil hitungan atau ukuran |
| Operasi aritmetika | tidak bermakna | bermakna |
| Ringkasan yang tepat | tabel frekuensi dan modus | rata-rata, median, dan ukuran sebaran |
| Contoh pada ranah belajar | hobi, jurusan, status kelulusan | nilai ujian, durasi belajar, jumlah buku |
Sebuah label tetap kategorikal meskipun disimpan sebagai angka. Kode 0 untuk membaca, 1 untuk olahraga, dan 2 untuk musik hanyalah penanda kelompok, sehingga penjumlahan kode tidak menghasilkan makna apa pun. Jenis data ditentukan oleh makna nilainya, bukan oleh tipe data (data type) pada bahasa pemrograman.
Data diskret dan data kontinu#
Data numerik terbagi lagi menjadi diskret dan kontinu. Data diskret (discrete data) berupa hasil penghitungan yang nilainya terpisah, misalnya jumlah buku yang dibaca dalam satu bulan. Data kontinu (continuous data) berupa hasil pengukuran yang dapat mengambil nilai apa pun di dalam suatu interval, misalnya durasi belajar 2.75 jam. Pembedanya adalah ada tidaknya nilai lain di antara dua pengamatan berturutan, karena di antara dua durasi selalu terdapat durasi yang sah, sedangkan di antara 2 buku dan 3 buku tidak ada jumlah buku lain.
Pada praktiknya, pembulatan membuat data kontinu terlihat seperti diskret. Durasi belajar yang dicatat dengan satu angka desimal tetap kontinu menurut asal-usulnya, yaitu hasil pengukuran waktu. Perbedaan keduanya paling terasa pada penyajian, karena data kontinu lazim digambarkan dengan histogram, sedangkan data diskret ditampilkan sebagai batang terpisah pada setiap nilai bulatnya. Pilihan ukuran pemusatan, sebaliknya, tidak berubah antara data diskret dan kontinu.
Pemilihan ringkasan mengikuti jenis data#
Jenis data menentukan ringkasan yang tersedia. Data kategorikal hanya dapat diringkas dengan tabel frekuensi, yaitu daftar banyaknya pengamatan pada setiap kelompok, beserta modus sebagai kelompok dengan frekuensi terbanyak. Data numerik dapat diringkas lebih jauh dengan rata-rata (mean) dan median karena operasi aritmetikanya bermakna. Program berikut mengerjakan ketiga jenis data dalam satu berkas yang sama agar perbedaannya terlihat berdampingan.
import numpy as np
from collections import Counter
# Data kategorikal: hobi utama dari 12 siswa
hobi = ["membaca", "olahraga", "membaca", "musik", "olahraga", "membaca",
"musik", "membaca", "olahraga", "membaca", "musik", "olahraga"]
# Data numerik diskret: jumlah buku yang dibaca dalam satu bulan
jumlah_buku = np.array([2, 5, 2, 3, 0, 4, 2, 6, 1, 3, 2, 4])
# Data numerik kontinu: durasi belajar per hari dalam jam
durasi_belajar = np.array([1.5, 2.75, 3.1, 2.2, 4.0, 2.9, 3.6, 2.45])
frekuensi = Counter(hobi)
print("Frekuensi hobi :", dict(frekuensi))
print("Modus hobi :", frekuensi.most_common(1)[0][0])
print(f"Rata-rata jumlah buku : {jumlah_buku.mean():.4f}")
print(f"Median jumlah buku : {np.median(jumlah_buku):.4f}")
print(f"Rata-rata durasi : {durasi_belajar.mean():.4f} jam")
print(f"Median durasi : {np.median(durasi_belajar):.4f} jam")Frekuensi hobi : {'membaca': 5, 'olahraga': 4, 'musik': 3}
Modus hobi : membaca
Rata-rata jumlah buku : 2.8333
Median jumlah buku : 2.5000
Rata-rata durasi : 2.8125 jam
Median durasi : 2.8250 jamFrekuensi hobi menunjukkan membaca sebagai modus dengan lima kemunculan, dan perhitungan ini hanya memerlukan penghitungan. Rata-rata dan median baru muncul pada data numerik, baik diskret seperti jumlah buku maupun kontinu seperti durasi belajar. Seluruh angka pada keluaran dapat diverifikasi secara manual karena jumlah datanya hanya belasan.
Kesalahan umum#
Kesalahan yang paling sering muncul pada tahap ini adalah memperlakukan label berkode angka sebagai data numerik. Program berikut menghitung rata-rata dari kode hobi dan menghasilkan angka yang tampak sah, padahal angka itu tidak menyatakan apa pun.
import numpy as np
# 0 = membaca, 1 = olahraga, 2 = musik
kode_hobi = np.array([0, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0])
print(f"Rata-rata kode hobi: {kode_hobi.mean():.4f}")Rata-rata kode hobi: 0.8333Angka 0.8333 tidak menyatakan frekuensi, besaran, maupun peringkat apa pun, sehingga melaporkannya justru menyesatkan pembaca laporan. Perbaikannya adalah menghitung frekuensi dan modus seperti pada program pertama. Kesalahan kedua yang lazim adalah memperlakukan skala ordinal sebagai numerik penuh. Skala ordinal adalah skala yang hanya memuat urutan, dan skala kepuasan 1 sampai 5 adalah contohnya. Urutan pada skala tersebut sah sehingga median dapat dihitung, tetapi jarak antarangkanya belum tentu setara. Karena itu, rata-rata pada skala semacam ini perlu dihindari atau paling tidak diberi keterangan. Kesalahan ketiga adalah menyimpulkan jenis data dari tipe penyimpanannya, misalnya menganggap kolom berbilangan bulat pasti diskret menurut maknanya. Jenis data tetap ditentukan oleh asal-usul nilainya, yaitu penghitungan atau pengukuran.
Ringkasan#
- Data kategorikal menyimpan label, sedangkan data numerik menyimpan bilangan hasil penghitungan atau pengukuran.
- Tabel frekuensi dan modus adalah ringkasan untuk data kategorikal, sedangkan rata-rata dan median memerlukan data numerik.
- Data diskret berasal dari penghitungan, sedangkan data kontinu berasal dari pengukuran pada suatu interval.
- Jenis data ditentukan oleh makna nilainya, bukan oleh tipe penyimpanannya.
Referensi#
- OpenIntro Statistics — OpenIntro — Buku pengantar statistika yang membahas jenis data dan pilihan ringkasannya pada bab pembuka.
- collections — Container datatypes — Python Software Foundation — Dokumentasi kelas Counter yang digunakan untuk menghitung frekuensi label.