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:
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):
| x | y | x − x̄ | y − ȳ | (x − x̄)² | (y − ȳ)² | (x − x̄)(y − ȳ) |
|---|---|---|---|---|---|---|
| 2 | 65 | −2.5 | −13.17 | 6.25 | 173.36 | 32.92 |
| 3 | 70 | −1.5 | −8.17 | 2.25 | 66.69 | 12.25 |
| 4 | 75 | −0.5 | −3.17 | 0.25 | 10.03 | 1.58 |
| 5 | 82 | 0.5 | 3.83 | 0.25 | 14.69 | 1.92 |
| 6 | 86 | 1.5 | 7.83 | 2.25 | 61.36 | 11.75 |
| 7 | 91 | 2.5 | 12.83 | 6.25 | 164.69 | 32.08 |
| Σ | 0 | 0 | 17.50 | 490.83 | 92.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:
r = 92.5 / √(17.5 × 490.8333) = 92.5 / 92.68 = 0.9981Nilai 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 r | Kekuatan hubungan linear (pedoman kasar) |
|---|---|
| 0.00 – 0.10 | praktis tidak ada |
| 0.10 – 0.30 | lemah |
| 0.30 – 0.50 | sedang |
| 0.50 – 0.70 | kuat |
| 0.70 – 1.00 | sangat 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:
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:
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:
r (manual) = 0.9981
statistics.correlation = 0.9981
r setelah nilai + 10 = 0.9981
r setelah nilai x 2 = 0.9981Uji signifikansi memakai scipy.stats dengan df = n − 2:
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:
r = 0.9981
t = 32.0429 dengan df = 4
p-value = 0.0000057Mari kita bedah kode di atas:
- 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(). - 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.
- 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.
- 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.