Dua kolom duduk di workspace: jam belajar dan nilai ujian. Ketika jam belajar naik, apakah nilai ikut naik — dan seberapa kuat? Korelasi menjawabnya dengan satu angka di rentang [−1, +1], jauh lebih ringkas daripada menatap ratusan baris data. Tetapi angka tunggal itu juga mudah disalahartikan, jadi chapter ini membangun kehati-hatian bersamaan dengan tekniknya. Cakupan materinya:
- Pearson dengan
corrcoef— koefisien dan p-value - Rumus Pearson manual sebagai pemeriksa silang
- Spearman: korelasi berbasis ranking
- Interpretasi koefisien dan jebakan “korelasi bukan kausalitas”
Konsep dan Interpretasi Koefisien #
Korelasi Pearson mengukur kekuatan hubungan linear: r = +1 berarti titik-titik data jatuh sempurna pada garis naik, r = −1 pada garis turun, dan r = 0 berarti tidak ada komponen linear sama sekali. Mekanismenya: hasil kali simpangan kedua variabel dinormalisasi sehingga hasilnya tak berunit dan tak peduli skala — jam dalam menit atau jam pun menghasilkan r yang sama.
| Nilai absolut r | Kekuatan hubungan (panduan praktik umum) |
|---|---|
| 0.00 – 0.19 | sangat lemah |
| 0.20 – 0.39 | lemah |
| 0.40 – 0.59 | moderat |
| 0.60 – 0.79 | kuat |
| 0.80 – 1.00 | sangat kuat |
Tabel ini adalah heuristik, bukan hukum: nilai r = 0.4 pada sampel besar bisa lebih berarti daripada r = 0.8 pada sampel kecil — itulah mengapa kita juga membaca p-value.
corrcoef: Koefisien dan P-value #
Fungsi corrcoef berada di inti MATLAB, lengkap dengan sintaks dua keluaran: R untuk koefisien dan P untuk p-value. Mekanismenya: R adalah matriks 2×2 (korelasi tiap pasangan kolom, diagonal selalu 1), sedangkan P menyetel uji hipotesis “apakah korelasi ini murni kebetulan” — P kecil berarti hubungan tidak wajar terjadi oleh kebetulan.
jamBelajar = [2 4 6 8 10 12];
nilai = [55 60 68 74 78 85];
[R, P] = corrcoef(jamBelajar, nilai);
fprintf('R = %.6f\n', R(1,2));
fprintf('P = %.6e\n', P(1,2));Output yang Dihasilkan:
R = 0.996840
P = 1.495851e-05Mari kita bedah baris-baris kode di atas:
- Baris 3 (
[R, P] = corrcoef(...)): dua input menghasilkan matriks koefisien 2×2 dan matriks p-value 2×2 berukuran sama. - Baris 4 (
R(1,2)): elemen off-diagonal adalah korelasi jamBelajar terhadap nilai — 0.9968, hubungan linear nyaris sempurna. - Baris 5 (
P(1,2)): 1.5×10⁻⁵ — peluang melihat r sekuat ini jika sebenarnya tidak ada hubungan; angka sekecil ini membuat kesimpulan “ada hubungan” aman.
Rumus Pearson Manual #
Kita buka isi corrcoef dengan menghitung r langsung dari definisinya — pembilangnya hasil kali simpangan kedua variabel, penyebutnya norma masing-masing. Rumus manual ini berguna sebagai pemeriksa silang dan untuk memahami apa yang sebenarnya dihitung.
mx = mean(jamBelajar);
my = mean(nilai);
r = sum((jamBelajar - mx) .* (nilai - my)) / ...
sqrt(sum((jamBelajar - mx).^2) * sum((nilai - my).^2));
fprintf('r manual : %.6f\n', r);Output yang Dihasilkan:
r manual : 0.996840Mari kita bedah baris-baris kode di atas:
- Baris 3 (
sum((x - mx) .* (y - my))): setiap pasangan data menyumbang hasil kali simpangannya — pasangan searah (dua-duanya di atas atau di bawah mean) menyumbang positif. - Baris 4 (
sqrt(sum(...) * sum(...))): normalisasi oleh energi masing-masing variabel membuang satuan; hasil r dipastikan terkurung di [−1, 1]. - Hasilnya: 0.996840 — enam digit sama persis dengan
corrcoef; dua jalur ini menghitung satu definisi yang sama.
Spearman: Korelasi Ranking #
Pearson tuli terhadap hubungan yang monotonik tetapi melengkung, dan sensitif terhadap outlier. Spearman mengatasinya dengan mengganti data menjadi ranking sebelum menghitung Pearson — yang diukur menjadi “apakah urutan naik-turunnya searah”. Mekanismenya: sort menghasilkan urutan, indeks pengurutan menjadi pangkat data.
% ranking: posisi data setelah diurutkan
[~, ix] = sort(jamBelajar);
rx = zeros(size(jamBelajar)); rx(ix) = 1:numel(jamBelajar);
[~, iy] = sort(nilai);
ry = zeros(size(nilai)); ry(iy) = 1:numel(nilai);
rs = corrcoef(rx, ry);
fprintf('spearman jamBelajar vs nilai : %.6f\n', rs(1,2));
% kontras Pearson vs Spearman pada hubungan melengkung
x = 1:8;
y = x.^2; % monotonik naik, tetapi melengkung
[Rp, ~] = corrcoef(x, y);
[~, iy2] = sort(y);
ry2 = zeros(size(y)); ry2(iy2) = 1:numel(y);
rs2 = corrcoef(x, ry2); % x = 1:8 sudah terurut, rank(x) = x
fprintf('pearson x vs x.^2 : %.6f\n', Rp(1,2));
fprintf('spearman x vs x.^2 : %.6f\n', rs2(1,2));Output yang Dihasilkan:
spearman jamBelajar vs nilai : 1.000000
pearson x vs x.^2 : 0.976187
spearman x vs x.^2 : 1.000000Mari kita bedah baris-baris kode di atas:
- Baris 2-3 (
[~, ix] = sort(...)):sortmengembalikan nilai terurut (diabaikan dengan~) dan indeks urutannya;rx(ix) = 1:numel(x)mengisi pangkat setiap data. - Baris 7 (
corrcoef(rx, ry)): Spearman = Pearson dijalankan pada pangkat; jamBelajar dan nilai naik searah sempurna → 1.0. - Baris 15-17: pada x vs x², Pearson hanya 0.976 karena kurva melengkung, sedangkan Spearman tetap 1.0 karena urutannya tak pernah menurun — itulah beda “linear” dan “monotonik”.
Korelasi Bukan Kausalitas #
Koefisien tinggi hanya mengatakan “dua variabel bergerak bersama” — tidak mengatakan mana yang mengejar yang mana, dan tidak menutup kemungkinan variabel ketiga yang menggerakkan keduanya. Data penjualan es krim dan insiden tenggelam berkorelasi kuat setiap musim panas; kesimpulan “es krim berbahaya” jelas salah — suhu adalah penggerak keduanya.
suhu = [28 26 32 30 29 31 27];
penjualan = [120 98 142 150 135 110 128];
[R, P] = corrcoef(suhu, penjualan);
fprintf('R = %.6f, P = %.4f\n', R(1,2), P(1,2));Output yang Dihasilkan:
R = 0.533401, P = 0.2176Mari kita bedah hasil tersebut:
R(1,2)= 0.5334: korelasi moderat — suhu dan penjualan memang condong searah.P= 0.2176: pada 7 observasi, korelasi 0.53 masih wajar muncul meski hubungan sebenarnya nol — bukti belum cukup; kumpulkan lebih banyak data sebelum menyimpulkan.- Implikasinya: laporan yang hanya menulis “R = 0.53” menyembunyikan setengah cerita; koefisien dan ketidakpastiannya selalu berpasangan.
Kasus yang lebih ekstrem: korelasi nol bukan berarti tak berhubungan. Data simetris parabola memiliki hubungan kuat yang tidak terlihat oleh Pearson:
t = -3:3;
y2 = t.^2;
[R0, ~] = corrcoef(t, y2);
fprintf('R = %.6f\n', R0(1,2));Output yang Dihasilkan:
R = 0.000000Pearson melaporkan nol persis karena hubungan t dengan t² tidak punya komponen linear — simetri kiri-kanan saling menghapus. Sebelum memercayai angka korelasi apa pun, kita perlu melihat bentuk datanya.
Ringkasan #
corrcoef menghasilkan koefisien Pearson dan p-value dalam satu panggilan; rumus manualnya — hasil kali simpangan ternormalisasi — memberi pemeriksa silang dan pemahaman. Spearman mengganti data dengan pangkat untuk menangkap hubungan monotonik yang melengkung. Dua jebakan besar menemani ketiganya: korelasi tidak membuktikan sebab-akibat, dan korelasi nol tidak membuktikan ketiadaan hubungan. Koefisien hanyalah angka; model yang memprediksi nilainya menjadi materi Chapter Regresi Linear.