Korelasi

Mengukur hubungan antar kolom dengan korelasi, membaca matriksnya, dan membedakan hubungan dari kausalitas.

Daftar isi

Korelasi mengukur seberapa kuat dua kolom numerik bergerak bersama dan ke arah mana. Topik ini menggunakan pengukuran suhu ruangan dan konsumsi listrik harian sebuah rumah untuk memperkenalkan diagram pencar, koefisien korelasi, dan matriks korelasi dari df.corr(), lalu menegaskan batasnya. Korelasi yang tinggi menunjukkan hubungan, tetapi bukan bukti sebab-akibat.

Diagram pencar sebagai langkah pertama#

Diagram pencar (scatter plot) menampilkan setiap pasangan nilai dua kolom numerik sebagai satu titik pada bidang dua sumbu. Sumbu mendatar memuat nilai kolom pertama, sumbu tegak memuat nilai kolom kedua, dan satu titik mewakili satu baris data. Pola titik-titiknya memperlihatkan arah, kekuatan, dan bentuk hubungan sebelum angka apa pun dihitung.

Contoh data berisi dua belas hari pengukuran suhu rata-rata ruangan dalam derajat Celsius dan konsumsi listrik harian rumah dalam kilowatt-jam (kWh). Kedua kolomnya disimpan dalam dua daftar nilai Python yang urutannya saling bersesuaian, sehingga satu baris data berarti satu hari. Kode berikut menggambar diagram pencar kedua kolom lalu menyimpannya sebagai berkas PNG.

python diagram-pencar-listrik.py
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

# suhu rata-rata ruangan (derajat Celsius) dan konsumsi listrik harian rumah (kWh)
suhu = [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
konsumsi = [8.2, 8.5, 9.6, 10.0, 11.1, 11.8, 12.9, 13.4, 14.7, 15.0, 16.2, 17.1]

plt.figure(figsize=(6, 4.5))
plt.scatter(suhu, konsumsi, color="#DD8452")
plt.title("Suhu ruangan dan konsumsi listrik harian")
plt.xlabel("Suhu (derajat Celsius)")
plt.ylabel("Konsumsi listrik (kWh)")
plt.savefig("diagram-pencar-listrik.png", dpi=120)
print("Grafik tersimpan: diagram-pencar-listrik.png")
text Keluaran
Grafik tersimpan: diagram-pencar-listrik.png

Diagram pencar suhu ruangan dan konsumsi listrik harian
Diagram pencar suhu ruangan dan konsumsi listrik harian

Titik-titik pada gambar bergerak dari kiri bawah menuju kanan atas. Pola naik semacam ini menyatakan hubungan positif, yaitu konsumsi listrik cenderung naik ketika suhu naik. Titik-titiknya juga mengelompok dekat garis lurus, sehingga hubungannya terlihat linear dan kuat, meskipun tidak persis satu garis karena setiap hari memiliki pengaruh kecil yang berbeda.

Koefisien korelasi dan matriksnya#

Koefisien korelasi Pearson, yang dilambangkan rr, merangkum kekuatan dan arah hubungan linear dua kolom menjadi satu angka antara -1 dan 1. Rentangnya terbatas karena pembaginya menyamakan skala kedua kolom, sehingga korelasi suhu dalam Celsius dan Fahrenheit menghasilkan angka yang sama. Rumusnya membandingkan cara kedua kolom menyimpang dari rata-rata masing-masing, lalu menormalkannya sehingga nilainya tidak bergantung pada satuan:

r=∑(xi−xˉ)(yi−yˉ)∑(xi−xˉ)2∑(yi−yˉ)2 r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}

Pada DataFrame, metode df.corr() menghitung korelasi setiap pasangan kolom numerik sekaligus dan mengembalikannya sebagai matriks. Kolom pertamanya berisi suhu dan kolom kedua berisi konsumsi, sesuai urutan diagram pencarnya. Kode berikut menghitung matriks korelasi kedua kolom itu, dibulatkan ke tiga angka desimal.

python korelasi-listrik.py
import pandas as pd

# data pengukuran yang sama: suhu ruangan dan konsumsi listrik harian (kWh)
harian = pd.DataFrame({
    "suhu": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35],
    "konsumsi": [8.2, 8.5, 9.6, 10.0, 11.1, 11.8, 12.9, 13.4, 14.7, 15.0, 16.2, 17.1],
})

print(harian.corr().round(3))
text Keluaran
           suhu  konsumsi
suhu      1.000     0.997
konsumsi  0.997     1.000

Matriksnya dibaca dalam tiga langkah. Diagonal utamanya selalu bernilai 1,000 karena setiap kolom dikorelasikan dengan dirinya sendiri. Matriks tersebut simetris, sehingga sel baris suhu kolom konsumsi sama dengan sel baris konsumsi kolom suhu, dan cukup salah satu segitiganya yang dibaca. Sel yang tersisa memuat 0,997, yang menyatakan hubungan positif sangat kuat antara suhu dan konsumsi listrik, konsisten dengan pola diagram pencarnya.

Membaca kekuatan dan arah hubungan#

Tanda pada rr menyatakan arah, sedangkan besarannya menyatakan kekuatan. Panduan tafsir berikut bersifat kasar, batasannya berbeda antarbidang, dan konteks data tetap menjadi penentu utama. Tabelnya hanya memuat nilai positif, dan nilai negatif dibaca dengan kekuatan yang sama tanpa mengubah arah hubungannya.

Nilai rrTafsir kasar
Sekitar 0tidak ada hubungan linear yang tampak
0,3 sampai 0,5hubungan lemah
0,5 sampai 0,7hubungan sedang
0,7 sampai 1,0hubungan kuat

Korelasi kecil belum berarti tidak ada hubungan, karena korelasi hanya menangkap hubungan linear. Hubungan yang kuat tetapi berbentuk lengkung memberikan angka rr yang rendah, sehingga membaca angka tanpa diagram pencar mudah menyesatkan. Contoh berikut menunjukkan hubungan yang sempurna tetapi menghasilkan rr bernilai nol.

python korelasi-nonlinear.py
import numpy as np

x = np.linspace(-3, 3, 25)
y = x ** 2  # hubungan sangat kuat, tetapi tidak linear

r = np.corrcoef(x, y)[0, 1]
print(f"korelasi x dengan x kuadrat: {r:.3f}")
text Keluaran
korelasi x dengan x kuadrat: 0.000

Data pada contoh membentuk kurva kuadrat yang simetris, sehingga naiknya di sisi kanan tepat meniadakan turunnya di sisi kiri. Diagram pencar tetap diperlukan, karena bentuk lengkung seperti ini langsung terlihat padahal rr-nya nol. Korelasi juga sensitif terhadap pencilan, karena satu nilai ekstrem dapat membesarkan atau memperkecil rr secara signifikan, sehingga pengecekan pencilan sebaiknya mendahului penafsiran angka ini.

Korelasi bukan bukti kausalitas#

Korelasi tinggi memiliki setidaknya tiga penjelasan yang berbeda. Variabel pertama dapat memengaruhi variabel kedua, variabel kedua dapat memengaruhi variabel pertama, atau variabel ketiga menggerakkan keduanya sekaligus. Keberuntungan pengambilan sampel menambah kemungkinan keempat, terutama pada data yang jumlahnya kecil atau ketika ratusan pasangan kolom diuji sekaligus.

Contoh yang sering dikutip adalah konsumsi es krim dan kasus tenggelam yang naik-turun bersamaan sepanjang tahun. Tidak ada garis sebab-akibat di antara keduanya, karena penggerak sesungguhnya adalah musim panas yang menaikkan keduanya sekaligus. Pola serupa mudah ditemukan pada data operasional, karena dua metrik yang sama-sama mengikuti volume kegiatan akan tampak berkorelasi tinggi walaupun tidak saling memengaruhi.

Pada data suhu dan konsumsi listrik, korelasi 0,997 masuk akal secara mekanisme, karena ruangan yang panas membuat pendingin bekerja lebih keras. Kecocokan mekanisme tersebut tetap bukan bukti, melainkan hipotesis yang layak diuji, misalnya dengan mengamati konsumsi pada rentang suhu yang lebih lebar atau mengendalikan variabel lain seperti jumlah penghuni. Korelasi berfungsi sebagai petunjuk awal untuk menyusun hipotesis, sedangkan pengujian lanjutanlah yang mengangkatnya menjadi kesimpulan.

Ringkasan#

  • Diagram pencar memperlihatkan arah, kekuatan, dan bentuk hubungan sebelum angka korelasi dihitung.
  • df.corr() menghasilkan matriks simetris dengan diagonal 1 yang memuat korelasi setiap pasangan kolom numerik.
  • rr hanya mengukur hubungan linear, sensitif terhadap pencilan, dan bernilai nol pada hubungan kuat yang tidak linear.
  • Korelasi tinggi bukan bukti kausalitas karena variabel ketiga, arah sebab-akibat yang terbalik, atau kebetulan dapat menjelaskannya.

Referensi#