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 rKekuatan hubungan (panduan praktik umum)
0.00 – 0.19sangat lemah
0.20 – 0.39lemah
0.40 – 0.59moderat
0.60 – 0.79kuat
0.80 – 1.00sangat 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.

matlab
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:

text
R = 0.996840
P = 1.495851e-05

Mari kita bedah baris-baris kode di atas:

  1. Baris 3 ([R, P] = corrcoef(...)): dua input menghasilkan matriks koefisien 2×2 dan matriks p-value 2×2 berukuran sama.
  2. Baris 4 (R(1,2)): elemen off-diagonal adalah korelasi jamBelajar terhadap nilai — 0.9968, hubungan linear nyaris sempurna.
  3. 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.

matlab
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:

text
r manual : 0.996840

Mari kita bedah baris-baris kode di atas:

  1. 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.
  2. Baris 4 (sqrt(sum(...) * sum(...))): normalisasi oleh energi masing-masing variabel membuang satuan; hasil r dipastikan terkurung di [−1, 1].
  3. 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.

matlab
% 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:

text
spearman jamBelajar vs nilai : 1.000000
pearson  x vs x.^2          : 0.976187
spearman x vs x.^2          : 1.000000

Mari kita bedah baris-baris kode di atas:

  1. Baris 2-3 ([~, ix] = sort(...)): sort mengembalikan nilai terurut (diabaikan dengan ~) dan indeks urutannya; rx(ix) = 1:numel(x) mengisi pangkat setiap data.
  2. Baris 7 (corrcoef(rx, ry)): Spearman = Pearson dijalankan pada pangkat; jamBelajar dan nilai naik searah sempurna → 1.0.
  3. 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.

matlab
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:

text
R = 0.533401, P = 0.2176

Mari kita bedah hasil tersebut:

  1. R(1,2) = 0.5334: korelasi moderat — suhu dan penjualan memang condong searah.
  2. 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.
  3. 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:

matlab
t  = -3:3;
y2 = t.^2;
[R0, ~] = corrcoef(t, y2);
fprintf('R = %.6f\n', R0(1,2));

Output yang Dihasilkan:

text
R = 0.000000

Pearson 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.