Anda meneliti apakah sebuah program bimbingan belajar mendongkrak nilai siswa. Datanya 2.000 siswa dari 40 sekolah. Anda jalankan regresinya, dan hasilnya tampak luar biasa: koefisien programnya besar, dengan nilai-p teramat kecil. Anda nyaris menulis kesimpulan “terbukti sangat signifikan”.
Tetapi ada satu hal yang terlewat. Siswa di satu sekolah bukan dua puluh orang yang saling lepas. Mereka berbagi guru yang sama, gedung yang sama, suasana belajar yang sama. Kalau sekolah itu kebetulan bagus, semua siswanya cenderung naik bersama; kalau sekolah itu sedang kacau, semua turun bersama. Artinya galat (selisih nilai aktual dari yang diprediksi model) di dalam satu sekolah saling berkorelasi — bukan acak satu per satu.
Akibatnya, dua ribu siswa Anda tidak membawa dua ribu keping informasi yang benar-benar mandiri. Jauh lebih sedikit. Standar error OLS biasa tidak tahu hal ini, lalu menghitung ketidakpastian seolah-olah semua siswa independen — sehingga ia keluar terlalu kecil, dan nilai-p Anda jadi terlalu optimistis. Clustered standard error memperbaiki tepat persoalan ini.
Intuisi: Berapa Banyak Informasi yang Benar-Benar Anda Punya
Bayangkan Anda ingin tahu rata-rata tinggi orang Indonesia, lalu Anda mengukur 100 orang. Kalau 100 orang itu dipilih acak dari seluruh negeri, Anda punya 100 keping informasi mandiri — bagus. Tetapi kalau 100 orang itu ternyata 20 keluarga, masing-masing 5 anggota yang saling mirip karena gen dan gizi sama, informasi mandiri Anda jauh lebih sedikit dari 100. Lebih dekat ke “20 keluarga” daripada “100 orang”.
Itulah inti persoalannya. Pengamatan yang saling mirip di dalam satu kelompok tidak menambah informasi sebanyak pengamatan yang benar-benar baru. Statistik menyebut tingkat kemiripan ini korelasi intra-klaster (sering disingkat ICC, dari intraclass correlation): seberapa banyak galat dua pengamatan dalam satu kelompok bergerak searah.
Ada rumus pegangan klasik (Moulton) yang menangkap intuisi ini. Kalau tiap klaster berisi $m$ pengamatan dan korelasi intra-klaster sebesar $\rho$ (dibaca “rho”), maka ragam estimator yang benar lebih besar daripada ragam OLS-naif kira-kira dengan faktor:
$$\text{faktor inflasi ragam} \approx 1 + (m - 1)\,\rho$$Baca polos: kalau pengamatan dalam klaster tidak berkorelasi ($\rho = 0$), faktornya $1$ — tidak ada koreksi, klaster tidak perlu. Tetapi kalau $\rho$ besar dan klaster berisi banyak orang, faktornya melonjak. Contoh: $m = 5$ siswa per sekolah dengan $\rho = 0{,}87$ memberi faktor $1 + 4 \times 0{,}87 \approx 4{,}5$. Karena standar error adalah akar dari ragam, standar error yang benar kira-kira $\sqrt{4{,}5} \approx 2{,}1$ kali lebih besar dari standar error OLS biasa. Mengabaikan klaster, di kasus ini, membuat standar error Anda separuh dari yang seharusnya.
Dari mana struktur kelompok ini muncul? Hampir di semua data terapan:
| Struktur data | Klaster alami | Kenapa galat berkorelasi dalam klaster |
|---|---|---|
| Siswa di dalam sekolah | sekolah | guru, fasilitas, lingkungan sama |
| Karyawan di dalam perusahaan | perusahaan | kebijakan, budaya kerja sama |
| Pengamatan berulang per individu | individu | sifat tetap orang itu sepanjang waktu |
| Rumah tangga di dalam desa | desa | harga lokal, cuaca, infrastruktur sama |
| Perusahaan di dalam satu tahun | tahun | guncangan makro tahun itu menimpa semua |
Ilustrasi: Dua Sumber Korelasi pada Data Panel
Persoalan klaster paling kentara pada data panel — data yang melacak banyak unit (misalnya perusahaan) sepanjang beberapa periode waktu. Di sini galat bisa berkorelasi di dua arah sekaligus, dan gambar berikut menunjukkan keduanya.
Panah mendatar adalah alasan kita mengklaster per unit: perusahaan yang dikelola buruk cenderung punya galat searah di semua tahunnya. Panah tegak adalah alasan kita kadang menambah klaster per waktu: krisis 1998 atau pandemi 2020 menekan hampir semua perusahaan pada tahun yang sama. Materi ini fokus pada klaster satu-arah dulu (panah mendatar), lalu memperluas ke dua-arah.
Rumus Sandwich, Dijelaskan Polos
Sebelum rumus, sepakati satu lambang yang dipakai sepanjang materi. Galat dugaan (residual) untuk pengamatan ke-$i$ adalah selisih nilai aktual dari nilai yang diprediksi model:
$$u_i = y_i - \hat{y}_i = (\text{nilai aktual} - \text{nilai prediksi})$$Contoh polos: kalau seorang siswa sebenarnya dapat 80 padahal model memprediksi 75, maka $u_i = 80 - 75 = 5$ (lima poin di atas garis). Korelasi yang kita khawatirkan adalah korelasi antar $u_i$ ini di dalam satu klaster.
Estimator clustered SE (dikenalkan Liang & Zeger, 1986) menghitung matriks kovarians koefisien dengan bentuk sandwich — disebut begitu karena ada “isi” yang diapit dua “roti” yang identik:
$$\widehat{\text{Var}}(\hat{\beta}) = \underbrace{(X'X)^{-1}}_{\text{roti}} \; \underbrace{\left( \sum_{g=1}^{G} X_g'\, u_g\, u_g'\, X_g \right)}_{\text{isi (meat)}} \; \underbrace{(X'X)^{-1}}_{\text{roti}}$$Mari bedah tiap bagian dengan polos:
- $\hat{\beta}$ (dibaca “beta-topi”) = koefisien hasil regresi yang ingin kita ukur ketidakpastiannya (misalnya efek program bimbingan). Topi menandakan “hasil dugaan dari data”.
- $X$ = matriks variabel penjelas (tiap baris satu pengamatan, tiap kolom satu variabel termasuk konstanta). $X_g$ adalah potongan $X$ untuk klaster $g$ saja.
- $(X'X)^{-1}$ = “roti” sandwich. Ini bagian yang juga muncul di rumus standar error OLS biasa — semacam penyetel skala.
- $\sum_{g=1}^{G}$ artinya “jumlahkan untuk semua klaster, dari klaster ke-1 sampai ke-$G$”; $G$ = banyaknya klaster (misalnya 40 sekolah).
- $u_g$ = kumpulan galat dugaan di dalam klaster $g$ (vektor). $u_g\, u_g'$ adalah perkalian luar yang membiarkan galat dalam satu klaster bebas saling berkorelasi — inilah kunci yang tidak dimiliki rumus OLS biasa.
- $X_g'\, u_g$ menjumlahkan kontribusi tiap pengamatan dalam klaster $g$ menjadi satu kontribusi tingkat-klaster. Jadi isi sandwich pada dasarnya menjumlahkan $G$ potongan, bukan $n$ potongan.
Inti pesannya satu kalimat: alih-alih memperlakukan $n$ pengamatan sebagai $n$ unit informasi independen, isi sandwich memperlakukan $G$ klaster sebagai unit informasi independen. Karena $G$ jauh lebih kecil dari $n$, standar error yang dihasilkan lebih besar — dan itu memang jujur.
Satu detail praktis: perangkat lunak menambahkan faktor koreksi sampel-kecil di depan rumus, $c = \dfrac{G}{G-1}\cdot\dfrac{n-1}{n-k}$, dengan $k$ = banyak koefisien (termasuk konstanta). Faktor ini sedikit memperbesar hasil untuk mengoreksi bias saat klaster tidak terlalu banyak. Ini default di Stata dan di statsmodels.
Contoh Hitung dari Nol
Mari lihat angka asli, dengan data yang cukup kecil untuk dilacak tetapi cukup nyata untuk menunjukkan persoalannya. Inilah situasi yang paling sering bikin peneliti tertipu: perlakuan ditetapkan di tingkat klaster.
Sebuah program bimbingan diberikan ke seluruh sekolah, bukan ke siswa per siswa. Ada 6 sekolah, masing-masing 5 siswa ($n = 30$). Tiga sekolah ikut program ($D = 1$), tiga sekolah tidak ($D = 0$). Variabel $D$ bernilai sama untuk semua siswa di satu sekolah. Modelnya sesederhana mungkin:
$$\hat{y} = b_0 + b_1 D$$dengan $b_1$ = selisih rata-rata nilai sekolah-program dan sekolah-bukan-program (itulah efek yang kita taksir).
Langkah 1 — data dan rata-rata kelompok. Berikut ringkasan tiap sekolah (nilai mentah lengkap ada di berkas Excel pendamping).
| Sekolah | Program $D$ | Nilai 5 siswa | Rata-rata sekolah |
|---|---|---|---|
| 1 | 1 | 82, 83, 84, 85, 86 | 84 |
| 2 | 1 | 73, 74, 75, 76, 77 | 75 |
| 3 | 1 | 73, 74, 75, 76, 77 | 75 |
| 4 | 0 | 72, 73, 74, 75, 76 | 74 |
| 5 | 0 | 67, 68, 69, 70, 71 | 69 |
| 6 | 0 | 65, 66, 67, 68, 69 | 67 |
Rata-rata kelompok program $= (84 + 75 + 75)/3 = 78$. Rata-rata kelompok bukan-program $= (74 + 69 + 67)/3 = 70$.
Langkah 2 — koefisien. Karena $D$ hanya bernilai 0 atau 1, regresinya persis selisih dua rata-rata:
$$b_1 = 78 - 70 = 8, \qquad b_0 = 70$$Jadi program dikaitkan dengan nilai $8$ poin lebih tinggi. Sampai sini tidak ada yang berubah — koefisien tidak bergantung pada cara kita menghitung standar error. Yang berubah hanyalah seberapa yakin kita pada angka 8 itu.
Langkah 3 — perhatikan galat per sekolah. Galat dugaan tiap siswa adalah nilainya dikurangi rata-rata kelompoknya. Yang penting: rata-rata galat per sekolah jauh dari nol dan konsisten satu tanda di dalam sekolah:
| Sekolah | Rata-rata galat siswa di sekolah ini |
|---|---|
| 1 | $+6$ |
| 2 | $-3$ |
| 3 | $-3$ |
| 4 | $+4$ |
| 5 | $-1$ |
| 6 | $-3$ |
Lihat sekolah 1: kelima siswanya rata-rata $6$ poin di atas prediksi — galat mereka searah, bukan acak. Inilah korelasi intra-klaster yang kasatmata. OLS biasa menutup mata terhadap pola ini.
Langkah 4 — dua standar error. Dengan rumus OLS biasa (anggap 30 siswa independen) versus rumus sandwich klaster (anggap 6 sekolah independen):
| Standar error efek $b_1$ | Nilai-$t$ ($= 8 / SE$) | Nilai-$p$ | |
|---|---|---|---|
| OLS biasa | $1{,}48$ | $5{,}41$ | $< 0{,}001$ |
| Clustered (per sekolah) | $3{,}32$ | $2{,}41$ | $\approx 0{,}061$ |
Inilah momen pentingnya. Standar error klaster 2,25 kali lebih besar dari OLS biasa ($3{,}32 / 1{,}48 \approx 2{,}25$). Nilai-$t$ anjlok dari $5{,}41$ ke $2{,}41$. Dan kesimpulannya berbalik: dengan OLS biasa, efek tampak “sangat signifikan” ($p < 0{,}001$); dengan standar error yang jujur — memakai derajat kebebasan $G - 1 = 5$ — nilai-$p$ menjadi $\approx 0{,}061$, tidak lagi signifikan pada taraf 5%.
Estimasi efeknya tetap 8 poin. Tetapi keyakinan kita padanya jauh lebih rapuh setelah mengakui bahwa kita sesungguhnya hanya mengamati 6 sekolah, bukan 30 siswa lepas. (Seluruh angka di tabel ini sudah diverifikasi independen dengan statsmodels; lihat kode di bawah.)
Memilih Level Klaster
Pertanyaan yang paling sering salah: di level mana harus mengklaster?
Aturan modern (Abadie, Athey, Imbens, & Wooldridge, 2023): klaster di level tempat perlakuan ditetapkan atau tempat pengambilan sampel terjadi. Kalau sebuah kebijakan diberlakukan per kabupaten, klaster per kabupaten — bukan per individu, bukan pula per provinsi.
- Terlalu halus (misalnya klaster per individu padahal perlakuan per sekolah): standar error masih terlalu kecil — persis penyakit yang ingin kita obati di contoh tadi.
- Terlalu kasar (misalnya klaster per provinsi padahal cukup per sekolah): kehilangan daya uji, dan jumlah klaster jadi sedikit (lihat bagian berikutnya).
Pegangannya: klaster sebesar level korelasi yang masuk akal, tidak lebih besar dan tidak lebih kecil. Untuk contoh di atas, karena program ditetapkan per sekolah, klaster per sekolah adalah jawaban yang benar.
Klaster Dua-Arah
Pada data panel (kembali ke gambar di atas), korelasi bisa hadir di dua arah sekaligus: dalam unit sepanjang waktu dan dalam satu tahun antar unit. Cameron, Gelbach, & Miller (2011) menunjukkan cara mengklaster dua arah, sehingga rumus sandwich menjumlahkan kontribusi per unit dan per waktu lalu mengoreksi tumpang-tindihnya. Praktik ini wajib dipertimbangkan untuk panel besar dengan guncangan makro yang kuat — misalnya regresi perusahaan-tahun di pasar saham.
Masalah Few Clusters
Rumus sandwich klaster sahih saat jumlah klaster besar — pegangan kasarnya $G > 30$ sampai $50$. Logikanya kembali ke isi sandwich: ia memperlakukan tiap klaster sebagai satu unit informasi, jadi kalau klasternya cuma segelintir, taksiran ketidakpastian itu sendiri jadi tidak stabil dan uji-$t$ cenderung menolak terlalu sering (menyatakan signifikan padahal tidak).
| Jumlah klaster $G$ | Pendekatan yang dianjurkan |
|---|---|
| $> 50$ | Clustered SE standar aman |
| $30$ – $50$ | Clustered SE, dengan kehati-hatian |
| $< 30$ | Wild cluster bootstrap (Cameron, Gelbach, & Miller, 2008) |
| $< 10$ | Sangat berhati-hati; pertimbangkan ulang desainnya |
Wild cluster bootstrap memberi inferensi yang sahih bahkan dengan 10–20 klaster, dan kini menjadi praktik baku di paper terapan modern (lihat juga Canay, Romano, & Shaikh, 2017). Inti idenya: alih-alih bersandar pada rumus asimtotik, ia menciptakan ribuan “dunia tiruan” dengan membalik tanda galat per klaster secara acak, lalu mengukur seberapa ekstrem nilai-$t$ asli kita di antara dunia-dunia itu.
Catatan untuk contoh kita tadi: dengan hanya $G = 6$ sekolah, kita sebenarnya berada jauh di wilayah few clusters. Nilai-$p$ klaster $0{,}061$ pun masih perlu dikonfirmasi dengan wild bootstrap — yang justru menegaskan pesan: dengan sedikit klaster, jangan terlalu percaya satu angka.
Coba Sendiri
Geser pengatur korelasi intra-klaster (ICC) dan jumlah klaster, lalu amati bagaimana standar error klaster membesar relatif terhadap OLS, dan kapan rasionya mulai tidak stabil.
Beberapa eksperimen yang patut dicoba:
- Naikkan ICC, lihat standar error klaster membesar relatif terhadap OLS — persis seperti faktor $1 + (m-1)\rho$ memperkirakan.
- Kurangi jumlah klaster, perhatikan rasio standar error makin tidak stabil — sinyal Anda butuh wild bootstrap.
- Setel ICC $= 0$: standar error klaster dan OLS hampir sama — pada keadaan ini, mengklaster tidak diperlukan.
Cara Menghitung di Perangkat Lunak
Setelah paham asal-usulnya, di perangkat lunak cukup satu argumen tambahan.
# R — fixest (modern & cepat), klaster satu-arah per sekolah
library(fixest)
feols(nilai ~ program + kontrol | sekolah, data = dat, cluster = ~ sekolah)
# R — sandwich + lmtest (klasik)
library(sandwich); library(lmtest)
m <- lm(nilai ~ program + kontrol, data = dat)
coeftest(m, vcov = vcovCL(m, cluster = ~ sekolah)) # satu-arah
coeftest(m, vcov = vcovCL(m, cluster = ~ firm + tahun)) # dua-arah
# R — wild cluster bootstrap untuk few clusters
library(fwildclusterboot)
boottest(m, clustid = "sekolah", param = "program", B = 9999)
* Stata
reg nilai program kontrol, cluster(sekolah) /* satu-arah */
reghdfe nilai program kontrol, vce(cluster firm tahun) /* dua-arah */
boottest program, cluster(sekolah) reps(9999) /* wild bootstrap */
# Python (statsmodels) — inilah perintah yang dipakai memverifikasi contoh di atas
import statsmodels.api as sm
m = sm.OLS(y, X).fit(cov_type='cluster', cov_kwds={'groups': df['sekolah']})
Cek Pemahaman
1. Sebuah regresi pada data 1.500 pasien dari 25 rumah sakit menghasilkan koefisien obat baru yang “sangat signifikan” memakai standar error OLS biasa. Tanpa menghitung ulang, apa yang Anda harapkan terjadi pada (a) nilai koefisiennya dan (b) standar error-nya setelah diklaster per rumah sakit? Dan apa satu kekhawatiran tambahan dari angka $G = 25$?
Lihat jawaban
(a) Koefisiennya tidak berubah — mengklaster hanya menyentuh standar error (inferensi), bukan taksiran efeknya. (b) Standar error-nya membesar, karena pasien di rumah sakit yang sama berbagi protokol, dokter, dan populasi yang mirip sehingga galatnya berkorelasi; akibatnya nilai-$t$ turun dan “sangat signifikan” bisa melemah. Kekhawatiran tambahan: $G = 25$ klaster berada di wilayah few clusters ($< 30$) — clustered SE asimtotik bisa kurang sahih, jadi sebaiknya dikonfirmasi dengan wild cluster bootstrap.
2. (Soal transfer.) Pemerintah menjalankan program bantuan benih di seluruh desa terpilih — semua petani di satu desa ikut atau tidak ikut sekaligus. Datanya 4.000 petani dari 80 desa, tersebar di 10 kabupaten. Seorang analis mengklaster standar error per kabupaten. Apakah pilihan level klaster ini tepat? Kalau tidak, di level mana seharusnya, dan apa risikonya kalau analis malah mengklaster per petani?
Lihat jawaban
Aturan Abadie-Athey-Imbens-Wooldridge: klaster di level penetapan perlakuan. Karena bantuan benih ditetapkan per desa (semua petani sedesa ikut/tidak bersama), level klaster yang tepat adalah desa ($G = 80$, nyaman di atas ambang few clusters), bukan kabupaten. Mengklaster per kabupaten ($G = 10$) terlalu kasar: kehilangan daya uji dan masuk wilayah few clusters yang berbahaya. Sebaliknya, mengklaster per petani terlalu halus — itu sama saja tidak mengakui korelasi sedesa, sehingga standar error tetap terlalu kecil dan persoalan inti tidak terselesaikan.
Kesalahan Umum
Tidak mengklaster padahal ada struktur kelompok. Standar error OLS default pada data berkelompok hampir selalu terlalu kecil. Reviewer modern langsung mempertanyakannya — pertanyaan pertama biasanya “standar error apa yang Anda pakai?”.
Mengklaster di level yang salah. Mengklaster per individu padahal perlakuan ditetapkan per sekolah tidak menyelesaikan apa pun. Klaster di level penetapan perlakuan.
Memakai clustered SE dengan klaster yang sangat sedikit. Dengan $G < 30$, rumus sandwich asimtotik kurang sahih dan uji-$t$ menolak terlalu sering. Pakai wild cluster bootstrap.
Mengklaster pada variabel berlevel terlalu banyak. Mengklaster per “tahun-bulan” yang punya ribuan level nyaris sama dengan tidak mengklaster sama sekali — tiap “klaster” cuma berisi segelintir pengamatan. Pastikan klaster bermakna dan tidak terlalu halus.
Mengira clustering memperbaiki bias. Tidak. Clustering hanya memperbaiki standar error (inferensi). Bias dari endogenitas tetap butuh penanganan lain seperti variabel instrumen atau fixed effect — lihat Endogenitas.
Dipakai di Dunia Nyata
- Riset pendidikan. Eksperimen tingkat kelas atau sekolah selalu diklaster di level intervensi. Analisis data PISA, hasil asesmen nasional, dan evaluasi program Kemendikbud bertumpu pada ini; perlakuan yang ditetapkan per sekolah harus diklaster per sekolah.
- Evaluasi kebijakan daerah. Kebijakan yang berlaku per kabupaten atau provinsi — misalnya studi dampak Dana Desa atau transfer fiskal antar daerah — diklaster di level pemerintahan yang menetapkannya, bukan per rumah tangga.
- Keuangan panel (data IDX). Regresi perusahaan-tahun hampir selalu memakai klaster dua-arah perusahaan + tahun, untuk menangkap sekaligus sifat tetap tiap emiten dan guncangan makro yang menimpa semua emiten pada tahun yang sama (krisis, perubahan suku bunga acuan, pandemi).
Rumus di Excel
Excel bukan alat yang tepat untuk menghitung clustered SE secara langsung — perhitungannya melibatkan aljabar matriks yang lebih nyaman di R, Stata, atau Python. Berkas pendamping karenanya berisi data contoh di atas, ringkasan konsep, daftar periksa pemilihan level klaster, dan lembar contekan kode R/Stata/Python yang menyertai materi ini.
⬇ Unduh clustered-standard-errors.xlsx
Lanjutan
Clustered SE adalah satu dari tiga pilar inferensi yang sahih di data terapan, bersama robust SE (heteroskedastisitas) dan Newey-West (autokorelasi).
- Sebelumnya: Robust standard errors — fondasi langsung materi ini, tempat gagasan sandwich pertama muncul.
- Perlu menyegarkan akar persoalan ragam galat tak seragam? Balik ke Heteroskedastisitas dan Autokorelasi.
- Berikutnya: Clustered SE untuk panel — penerapan rinci pada data panel dua dimensi, dan Panel data: fixed effects vs random effects yang menjadi rumah alami clustering.
Referensi
- Liang, K.-Y., & Zeger, S. L. (1986). Longitudinal data analysis using generalized linear models. Biometrika.
- Cameron, A. C., Gelbach, J. B., & Miller, D. L. (2008). Bootstrap-based improvements for inference with clustered errors. Review of Economics and Statistics.
- Cameron, A. C., Gelbach, J. B., & Miller, D. L. (2011). Robust inference with multiway clustering. Journal of Business & Economic Statistics.
- Canay, I. A., Romano, J. P., & Shaikh, A. M. (2017). Randomization tests under an approximate symmetry assumption. Econometrica.
- Abadie, A., Athey, S., Imbens, G. W., & Wooldridge, J. M. (2023). When should you adjust standard errors for clustering? Quarterly Journal of Economics.