Membuat Algoritma Cluster Sampling di R
Melanjutkan tulisan saya sebelumnya terkait teknik sampling di market riset, kali ini saya akan membahas tentang teknik sampling bernama cluster sampling. Berdasarkan pengalaman saya sampai saat ini di industri market riset, saya sebenarnya sangat jarang sekali menggunakan teknik sampling ini.
Misalkan kita ingin meneliti pendapat siswa SMA di seluruh Jakarta tentang kurikulum baru. Akan sangat sulit dan mahal jika kita harus mendatangi setiap sekolah dan memilih siswa secara acak satu per satu.
Nah, cluster sampling hadir sebagai solusi yang lebih praktis. Caranya adalah dengan membagi populasi besar (seluruh siswa SMA di Jakarta) menjadi kelompok-kelompok kecil yang disebut cluster. Cluster ini biasanya sudah terbentuk secara alami, misalnya berdasarkan sekolah.
Langkah-langkahnya begini:
-
Bagi Populasi menjadi Cluster: Pertama, kamu bagi seluruh populasi penelitianmu menjadi beberapa cluster yang berbeda. Dalam contoh kita, setiap SMA di Jakarta adalah satu cluster. Sehingga kita dapatkan banyaknya cluster adalah sebanyak SMA yang ada di Jakarta.
-
Pilih Beberapa Cluster Secara Acak: Kemudian, kamu tidak memilih siswa secara acak dari semua sekolah, tapi kamu memilih beberapa sekolah (cluster) secara acak. Misalnya, dari ratusan SMA di Jakarta, kamu memilih 10 cluster (sekolah) secara acak.
-
Ambil Sampel dari Klaster yang Terpilih: Setelah cluster (sekolah) terpilih, kamu bisa melakukan salah satu dari dua hal:
- Mengambil sampel acak dari setiap cluster terpilih: Di setiap 10 sekolah yang terpilih tadi, kamu bisa memilih beberapa siswa secara acak untuk menjadi sampelmu. ATAU
- Mengambil semua anggota dari klaster terpilih: Kamu bisa menjadikan semua siswa di 10 sekolah yang terpilih sebagai sampel penelitianmu. Cara ini lebih sederhana tapi mungkin kurang efisien jika ukuran cluster-nya sangat besar.
Sederhananya, kamu memilih beberapa kelompok secara acak, lalu mengambil sampel dari kelompok-kelompok yang terpilih tersebut.
Kelebihan Cluster Sampling:
- Lebih efisien dan murah terutama untuk populasi yang tersebar geografis. Kamu tidak perlu menjangkau setiap individu, tapi cukup beberapa kelompok saja.
- Lebih praktis ketika sulit untuk mendapatkan daftar lengkap seluruh anggota populasi, tapi daftar kelompoknya tersedia.
Kekurangan Cluster Sampling:
- Potensi sampling error lebih besar dibandingkan simple random sampling jika antar cluster memiliki perbedaan yang signifikan. Jika sekolah-sekolah yang kamu pilih secara kebetulan memiliki karakteristik siswa yang sangat berbeda dari rata-rata, maka hasil penelitianmu bisa bias.
Algoritma Cluster Sampling di R
Berdasarkan penjelasan di atas, kita bisa membuat algoritma sederhananya
dengan library(dplyr)
di R sebagai berikut:
# panggil library(dplyr)
library(dplyr)
# total semua murid di jakarta
N_murid = 10^4
# total semua sekolah di jakarta
N_skul = 80
# berapa banyak cluster yang akan dipilih
selected_skul = 5
# pemilihan cluster
selected_cluster = sample(1:N_skul,selected_skul) %>% sort()
selected_cluster
[1] 14 44 52 67 78
Terlihat di atas adalah lima clusters (sekolah-sekolah) yang terpilih. Kita bisa lihat sampel data siswa yang terpilih sebagai berikut:
# kita buat data frame nya
id_murid = 1:N_murid
id_skul = sample(1:N_skul,N_murid,replace = T)
df_sel = data.frame(id_murid,id_skul,
nama_skul = paste0("Sekolah ",id_skul)) %>%
filter(id_skul %in% selected_cluster)
head(df_sel,20)
id_murid id_skul nama_skul
1 2 52 Sekolah 52
2 26 67 Sekolah 67
3 37 52 Sekolah 52
4 59 67 Sekolah 67
5 87 67 Sekolah 67
6 121 44 Sekolah 44
7 125 52 Sekolah 52
8 128 44 Sekolah 44
9 145 52 Sekolah 52
10 152 67 Sekolah 67
11 157 52 Sekolah 52
12 197 78 Sekolah 78
13 217 67 Sekolah 67
14 231 52 Sekolah 52
15 232 14 Sekolah 14
16 246 67 Sekolah 67
17 247 14 Sekolah 14
18 261 14 Sekolah 14
19 263 78 Sekolah 78
20 287 44 Sekolah 44
Berikut adalah summary-nya:
df_sel %>%
group_by(nama_skul) %>%
tally() %>%
ungroup() %>%
arrange(nama_skul) %>%
rename("n siswa" = n)
# A tibble: 5 × 2
nama_skul `n siswa`
<chr> <int>
1 Sekolah 14 112
2 Sekolah 44 126
3 Sekolah 52 147
4 Sekolah 67 122
5 Sekolah 78 116
if you find this article helpful, support this blog by clicking the ads.