Anda meregresi harga rumah terhadap dua hal yang jelas menentukan: luas bangunan dan jumlah kamar. Logikanya tak terbantahkan — rumah lebih luas tentu lebih mahal. Tetapi hasil keluarannya membingungkan: koefisien luas bangunan tidak signifikan, galat bakunya besar, padahal Anda yakin betul luas itu berpengaruh.
Anda tidak salah hitung. Masalahnya, luas bangunan dan jumlah kamar bergerak nyaris bersama — rumah yang luas memang cenderung berkamar banyak. Saat dua variabel membawa cerita yang hampir sama, model kesulitan menentukan mana yang sebenarnya mendorong harga. Ia jadi ragu, dan keraguan itu muncul sebagai galat baku yang membengkak.
Itulah multikolinearitas: dua atau lebih variabel bebas yang informasinya tumpang tindih. Yang menarik — dan sering disalahpahami — multikolinearitas tidak membuat koefisien Anda salah arah. Ia hanya membuat angkanya goyah. Artikel ini menjelaskan dari nol kenapa itu terjadi, cara mendeteksinya, dan yang paling sering dilupakan: kapan Anda sebenarnya tidak perlu khawatir sama sekali.
Intuisi: Informasi yang Tumpang Tindih
Bayangkan tiap variabel bebas membawa “informasi” tentang apa yang menggerakkan $Y$. Regresi bekerja dengan memilah-milah: berapa bagian variasi harga yang khas milik luas, berapa yang khas milik jumlah kamar.
Kalau luas dan kamar benar-benar berbeda — luas naik-turun sendiri, kamar naik-turun sendiri — pemilahan ini gampang. Tiap variabel punya wilayah informasinya sendiri yang bersih.
Masalah muncul saat keduanya bergerak bersama. Sebagian besar yang “diketahui” luas tentang harga juga “diketahui” kamar. Wilayah informasi mereka bertumpang tindih. Pada bagian irisan itu, model tidak bisa memutuskan: kenaikan harga di situ jasa luas atau jasa kamar? Karena tak bisa memutuskan, ia melaporkan ketidakpastian yang besar — galat baku membengkak.
Perhatikan: irisan yang besar bukan berarti datanya rusak. Informasinya tetap ada, hanya bercampur. Itu sebabnya — seperti akan kita lihat — koefisiennya tetap benar rata-rata; yang hilang hanyalah ketajaman.
Dua Jenis Multikolinearitas
| Jenis | Definisi | Akibat |
|---|---|---|
| Sempurna | Satu variabel bebas adalah kombinasi linear persis dari yang lain (mis. $X_2 = 2X_1$, atau tinggi dalam cm dan dalam meter sekaligus) | OLS gagal menghitung — matriks $X'X$ tak punya kebalikan (singular) |
| Tinggi (tidak sempurna) | Korelasi kuat tetapi tidak persis | Koefisien tetap bisa dihitung, tetapi galat baku membengkak dan koefisien jadi tidak stabil |
Jenis sempurna jarang terjadi karena kesalahan murni — biasanya akibat memasukkan variabel yang secara aljabar redundan (misalnya total, lalu juga semua komponen penyusunnya, ditambah konstanta). Perangkat lunak akan menolak atau membuang otomatis salah satunya.
Yang lazim Anda hadapi adalah jenis kedua: tinggi tetapi tidak sempurna. Inilah fokus artikel ini.
Kenapa Galat Baku Membengkak
Mari lihat sumber masalahnya secara persis. Untuk regresi berganda, ragam (varians) koefisien $\hat{\beta}_j$ — kuadrat dari galat bakunya — adalah:
$$ \text{Var}(\hat{\beta}_j) = \frac{\sigma^2}{(1 - R_j^2)\,\sum_{i=1}^{n}(x_{ji} - \bar{x}_j)^2} $$Tiap lambang, polos:
- $\hat{\beta}_j$ = koefisien taksiran untuk variabel bebas ke-$j$ (misalnya koefisien luas).
- $\sigma^2$ = ragam galat model — seberapa berisik datanya secara keseluruhan.
- $\sum_{i=1}^{n}(x_{ji} - \bar{x}_j)^2$ = jumlah kuadrat simpangan variabel $X_j$ dari rata-ratanya — seberapa lebar $X_j$ bervariasi. (Lambang $\sum_{i=1}^{n}$ artinya “jumlahkan untuk semua data, dari ke-1 sampai ke-$n$”.)
- $R_j^2$ = inilah biang masalahnya. Ia adalah R-kuadrat dari regresi bantu: $X_j$ diregresi terhadap semua variabel bebas lain. Ia mengukur seberapa besar $X_j$ bisa “ditebak” dari variabel-variabel lainnya.
Fokuskan ke faktor $(1 - R_j^2)$ di penyebut. Inilah jembatan dari intuisi tadi:
- Kalau $X_j$ tidak berkorelasi dengan variabel lain, ia punya banyak informasi khas → $R_j^2 \approx 0$ → penyebut $(1 - 0) = 1$ → ragam kecil → galat baku kecil.
- Kalau $X_j$ sangat berkorelasi dengan variabel lain (irisan informasi besar), maka $R_j^2 \to 1$ → penyebut $(1 - R_j^2) \to 0$ → ragam meledak → galat baku membengkak.
Jadi galat baku besar bukan karena datanya buruk, melainkan karena $X_j$ kehilangan informasi khasnya: hampir semua sudah dijelaskan oleh variabel tetangganya.
Variance Inflation Factor (VIF)
Faktor $\dfrac{1}{1 - R_j^2}$ dari rumus di atas itu sendiri punya nama. Ia disebut VIF (Variance Inflation Factor — faktor pembengkak ragam), karena ia mengukur berapa kali lipat ragam koefisien membengkak akibat kolinearitas, dibanding kalau $X_j$ sama sekali tidak berkorelasi dengan variabel lain:
$$ \text{VIF}_j = \frac{1}{1 - R_j^2} $$Bacalah polos. VIF = 1 berarti tidak ada pembengkakan (ragam apa adanya). VIF = 5 berarti ragam koefisien lima kali lebih besar daripada seharusnya. Karena galat baku adalah akar dari ragam, faktor pembesar galat baku adalah $\sqrt{\text{VIF}}$ — bukan VIF itu sendiri.
Kebalikan VIF disebut tolerance (toleransi), yang langsung membaca “berapa porsi informasi $X_j$ yang masih khas”:
$$ \text{Tolerance}_j = \frac{1}{\text{VIF}_j} = 1 - R_j^2 $$Tolerance 0,2 berarti hanya 20% variasi $X_j$ yang tak terjelaskan oleh variabel lain — 80% sisanya tumpang tindih.
Ambang yang lazim dipakai:
| VIF | Tolerance | Interpretasi |
|---|---|---|
| 1 | 1,00 | Tidak ada korelasi dengan variabel lain (irisan kosong) |
| 1–5 | 0,20–1,00 | Multikolinearitas ringan, umumnya aman |
| 5–10 | 0,10–0,20 | Sedang, perlu perhatian |
| > 10 | < 0,10 | Tinggi, biasanya bermasalah |
Ambang VIF > 10 (setara $R_j^2 > 0{,}9$) adalah pegangan paling sering dikutip, tetapi perlakukan sebagai rambu, bukan hukum. O’Brien (2007) memperingatkan bahwa angka 10 itu sembarang — selalu pertimbangkan apakah variabel yang ber-VIF tinggi memang variabel yang Anda pelajari (lihat bagian “Kapan Tidak Perlu Khawatir”).
Contoh Hitung VIF dari Nol
Mari hitung VIF satu kasus sampai tuntas, tanpa perangkat lunak. Lima rumah; $X_1$ = luas bangunan (m²), $X_2$ = jumlah kamar.
Langkah 1 — data mentah dan rata-rata.
| $i$ | $X_1$ (luas) | $X_2$ (kamar) |
|---|---|---|
| 1 | 40 | 1 |
| 2 | 60 | 4 |
| 3 | 80 | 3 |
| 4 | 100 | 6 |
| 5 | 120 | 6 |
| Σ | 400 | 20 |
Rata-rata: $\bar{x}_1 = 400/5 = 80$ m² dan $\bar{x}_2 = 20/5 = 4$ kamar.
Langkah 2 — kolom bantu untuk regresi bantu. Karena di sini hanya ada dua variabel bebas, “regresi $X_2$ terhadap variabel lain” cukup berarti regresi $X_2$ terhadap $X_1$ saja. Untuk dua variabel, $R_2^2$ persis sama dengan kuadrat korelasi keduanya, jadi kita hitung tiga jumlah simpangan.
| $i$ | $x_{1i}-\bar{x}_1$ | $x_{2i}-\bar{x}_2$ | $(x_{1i}-\bar{x}_1)(x_{2i}-\bar{x}_2)$ | $(x_{1i}-\bar{x}_1)^2$ | $(x_{2i}-\bar{x}_2)^2$ |
|---|---|---|---|---|---|
| 1 | −40 | −3 | 120 | 1.600 | 9 |
| 2 | −20 | 0 | 0 | 400 | 0 |
| 3 | 0 | −1 | 0 | 0 | 1 |
| 4 | 20 | 2 | 40 | 400 | 4 |
| 5 | 40 | 2 | 80 | 1.600 | 4 |
| Σ | 0 | 0 | 240 | 4.000 | 18 |
Langkah 3 — korelasi, lalu $R_2^2$. Korelasi Pearson:
$$ r = \frac{\sum(x_{1i}-\bar{x}_1)(x_{2i}-\bar{x}_2)}{\sqrt{\sum(x_{1i}-\bar{x}_1)^2 \cdot \sum(x_{2i}-\bar{x}_2)^2}} = \frac{240}{\sqrt{4.000 \times 18}} = \frac{240}{\sqrt{72.000}} = \frac{240}{268{,}33} = 0{,}8944 $$Maka $R_2^2 = r^2 = 0{,}8944^2 = 0{,}80$. Artinya 80% variasi jumlah kamar bisa ditebak dari luas saja — informasi mereka sangat tumpang tindih.
Langkah 4 — VIF dan tolerance.
$$ \text{VIF}_2 = \frac{1}{1 - R_2^2} = \frac{1}{1 - 0{,}80} = \frac{1}{0{,}20} = 5{,}0 $$$$ \text{Tolerance}_2 = 1 - R_2^2 = 0{,}20 $$Langkah 5 — tafsir. VIF = 5,0 berarti ragam koefisien jumlah kamar lima kali lebih besar dibanding kalau ia tak berkorelasi dengan luas. Galat bakunya membengkak dengan faktor $\sqrt{5{,}0} = 2{,}24$ — lebih dari dua kali lipat. (Karena hanya ada dua variabel, VIF luas juga 5,0; mereka saling memantul dengan korelasi yang sama.) VIF 5,0 berada di zona “sedang, perlu perhatian”: belum melewati ambang 10, tetapi cukup untuk menjelaskan kenapa koefisien tampak goyah.
Bukti: Membengkak, Bukan Bias
Klaim terpenting tentang multikolinearitas — dan yang paling sering keliru dipahami — adalah ini: koefisien tetap takbias (unbiased); yang berubah hanya ragamnya. Mari buktikan idenya secara polos.
Bayangkan kebenaran sesungguhnya adalah $y = 2 + 1\cdot x_1 + 1\cdot x_2 + \text{galat}$, jadi koefisien benar keduanya = 1. Sekarang ambil ribuan sampel acak: sekali dengan $x_1, x_2$ yang tak berkorelasi, sekali dengan yang sangat berkorelasi ($r = 0{,}95$), lalu lihat sebaran taksiran $\hat{\beta}_1$:
| Skenario | Rata-rata $\hat{\beta}_1$ antar-sampel | Simpangan baku $\hat{\beta}_1$ antar-sampel |
|---|---|---|
| $x_1, x_2$ tak berkorelasi | 1,00 (= nilai benar) | 0,15 |
| $x_1, x_2$ sangat berkorelasi ($r=0{,}95$) | 0,99 (≈ nilai benar) | 0,47 |
Dua hal terbaca jelas. Pertama, rata-rata taksiran tetap menempel di nilai benar 1,0 pada kedua skenario — itulah arti takbias: kalau Anda mengulang penelitian berkali-kali, rata-rata koefisien Anda tetap benar. Multikolinearitas tidak menggeser sasaran.
Kedua, sebaran taksiran melebar tiga kali lipat (dari 0,15 ke 0,47) saat variabelnya kolinear. Inilah ketidakstabilan: dari satu sampel, koefisien Anda bisa jatuh jauh dari 1,0 — kadang 0,4, kadang 1,6 — walau rata-ratanya benar. Pelebaran ≈3× ini cocok dengan $\sqrt{\text{VIF}}$ yang besar. Galat baku yang besar adalah laporan jujur model tentang ketidakstabilan ini.
Itu sebabnya “membuang variabel karena VIF tinggi” sering keliru: Anda membuang koefisien yang sebenarnya benar rata-rata, hanya untuk mengejar galat baku yang lebih kecil.
Condition Index: Deteksi Pelengkap
VIF memeriksa variabel satu per satu. Tetapi kolinearitas bisa melibatkan beberapa variabel sekaligus dalam pola yang lolos dari pemeriksaan berpasangan — tiga variabel bisa nyaris kolinear walau tiap pasangnya korelasinya sedang saja. Untuk menangkap pola seperti ini, dipakai Condition Index (indeks kondisi).
Ide dasarnya dari aljabar linear: matriks data $X'X$ “diurai” menjadi nilai-nilai eigen ($\lambda$), yang bisa dibayangkan sebagai panjang sumbu-sumbu awan data di tiap arah. Kalau data tersebar gemuk ke segala arah, semua nilai eigen sebanding. Kalau data nyaris pipih (kolinear), ada arah yang sangat panjang dan arah lain yang nyaris nol — nilai eigen terkecil mengecil drastis. Condition Index membandingkan nilai eigen terbesar dengan terkecil:
$$ \text{CI} = \sqrt{\frac{\lambda_{\max}}{\lambda_{\min}}} $$- $\lambda_{\max}$ = nilai eigen terbesar dari matriks (kolom yang sudah dinormalkan); arah data paling lebar.
- $\lambda_{\min}$ = nilai eigen terkecil; arah data paling sempit. Makin kolinear data, makin kecil $\lambda_{\min}$, makin besar CI.
| Condition Index | Interpretasi |
|---|---|
| < 10 | Aman |
| 10–30 | Multikolinearitas sedang sampai kuat |
| > 30 | Serius |
Untuk data lima rumah di atas, Condition Index keluar 14,4 — masuk zona “sedang sampai kuat”, sejalan dengan VIF 5,0 tadi. Kedua diagnostik menunjuk arah yang sama: ada kolinearitas yang patut diperhatikan, tetapi belum tingkat darurat.
Kapan Tidak Perlu Khawatir
Ini bagian yang paling sering dilewatkan, padahal paling sering relevan. Multikolinearitas tidak selalu masalah — dan sering kali sama sekali tidak perlu disentuh:
- Variabel kolinearnya hanya kontrol, bukan variabel utama. Kalau Anda mempelajari efek pelatihan terhadap produktivitas, dan dua variabel kontrol (usia dan masa kerja) saling kolinear, VIF tinggi mereka tidak relevan. Yang penting koefisien pelatihan tetap presisi. Biarkan kontrolnya kolinear.
- Tujuan Anda prediksi, bukan tafsir koefisien. Kalau model dipakai untuk meramalkan harga, bukan untuk mengukur efek tiap variabel, multikolinearitas tidak menurunkan akurasi prediksi sama sekali. Ia hanya mengganggu saat Anda ingin membaca koefisien satu per satu.
- Dummy dan interaction term memang ber-VIF tinggi secara mekanis. Suku interaksi $x_1 \cdot x_2$ tentu berkorelasi dengan $x_1$ dan $x_2$ pembentuknya. Itu wajar, bukan penyakit. Centering (mengurangkan rata-rata dulu) bisa menurunkannya, tetapi sering tak perlu.
Pegangan praktis: tanyakan “VIF tinggi ini mengganggu variabel yang saya pedulikan?” Kalau tidak, biarkan.
Bereksperimen Sendiri
Geser tingkat korelasi antar $X_1$ dan $X_2$. Perhatikan VIF meledak dan galat baku membesar saat korelasi mendekati 1, sementara koefisien tetap berkisar di nilai benarnya — hanya makin goyah.
Tiga hal yang patut Anda amati:
- Naikkan korelasi $X_1$–$X_2$, lihat VIF meledak dan galat baku membesar bersamaan.
- Perhatikan koefisien tetap berkisar di nilai benar (takbias), hanya makin tidak stabil dari satu tarikan ke tarikan berikutnya.
- Lihat VIF menembus ambang 10 saat korelasi sekitar 0,95 ($R_j^2 \approx 0{,}9$).
Solusi (Kalau Memang Masalah)
Kalau setelah pemeriksaan di atas Anda yakin multikolinearitas benar-benar mengganggu variabel utama, ini pilihannya — dari yang paling sering tepat ke yang paling jarang perlu:
| Solusi | Cara | Catatan |
|---|---|---|
| Biarkan saja | Tidak melakukan apa-apa | Sering pilihan terbaik — terutama kalau variabel kolinear hanya kontrol atau tujuan Anda prediksi |
| Gabung jadi indeks | Rata-ratakan atau pakai PCA (analisis komponen utama) | Tepat kalau beberapa variabel mengukur konsep yang sama (mis. beberapa item survei) |
| Tambah data | Perbesar ukuran sampel | Memperbesar $\sum(x_{ji}-\bar{x}_j)^2$ di penyebut ragam → galat baku mengecil |
| Centering | Kurangkan rata-rata sebelum membentuk interaction term | Hanya untuk kolinearitas mekanis suku interaksi |
| Buang salah satu variabel | Hapus yang dianggap redundan | Pilihan terakhir — berisiko menimbulkan bias variabel terhilangkan (omitted variable bias) yang jauh lebih berbahaya daripada galat baku besar |
Urutan ini disengaja. Membuang variabel terlihat seperti perbaikan instan, tetapi justru paling berbahaya: galat baku besar adalah laporan kejujuran (model mengaku tak yakin), sedangkan koefisien bias adalah kebohongan diam-diam (model yakin pada angka yang salah).
Cara Cek di Software
# R
m <- lm(y ~ x1 + x2 + x3, data = dat)
library(car)
vif(m) # VIF tiap variabel
# Tolerance = 1 / VIF
# Condition index:
library(perturb); colldiag(m)
* Stata
reg y x1 x2 x3
estat vif // VIF + tolerance
collin x1 x2 x3 // condition index (paket pengguna)
# Python
from statsmodels.stats.outliers_influence import variance_inflation_factor
[variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
Cek Pemahaman
1. Regresi bantu sebuah variabel bebas $X_3$ terhadap semua variabel bebas lain menghasilkan $R_3^2 = 0{,}75$. Hitung VIF dan tolerance-nya dari nol, lalu nyatakan berapa kali lipat galat baku koefisien $X_3$ membengkak.
Lihat jawaban
$\text{VIF}_3 = \dfrac{1}{1 - 0{,}75} = \dfrac{1}{0{,}25} = 4{,}0$. Tolerance $= 1 - 0{,}75 = 0{,}25$. Faktor pembesar galat baku adalah $\sqrt{\text{VIF}} = \sqrt{4{,}0} = 2{,}0$ — jadi galat baku $X_3$ menjadi dua kali lebih besar dibanding kalau $X_3$ tak berkorelasi dengan variabel lain. VIF 4,0 masih di zona ringan-sedang (di bawah ambang 5), umumnya belum mengkhawatirkan.
2. (Soal transfer.) Seorang peneliti memodelkan upah karyawan sebagai fungsi dari pendidikan (variabel utama yang ia pelajari) plus dua kontrol: usia dan pengalaman kerja. Keluaran menunjukkan VIF usia = 12 dan VIF pengalaman = 11 (keduanya tinggi karena usia dan pengalaman bergerak bersama), sedangkan VIF pendidikan = 1,8 dan koefisiennya signifikan. Apakah peneliti perlu membuang usia atau pengalaman dari model? Jelaskan.
Lihat jawaban
Tidak perlu. Variabel yang ber-VIF tinggi (usia dan pengalaman) adalah kontrol, bukan variabel utama yang sedang dipelajari. Yang penting adalah presisi koefisien pendidikan, dan VIF-nya hanya 1,8 (rendah) dengan koefisien signifikan — jadi taksiran efek pendidikan tetap tajam. Membuang usia atau pengalaman justru berisiko menimbulkan bias variabel terhilangkan pada koefisien pendidikan, yang jauh lebih berbahaya daripada galat baku besar pada dua kontrol yang memang tak ditafsirkan satu per satu. Pegangannya: VIF tinggi hanya jadi masalah kalau ia mengganggu variabel yang Anda pedulikan.
Kesalahan Umum
Mengira multikolinearitas membuat koefisien bias. Tidak. Koefisien tetap takbias — rata-rata taksiran tetap di nilai benar. Yang membesar hanya ragam (galat baku). Bias dan ragam adalah dua hal berbeda; multikolinearitas hanya menyentuh yang kedua.
Membuang variabel hanya karena VIF tinggi. Kalau variabel itu penting secara teori, membuangnya menimbulkan bias variabel terhilangkan — model jadi yakin pada angka yang salah. Itu jauh lebih buruk daripada galat baku besar yang setidaknya jujur.
Khawatir VIF tinggi pada variabel kontrol. Yang penting presisi variabel utama. VIF tinggi pada kontrol yang tak Anda tafsirkan satu per satu sering tidak relevan sama sekali.
Panik karena dummy atau interaction term ber-VIF tinggi. Itu mekanis dan wajar — suku interaksi memang berkorelasi dengan pembentuknya. Centering bisa menurunkannya, tetapi sering tak perlu.
Mengandalkan korelasi berpasangan saja. Korelasi dua variabel yang rendah tidak menjamin tak ada multikolinearitas: tiga variabel bisa nyaris kolinear walau tiap pasangnya berkorelasi sedang. Pakai VIF atau Condition Index, bukan sekadar matriks korelasi.
Kapan Dipakai di Dunia Nyata
- Model harga properti. Luas bangunan, jumlah kamar, dan jumlah kamar mandi bergerak bersama. VIF mengungkap mana yang redundan — tetapi kalau tujuannya menaksir harga (prediksi), kolinearitas ini sering dibiarkan saja.
- Riset ekonomi makro. PDB, konsumsi, dan investasi bergerak nyaris sejalan sepanjang siklus ekonomi. Multikolinearitas hampir tak terhindarkan; pada model peramalan ia umumnya dibiarkan karena tak mengganggu akurasi prediksi.
- Equity research dan keuangan. Saat meregresi imbal hasil saham terhadap beberapa faktor risiko (mis. faktor pasar, ukuran, nilai), faktor-faktor itu bisa berkorelasi. Diagnostik VIF membantu memastikan koefisien faktor yang ditafsirkan tetap dapat dipercaya.
- Survei dengan banyak item Likert. Item yang mengukur konstruk yang sama berkorelasi tinggi secara wajar. Solusinya bukan membuang item, melainkan menggabungkannya jadi indeks — atau pindah ke kerangka SEM-PLS yang memang dirancang untuk variabel laten.
Lanjutan
Multikolinearitas adalah satu dari sederet diagnostik yang menjaga regresi tetap dapat dipercaya. Setelah ini, dua arah yang wajar:
- Lanjut ke Dummy variables & interaction terms — sumber VIF tinggi yang mekanis dan wajar, plus cara membacanya dengan benar.
- Atau Functional forms — bentuk fungsi non-linear yang juga memengaruhi struktur korelasi antar-variabel.
Fondasi yang mendasari materi ini:
- Regresi linear berganda — tempat koefisien parsial dan galat baku berasal.
- Asumsi klasik Gauss-Markov (BLUE) — kerangka yang menjelaskan kenapa multikolinearitas menyentuh ragam tanpa merusak ketakbiasan.
- Korelasi (Pearson, Spearman) — ukuran tumpang-tindih informasi yang menjadi inti $R_j^2$.
Reference
- Belsley, D. A., Kuh, E., & Welsch, R. E. (1980). Regression Diagnostics: Identifying Influential Data and Sources of Collinearity. Wiley. (Condition Index)
- O’Brien, R. M. (2007). A caution regarding rules of thumb for variance inflation factors. Quality & Quantity, 41(5), 673–690.
- Wooldridge, J. M. (2019). Introductory Econometrics: A Modern Approach (7th ed.), Ch. 3.