Kualitas sebuah analisis data ditentukan sejak pertanyaannya dirumuskan, jauh sebelum baris kode pertama dijalankan. Topik ini membuka proyek penutup jalur dengan tahap perancangan, yaitu menajamkan rasa penasaran menjadi pertanyaan yang layak dijawab data, menetapkan variabel respons beserta kelompok pembandingnya, lalu menyiapkan satu berkas data untuk seluruh proyek. Skenario yang dipakai adalah perbandingan durasi tidur mahasiswa kelas pagi dan kelas malam. Setelah tahap ini selesai, proyek memiliki pertanyaan analisis, hipotesis kerja, serta berkas data-tidur.csv yang dipakai bersama oleh semua topik pada modul ini.
Dari rasa penasaran ke pertanyaan yang terukur#
Rasa penasaran biasanya tiba dalam bentuk yang masih luas, misalnya kesan bahwa mahasiswa yang kuliah pada malam hari kelihatan lebih segar. Kesan semacam itu belum dapat dianalisis karena tidak menyebut siapa dibandingkan dengan siapa, apa yang diukur, dan seberapa besar bedanya. Tugas tahap perancangan adalah menyempitkan kesan itu menjadi pertanyaan yang setiap katanya dapat diperiksa pada data.
Sebuah pertanyaan layak dianalisis apabila memenuhi empat kriteria berikut.
- Terukur, yaitu besaran yang ditanyakan memiliki satuan jelas sehingga nilainya dapat dicatat, misalnya durasi tidur dalam jam.
- Berpembanding, yaitu pertanyaan memuat dua kelompok atau kondisi yang disandingkan, sebab kalimat seperti “berapa durasi tidur mahasiswa” tidak memiliki tolok hitung.
- Datanya dapat dikumpulkan, yaitu alat ukur dan akses ke respondennya tersedia dengan usaha yang wajar.
- Jawabannya berguna, yaitu jawaban yang diperoleh mengubah keputusan atau pemahaman, bukan sekadar mengisi laporan.
Keempat kriteria menyaring pertanyaan secara bertahap, dari yang luas menuju yang siap diuji. Diagram berikut merangkum alur penyempitan tersebut. Setiap tingkatan mengurangi ruang tafsir sehingga sisa pertanyaannya dapat dijawab dengan angka.
Pada proyek ini, kesan awal tentang mahasiswa kelas malam disempitkan menjadi satu pertanyaan analisis, yaitu apakah durasi tidur rata-rata mahasiswa kelas malam berbeda dari mahasiswa kelas pagi. Pertanyaan itu terukur karena menyebut durasi tidur dalam jam, berpembanding karena menyandingkan dua kelompok kelas, dan datanya dapat dikumpulkan melalui kuesioner sederhana. Jawabannya berguna bagi perencanaan jadwal kuliah maupun edukasi pola tidur mahasiswa.
Variabel respons, pembanding, dan hipotesis kerja#
Pertanyaan analisis diturunkan menjadi penetapan variabel yang tidak boleh berubah selama proyek berjalan. Satu variabel respons diukur pada setiap responden, dan satu pembanding membagi responden menjadi dua kelompok. Penetapan lengkapnya dirangkum pada tabel berikut.
| Peran | Pilihan pada proyek ini |
|---|---|
| Variabel respons | Durasi tidur satu hari dalam jam |
| Kelompok pembanding | Kelas pagi dan kelas malam |
| Ukuran per kelompok | 30 mahasiswa |
| Hipotesis kerja | Kelas malam tidur lebih lama daripada kelas pagi |
Hipotesis kerja menyatakan arah yang diperkirakan, tetapi pengujian formalnya ditulis dua arah agar hasil yang melawan dugaan tetap terdeteksi. Pernyataan formalnya berpasangan antara hipotesis nol (null hypothesis) dan hipotesis alternatif (alternative hypothesis) sebagai berikut, dengan sebagai rata-rata populasi durasi tidur tiap kelompok.
Hipotesis nol menyatakan tidak ada perbedaan rata-rata antara kedua populasi, sedangkan hipotesis alternatif menyatakan sebaliknya. Faktor lain seperti beban kuliah dan jadwal kerja sampingan tidak dikendalikan pada rancangan ini, sehingga catatan tentang faktor pengganggu disimpan untuk bagian keterbatasan pada laporan. Kedisiplinan menahan klaim sejak perancangan membuat kesimpulan akhir tidak melebihi apa yang sanggup didukung data.
Membangkitkan berkas data proyek#
Pada proyek sungguhan, data dikumpulkan melalui kuesioner dan pencatatan manual. Proyek terpandu ini mengganti langkah pengumpulan dengan pembangkitan data simulasi yang deterministik, sehingga setiap angka pada seluruh modul dapat direproduksi dan ketiga topik memakai satu berkas yang persis sama. Data dibangkitkan untuk dua kelompok berisi 30 mahasiswa dari model normal dengan rata-rata 7.0 dan 7.6 jam. Sebagai bagian dari realisme, dua pencilan (outlier) ditanam pada data, yaitu satu nilai 9.8 jam dan satu nilai 4.6 jam. Pembulatan satu desimal meniru gaya pencatatan manual dalam jam.
import numpy as np
rng = np.random.default_rng(42)
n = 30
pagi = rng.normal(loc=7.0, scale=1.0, size=n)
malam = rng.normal(loc=7.6, scale=1.1, size=n)
# Dua pencilan alami: satu mahasiswa tidur sangat lama, satu sangat sedikit
pagi[7] = 9.8
malam[21] = 4.6
# Pembulatan satu desimal meniru pencatatan manual dalam jam
pagi = np.round(pagi, 1)
malam = np.round(malam, 1)
with open("data-tidur.csv", "w", encoding="utf-8") as berkas:
berkas.write("kelompok,durasi_jam\n")
for nilai in pagi:
berkas.write(f"pagi,{nilai:.1f}\n")
for nilai in malam:
berkas.write(f"malam,{nilai:.1f}\n")
print(f"Jumlah baris data : {pagi.size + malam.size}")
print(f"Rata-rata kelas pagi : {pagi.mean():.2f} jam")
print(f"Rata-rata kelas malam: {malam.mean():.2f} jam")Jumlah baris data : 60
Rata-rata kelas pagi : 7.12 jam
Rata-rata kelas malam: 7.60 jamSkrip di atas menulis berkas data-tidur.csv berisi 60 baris data ditambah satu baris kepala. Isi lengkapnya ditampilkan berikut ini agar struktur berkasnya dapat diperiksa secara utuh.
kelompok,durasi_jam
pagi,7.3
pagi,6.0
pagi,7.8
pagi,7.9
pagi,5.0
pagi,5.7
pagi,7.1
pagi,9.8
pagi,7.0
pagi,6.1
pagi,7.9
pagi,7.8
pagi,7.1
pagi,8.1
pagi,7.5
pagi,6.1
pagi,7.4
pagi,6.0
pagi,7.9
pagi,7.0
pagi,6.8
pagi,6.3
pagi,8.2
pagi,6.8
pagi,6.6
pagi,6.6
pagi,7.5
pagi,7.4
pagi,7.4
pagi,7.4
malam,10.0
malam,7.2
malam,7.0
malam,6.7
malam,8.3
malam,8.8
malam,7.5
malam,6.7
malam,6.7
malam,8.3
malam,8.4
malam,8.2
malam,6.9
malam,7.9
malam,7.7
malam,7.8
malam,8.6
malam,7.8
malam,8.3
malam,7.7
malam,7.9
malam,4.6
malam,6.0
malam,7.2
malam,7.1
malam,6.9
malam,7.3
malam,9.2
malam,6.6
malam,8.7Berkas tersebut memuat dua kolom, yaitu kelompok berisi label pagi atau malam dan durasi_jam berisi durasi tidur. Nilai 9.8 pada kelompok pagi dan 4.6 pada kelompok malam adalah dua pencilan yang ditanam sejak awal. Pencilan semacam ini lazim dijumpai pada data tidur nyata, misalnya mahasiswa yang begadang atau yang tidur jauh lebih lama pada hari libur.
Pratinjau ringkas sebelum analisis#
Langkah terakhir tahap perancangan adalah membuka kembali berkas yang baru dibuat untuk memastikan strukturnya benar. Pratinjau ini memeriksa hal yang paling murah namun paling sering salah, yaitu ukuran tiap kelompok dan keterbacaan kolomnya. Perhatikan bahwa pratinjau bukan analisis, sehingga tidak ada keputusan statistik yang diambil dari angkanya.
import numpy as np
data = np.genfromtxt("data-tidur.csv", delimiter=",", names=True,
dtype=None, encoding="utf-8")
pagi = data["durasi_jam"][data["kelompok"] == "pagi"]
malam = data["durasi_jam"][data["kelompok"] == "malam"]
print(f"Ukuran kelas pagi : {pagi.size} mahasiswa")
print(f"Ukuran kelas malam: {malam.size} mahasiswa")
print(f"Rata-rata awal kelas pagi : {pagi.mean():.2f} jam")
print(f"Rata-rata awal kelas malam: {malam.mean():.2f} jam")
print(f"Selisih rata-rata (malam - pagi): {malam.mean() - pagi.mean():.2f} jam")Ukuran kelas pagi : 30 mahasiswa
Ukuran kelas malam: 30 mahasiswa
Rata-rata awal kelas pagi : 7.12 jam
Rata-rata awal kelas malam: 7.60 jam
Selisih rata-rata (malam - pagi): 0.48 jamKedua kelompok terbaca lengkap berisi 30 mahasiswa, dan selisih rata-rata awalnya 0.48 jam. Selisih awal ini belum boleh dipercaya sepenuhnya karena rata-rata mudah tergeser oleh pencilan, sedangkan variasi pensampelan selalu membawa fluktuasi. Keputusan formal mengenai selisih tersebut ditunda hingga tahap analisis yang mengerjakan berkas yang sama ini.
Kesalahan umum#
Tiga kesalahan berikut paling sering muncul pada tahap perancangan.
- Pertanyaan yang dirumuskan masih menuntut penjelasan sebab-akibat, misalnya mengapa pola tidur mahasiswa berbeda-beda. Data observasional sederhana tidak sanggup menjawab kata mengapa. Perbaikannya adalah menyempitkan pertanyaan menjadi perbandingan ukuran yang terukur antara dua kelompok.
- Data dikumpulkan tanpa kelompok pembanding sehingga angkanya tidak memiliki tolok hitung. Nilai rata-rata 7.4 jam tidak bermakna tanpa tahu dibandingkan dengan apa. Perbaikannya adalah menetapkan pembanding sejak perancangan, bukan mencarinya setelah data terkumpul.
- Data dibangkitkan ulang dengan urutan pemanggilan generator acak yang berubah sehingga angka antartahap tidak cocok. Perbaikannya adalah membuat generator dengan seed tetap, pada proyek ini
np.random.default_rng(42), lalu tidak menyisipkan pemanggilan acak lain sebelum data selesai ditulis.
Ringkasan#
- Pertanyaan analisis yang layak bersifat terukur, berpembanding, dapat dikumpulkan datanya, dan jawabannya berguna.
- Proyek ini membandingkan durasi tidur dua kelompok 30 mahasiswa dengan hipotesis kerja kelas malam tidur lebih lama.
- Data proyek tersimpan pada
data-tidur.csvberisi 60 baris yang dibangkitkan dengan seed 42, lengkap dengan dua pencilan alami. - Pratinjau awal menunjukkan selisih rata-rata 0.48 jam, angka yang pengujian formalnya ditunda hingga tahap analisis.
Referensi#
- numpy.random.Generator.normal — NumPy — Dokumentasi pembangkitan data normal yang dipakai skrip pembangkit data proyek.
- numpy.genfromtxt — NumPy — Dokumentasi pembacaan berkas CSV yang kolomnya berisi teks dan angka.
- OpenIntro Statistics — OpenIntro — Buku pengantar statistika dengan pembahasan merumuskan pertanyaan dan pengumpulan data.