Kovarians berhasil merangkum arah hubungan dua variabel, tetapi satuannya yang melekat membuat besarannya tidak bermakna: 18.5 dalam satuan jam × poin tidak bisa dibandingkan dengan kovarians variabel lain. Koefisien korelasi Pearson — biasa ditulis r — memperbaiki kekurangan itu dengan satu pembagian: kovarians dibagi hasil kali standar deviasi kedua variabel, sehingga satuan saling meniadakan dan hasilnya selalu berada pada rentang −1 sampai +1. Chapter ini menghitung r secara manual pada data enam siswa, membaca besarannya lewat pedoman kasar, membuktikan kebalannya terhadap pergeseran dan penskalaan data, lalu menguji signifikansinya dengan uji-t.

Rumus: Kovarians yang Dinormalkan #

Dua rumus berikut identik — yang pertama berbicara dalam kovarians dan standar deviasi, yang kedua langsung dalam jumlah kuadrat dan perkalian deviasi:

text
r = cov(x, y) / (sx · sy)
r = Sxy / √(Sxx · Syy)

dengan Sxx = Σ(x − x̄)², Syy = Σ(y − ȳ)², dan Sxy = Σ(x − x̄)(y − ȳ), sementara sx dan sy adalah standar deviasi sampel. Pembagi √(Sxx · Syy) inilah “penghapus satuan”: Sxy membawa satuan jam × poin, pembaginya membawa satuan yang persis sama, sehingga hasilnya bilangan murni. Pembagi yang sama juga memastikan hasil tidak pernah keluar dari rentang −1 sampai +1 — sifat matematis yang dijamin pertidaksamaan Cauchy-Schwarz.

Menghitung r untuk Data Enam Siswa #

Tabel kerja kita kini membutuhkan tiga kolom jumlah — kuadrat deviasi x, kuadrat deviasi y, dan hasil kali deviasi (semua nilai tampilan dibulatkan ke dua desimal):

xyx − x̄y − ȳ(x − x̄)²(y − ȳ)²(x − x̄)(y − ȳ)
265−2.5−13.176.25173.3632.92
370−1.5−8.172.2566.6912.25
475−0.5−3.170.2510.031.58
5820.53.830.2514.691.92
6861.57.832.2561.3611.75
7912.512.836.25164.6932.08
Σ0017.50490.8392.50

Kolom deviasi menjumlah nol secara persis; selisih tipis pada baris Σ murni pembulatan tampilan. Tiga hasil kunci dari baris terakhir: Sxx = 17.5, Syy = 490.83 (nilai persisnya 490.8333), dan Sxy = 92.5. Maka:

text
r = 92.5 / √(17.5 × 490.8333) = 92.5 / 92.68 = 0.9981

Nilai r = 0.9981 (dibulatkan ke empat desimal) — angka yang sama dengan yang diperlihatkan sekilas statistics.correlation() pada chapter Scatter Plot. Korelasi yang nyaris menyentuh +1 mencerminkan sebaran titik yang sangat rapat di sekitar satu garis naik.

Membaca Besaran: Pedoman Kasar #

Tanda r dibaca sama seperti tanda kovarians: positif berarti seiring, negatif berarti berlawanan. Yang baru pada korelasi adalah besaran yang kini punya arti: r = +1 adalah hubungan linear positif sempurna (semua titik tepat pada satu garis naik), r = −1 negatif sempurna, dan r = 0 berarti tidak ada hubungan linear. Memilih angka batas antara “lemah” dan “kuat” tidak ada aturan resminya, tetapi pedoman kasar yang lazim dipakai:

Nilai absolut rKekuatan hubungan linear (pedoman kasar)
0.00 – 0.10praktis tidak ada
0.10 – 0.30lemah
0.30 – 0.50sedang
0.50 – 0.70kuat
0.70 – 1.00sangat kuat

Pedoman ini harus dibaca dengan konteks bidang. Pada eksperimen fisika dengan alat terkontrol, r di bawah 0.95 bisa dianggap mengecewakan; pada data survei ilmu sosial yang penuh variasi individual, r = 0.30 sudah bermakna. Yang tidak berubah di semua bidang: angka tinggi selalu perlu diperiksa sebarannya dulu — satu outlier cukup untuk menggelembungkan atau membalikkan r, tema yang kita hitung nyata pada chapter Regression Assumptions.

Kebal terhadap Pergeseran dan Penskalaan #

Korelasi hanya membaca pola relatif, bukan nilai mentahnya. Menambah 10 poin pada seluruh nilai (misalnya semua siswa dapat bonus kurikulum) menggeser ȳ dan setiap deviasi y tetap tidak berubah, sehingga r tetap. Mengalikan seluruh nilai dengan 2 mengubah deviasi menjadi dua kali lipat — tetapi pembagi √(Syy) ikut membesar dua kali lipat, sehingga r tetap. Transformasi linear positif apa pun (mengalikan dan menambah konstanta positif) tidak mengubah r sama sekali; hanya perkalian konstanta negatif yang membalik tandanya, karena tanda Sxy ikut terbalik sedangkan Sxx dan Syy tetap positif.

Akibat praktisnya: mengubah nilai dari skala 0-100 menjadi persentase, dari rupiah ke jutaan rupiah, atau dari sentimeter ke inci — semuanya tidak mengubah korelasi. Data ulangan yang dikonversi ke z-score pada chapter Standardisasi Data mempertahankan r yang sama, karena standardisasi memang transformasi linear.

Spearman rho: Ketika yang Ada Hanya Urutan #

Koefisien korelasi Spearman (lambang ρ, dibaca “rho”) adalah kerabat Pearson untuk situasi yang lebih longgar: data ordinal, sebaran tidak normal, atau hubungan yang bergerak searah tetapi tidak berbentuk garis lurus. Caranya sederhana — kedua variabel diubah menjadi peringkat, lalu korelasi Pearson dihitung pada peringkat tersebut. Hubungan monotonik sempurna (naik terus, walau melengkung) memberi ρ = +1 meskipun r Pearson-nya jauh di bawah itu. Pada data enam siswa kita, nilai naik tanpa satu pun penurunan, sehingga ρ = 1.00 — sedikit lebih tinggi dari r = 0.9981 karena r menghukum ketidaktepatan garis lurus sementara ρ hanya menuntut urutan.

Uji Signifikansi r #

Nilai r dari sampel adalah taksiran — pertanyaan inferensianya: bila korelasi populasi sebenarnya nol, seberapa kecil peluang memperoleh r sebesar ini dari kebetulan? Kerangka pengujian hipotesis dari Section Pengujian Hipotesis dipakai dengan H0: korelasi populasi sama dengan nol, dan statistik ujinya:

text
t = r · √(n - 2) / √(1 - r²)

Untuk data kita, statistik ujinya t = 32.0429 (dihitung dari nilai r sebelum pembulatan) dengan derajat kebebasan df = n − 2 = 4. Nilai kritis t dua sisi pada α = 0.05 untuk df = 4 adalah 2.776, jadi 32.04 berada sangat jauh di wilayah penolakan; p-value-nya 0.0000057. Kesimpulannya: korelasi 0.9981 pada enam observasi sangat kecil kemungkinannya muncul bila di populasi jam belajar dan nilai tidak berkorelasi. Perhatikan ukuran sampelnya: dengan n kecil, hanya r yang ekstrem yang lolos uji, sementara n besar membuat r sedang punya p-value kecil — kebermaknaan tidak sama dengan kekuatan hubungan.

Menghitung r dan Uji-t dengan Python #

Hitungan manual diperiksa silang dengan statistics.correlation(), kekebalan transformasi diuji langsung, lalu uji-t dikerjakan dengan scipy:

python
import math
import statistics

jam = [2, 3, 4, 5, 6, 7]
nilai = [65, 70, 75, 82, 86, 91]
n = 6
xbar = sum(jam) / n
ybar = sum(nilai) / n
Sxx = sum((x - xbar) ** 2 for x in jam)
Syy = sum((y - ybar) ** 2 for y in nilai)
Sxy = sum((x - xbar) * (y - ybar) for x, y in zip(jam, nilai))

r = Sxy / math.sqrt(Sxx * Syy)
print(f"r (manual)             = {r:.4f}")
print(f"statistics.correlation = {statistics.correlation(jam, nilai):.4f}")
print(f"r setelah nilai + 10   = {statistics.correlation(jam, [v + 10 for v in nilai]):.4f}")
print(f"r setelah nilai x 2    = {statistics.correlation(jam, [2 * v for v in nilai]):.4f}")

Output yang Dihasilkan:

text
r (manual)             = 0.9981
statistics.correlation = 0.9981
r setelah nilai + 10   = 0.9981
r setelah nilai x 2    = 0.9981

Uji signifikansi memakai scipy.stats dengan df = n − 2:

python
import math
import statistics
from scipy import stats as st

jam = [2, 3, 4, 5, 6, 7]
nilai = [65, 70, 75, 82, 86, 91]
n = len(jam)

r = statistics.correlation(jam, nilai)
t = r * math.sqrt(n - 2) / math.sqrt(1 - r ** 2)
p = 2 * st.t.sf(abs(t), df=n - 2)

print(f"r       = {r:.4f}")
print(f"t       = {t:.4f} dengan df = {n - 2}")
print(f"p-value = {p:.7f}")

Output yang Dihasilkan:

text
r       = 0.9981
t       = 32.0429 dengan df = 4
p-value = 0.0000057

Mari kita bedah kode di atas:

  1. Baris 14-15 (r manual dan crosscheck): rumus Sxy/√(Sxx·Syy) dikerjakan dari tiga kolom jumlah tabel kerja; hasilnya 0.9981, identik dengan function resmi statistics.correlation().
  2. Baris 16-17 (uji transformasi): menggeser seluruh nilai +10 dan mengalikan seluruh nilai ×2 menghasilkan r yang persis sama — kekebalan terhadap transformasi linear positif terbukti secara numerik.
  3. Baris 10 (statistik uji): t dihitung langsung dari r dan n pada snippet kedua, menghasilkan 32.0429 — jauh melampaui nilai kritis 2.776 untuk df = 4.
  4. Baris 11 (p-value): peluang dua sisi di bawah kurva-t dengan df = 4 sebesar 0.0000057, jauh di bawah α = 0.05 mana pun.

Rumus r dan perilakunya terdokumentasi dalam dokumentasi statistics Python ; uji signifikansi korelasi dibahas resmi di Penn State STAT 500 dan NIST/SEMATECH e-Handbook , sedangkan latihan interaktifnya tersedia di Khan Academy .

Korelasi mengukur kekuatan hubungan, tetapi pada banyak pertanyaan nyata kita ingin lebih dari mengukur: kita ingin memprediksi. Berapa nilai yang diperkirakan seorang siswa bila belajar 5.5 jam? Jawabannya butuh sebuah garis yang memodelkan hubungan kedua variabel — dan mencari garis terbaik itulah tugas regresi linear, topik yang menunggu setelah kita menuntaskan satu urusan terpenting dahulu: batas antara korelasi dan kausalitas.