Kursus
Pada intinya, R-squared menjelaskan proporsi varians pada variabel dependen yang dapat diatribusikan kepada variabel independen (atau beberapa variabel). Kita dapat memandangnya sebagai ukuran seberapa baik model kita menangkap pola pada data, dan seberapa banyak yang tersisa sebagai derau yang tak terjelaskan. Kesederhanaan dan interpretasinya yang langsung membuatnya banyak digunakan dalam diagnostik regresi linear, terutama pada regresi linear sederhana dan berganda.
Dalam artikel ini, kita akan membahas makna, perhitungan, interpretasi, dan jebakan umum terkait R-squared, sehingga kita dapat menggunakannya dengan percaya diri sekaligus penuh kehati-hatian. Selain itu, kita akan melihat beberapa contoh potongan kode untuk menghitung R-squared di R dan Python.
Apa Itu R-Squared?
R-squared, dilambangkan sebagai R², adalah ukuran statistik untuk menilai goodness of fit pada model regresi. Nilai ini memberi tahu kita seberapa besar variasi pada variabel dependen yang dapat dijelaskan oleh model.
Nilai R-squared berada di antara 0 dan 1:
- R² = 0 berarti model tidak menjelaskan variabilitas sama sekali;
- R² = 1 berarti model menjelaskan seluruhnya.
Walaupun konsepnya mudah, interpretasinya memerlukan pendekatan yang bernuansa, terutama saat berpindah dari teori ke praktik.
Cara Menghitung R-Squared
Ada beberapa cara yang secara matematis ekuivalen untuk menghitung R-squared, masing-masing menawarkan wawasan berbeda tentang apa arti “fit” sebenarnya, tergantung konteks—regresi sederhana, regresi berganda, aljabar matriks, atau pemodelan Bayesian. Mari kita telusuri pendekatan yang paling sering digunakan.
1. Menggunakan residual sum of squares dan total sum of squares
Ini adalah rumus yang paling standar dan paling banyak digunakan:

dengan:
- RSS adalah residual sum of squares, yang mengukur variasi yang tidak dijelaskan model,
- TSS adalah total sum of squares, yang mengukur total variasi pada data.
Dengan kata lain, R-squared merepresentasikan fraksi dari total variasi yang dapat dijelaskan model.
Pendekatan ini menyoroti seberapa jauh kinerja model regresi lebih baik dibanding sekadar memprediksi rata-rata respons.
2. Menggunakan explained sum of squares dan total sum of squares
R-squared juga dapat dinyatakan langsung dalam hal varians yang dijelaskan:

dengan:
- ESS adalah explained sum of squares, yang mengukur seberapa banyak varians ditangkap oleh model,
- TSS adalah total sum of squares, yang mengukur total variasi pada data.
Kita dapat melihat bahwa versi ini menekankan seberapa banyak total variasi pada keluaran yang ditangkap oleh prediksi model. Dengan kata lain, fokusnya bergeser dari apa yang gagal kita jelaskan (RSS) ke apa yang berhasil kita jelaskan (ESS), memberikan bingkai yang lebih optimistis.
Untuk telaah mendalam tentang tiga komponen sum of squares, baca Understanding Sum of Squares: A Guide to SST, SSR, and SSE.
3. Menggunakan explained sum of squares dan residual sum of squares
Dalam konteks tabel ANOVA, R-squared secara alami muncul dari dekomposisi total variabilitas:

dengan:
- ESS adalah explained sum of squares, yang mengukur seberapa banyak varians ditangkap oleh model,
- RSS adalah residual sum of squares, yang mengukur variasi yang tidak dijelaskan model.
Formulasi ini menunjukkan seberapa banyak total varians yang ditangkap oleh model, dan seberapa banyak yang tersisa tidak terjelaskan.
Perspektif ini agak unik karena mengaitkan R-squared dengan pengujian hipotesis. Ini karena rasio ESS terhadap RSS digunakan untuk menghitung F-statistic, sehingga R-squared menjadi bagian penting dari pengujian signifikansi dalam pelaporan bergaya ANOVA.
4. Menggunakan koefisien korelasi pada regresi linear sederhana
Tiga metode terakhir adalah rumus yang setara secara aljabar yang diturunkan dari dekomposisi regresi. Sekarang, berikut perspektif baru:
Pada regresi linear sederhana dengan hanya satu prediktor, R-squared memiliki jalan pintas:

dengan
- r adalah koefisien korelasi Pearson antara x dan y.
Rumus ini menunjukkan bagaimana hubungan linear yang kuat antara dua variabel beralih langsung menjadi nilai R-squared yang tinggi.
Untuk memahami teori dasar di balik regresi linear sederhana, pelajari Simple Linear Regression: Everything You Need to Know.
5. Menggunakan mean squared error dan varians keluaran
R-squared dapat dihitung sebagai ukuran kesalahan model yang dinormalisasi:

dengan:
- MSE adalah mean squared error dari model,
- Var(y) adalah varians keluaran sebenarnya.
Kerangka ini sangat relevan saat membandingkan model pada skala atau satuan yang berbeda, karena menormalkan kesalahan model dengan sebaran data keseluruhan.
6. Menggunakan varians nilai prediksi
Dengan asumsi residual tidak berkorelasi dengan prediksi, R-squared juga dapat ditafsirkan sebagai fraksi varians yang ditangkap oleh model:

dengan:
- Var(ŷ) adalah varians dari prediksi model,
- Var(y) adalah varians keluaran sebenarnya.
Versi ini menyoroti seberapa baik prediksi itu sendiri mencerminkan sebaran data aktual.
Menafsirkan R-Squared
Seperti telah disebutkan sebelumnya, R-squared mudah dihitung tetapi sedikit lebih rumit untuk ditafsirkan secara bermakna.
- R-squared tinggi berarti model menjelaskan porsi besar varians. Namun, ini tidak berarti model kita pasti benar atau berguna.
- R-squared rendah berarti hanya sedikit varians yang dijelaskan oleh model. Ini tidak selalu buruk, terutama pada ilmu sosial atau data yang bising, di mana R-squared rendah sering kali diharapkan.
Penting untuk diingat bahwa R-squared mengukur korelasi, tetapi tidak mengukur kausalitas. Hanya karena prediktor kita menjelaskan keluaran tidak berarti mereka menyebabkannya, karena korelasi tetap bukan kausalitas. Selain itu, R-squared tidak menunjukkan apakah prediksi akurat.
Berikut dua sumber yang berguna tentang topik lanjutan terkait regresi linear:
- Variance Inflation Factor (VIF): Mengatasi Multikolinearitas dalam Analisis Regresi
- QR Decomposition dalam Machine Learning: Panduan Terperinci
Kapan Menggunakan R-Squared
R-squared dapat sangat membantu jika digunakan pada situasi yang tepat. Ukuran ini sesuai untuk:
- Membandingkan model dengan jumlah prediktor yang sama.
- Menjelaskan seberapa banyak varians dalam suatu dataset yang dipertanggungjawabkan oleh model.
Di sisi lain, R-squared dapat menyesatkan dalam skenario berikut:
- Menambahkan prediktor yang tidak relevan, yang menghasilkan overfitting. Dalam kasus ini, R-squared selalu meningkat meskipun kinerja prediktif model tidak membaik.
- Membandingkan model dengan jumlah prediktor yang berbeda, yaitu dengan kompleksitas berbeda. Di sini, adjusted R-squared adalah pilihan yang lebih baik. Saya akan membahas lebih lanjut tentang adjusted R-squared nanti.
Contoh R-Squared di R dan Python
Sekarang mari ilustasikan konsep R-squared di R dan Python menggunakan dataset Kaggle Fish Market. Dalam kedua bahasa pemrograman, kita akan membangun dua model:
- Model 1: Memprediksi berat ikan menggunakan empat prediktor.
- Model 2: Menambahkan satu prediktor acak yang tidak relevan.
Contoh R
Mari mulai dengan R.
Model 1
# Load data
fish <- read.csv("Fish.csv")
# Model 1
model1 <- lm(Weight ~ Length1 + Length2 + Height + Width, data=fish)
summary(model1)$r.squared
Keluaran:
[1] 0.8673
Model 2
# Model 2 with an irrelevant predictor
fish$random_noise <- rnorm(nrow(fish))
model2 <- lm(Weight ~ Length1 + Length2 + Height + Width + random_noise, data=fish)
summary(model2)$r.squared
Keluaran:
[1] 0.8679
Seperti yang kita lihat, R-squared sedikit meningkat setelah menambahkan prediktor yang tidak relevan (Model 2). Namun, itu tidak berarti model menjadi lebih baik. Bagaimanapun, kita hanya menambahkan derau acak.
Untuk bacaan lebih lanjut terkait topik ini, lihat tutorial berikut:
Dan jangan lupa untuk mendaftar di kursus khusus kami:
Contoh Python
Sekarang, mari coba di Python.
Model 1
import pandas as pd
import statsmodels.api as sm
import numpy as np
# Load data
fish = pd.read_csv('Fish.csv')
X1 = fish[['Length1', 'Length2', 'Height', 'Width']]
y = fish['Weight']
# Model 1
X1 = sm.add_constant(X1)
model1 = sm.OLS(y, X1).fit()
print(model1.rsquared)
Keluaran:
0.8673
Model 2
# Model 2 with an irrelevant predictor
fish['random_noise'] = np.random.randn(len(fish))
X2 = fish[['Length1', 'Length2', 'Height', 'Width', 'random_noise']]
X2 = sm.add_constant(X2)
model2 = sm.OLS(y, X2).fit()
print(model2.rsquared)
Keluaran:
0.8679
Sekali lagi, kita mengamati sedikit peningkatan nilai R-squared, tetapi ini hanya menangkap derau acak.
Untuk terus belajar, daftarlah di kursus kami:
- Introduction to Regression with statsmodels in Python dan
- Intermediate Regression with statsmodels in Python
R-Squared vs. Metrik Terkait
Sekarang kita akan secara singkat membandingkan R-squared dengan dua metrik terkait: adjusted R-squared dan predicted R-squared.
R-squared vs. adjusted R-squared
Berbeda dengan R-squared, adjusted R-squared memperhitungkan jumlah prediktor. Secara khusus, ia memberi penalti pada model yang memasukkan prediktor yang tidak perlu:

dengan:
- n adalah jumlah observasi,
- p adalah jumlah prediktor.
Metrik ini hanya meningkat jika prediktor baru benar-benar meningkatkan model secara bermakna, dan dapat menurun pada kasus sebaliknya. Baca tutorial kami untuk mempelajari lebih lanjut tentang perluasan penting ini: Adjusted R-Squared: A Clear Explanation with Examples.
R-squared vs. predicted R-squared
Sementara R-squared biasa menunjukkan seberapa baik model berkinerja pada data pelatihan, predicted R-squared memberi tahu kita seberapa baik kinerjanya pada data baru yang belum terlihat. Maka dari itu, metrik ini mengevaluasi kemampuan generalisasi model.
Predicted R-squared dihitung menggunakan cross-validation atau dengan menyisihkan sebagian data pelatihan untuk pengujian lebih lanjut. Nilainya dapat jauh lebih rendah daripada R-squared biasa jika model mengalami overfitting. Karena itu, skenario di mana kita memperoleh nilai R-squared biasa yang tinggi tetapi predicted R-squared rendah sangat mungkin mengindikasikan overfitting model.
Miskonsepsi Umum tentang R-Squared
Mari kita lihat beberapa mitos populer tentang R-squared, beserta keadaan yang sebenarnya:
- “R-squared tinggi selalu berarti model yang baik.” Ini tidak selalu benar. R-squared bisa tinggi untuk model yang overfit atau model yang dibangun di atas korelasi semu. Jelas, dalam kedua kasus tersebut, model tidak bisa disebut baik.
- “R-squared mengukur daya prediksi.” Pada kenyataannya, ini hanya mengukur kecocokan model pada data pelatihan dan tidak mengatakan apa pun tentang data yang belum terlihat. Untuk mengevaluasi kinerja model di masa depan, kita memerlukan metrik lain seperti predicted R-squared yang telah dibahas di atas.
- “Kita harus selalu mengincar R-squared yang tinggi.” Tidak selalu. Ini tergantung domain, serta kualitas data itu sendiri. Seperti yang telah disebutkan sebelumnya dalam artikel ini, untuk ilmu sosial seperti psikologi atau sejarah, nilai R-squared bisa sangat rendah (0,1 atau bahkan kurang) dan tetap bermakna. Hal yang sama berlaku untuk data yang bising, di mana nilai R-squared rendah sangat diharapkan.
Kesimpulan
Singkatnya, kita mempelajari apa itu R-squared, cara menghitung metrik ini (baik secara matematis maupun di R dan Python), kapan menggunakannya dan kapan menghindarinya, serta bagaimana menafsirkan hasilnya. Selain itu, kita menyinggung dua metrik terkait dan beberapa miskonsepsi luas tentang R-squared.
Intinya, R-squared adalah ukuran kecocokan model regresi yang berguna, intuitif, dan lugas. Ini adalah titik awal yang bagus untuk evaluasi model, tetapi harus digunakan dengan bijak, ditafsirkan bersama metrik lainnya, dan tidak disalahartikan sebagai keseluruhan gambaran. Hal ini terutama berlaku untuk konteks regresi berganda dan pemilihan model.
IBM Certified Data Scientist (2020), sebelumnya Ahli Geologi/Geomodeler Perminyakan untuk ladang minyak dan gas di seluruh dunia dengan pengalaman kerja internasional lebih dari 12 tahun. Mahir dalam Python, R, dan SQL. Bidang keahlian: pembersihan data, manipulasi data, visualisasi data, analisis data, pemodelan data, statistik, storytelling, machine learning. Berpengalaman luas dalam mengelola komunitas data science serta menulis/meninjau artikel dan tutorial tentang data science dan topik karier.
FAQ R-squared
Apa itu R-squared?
R-squared, dilambangkan sebagai R², adalah ukuran statistik goodness of fit dalam model regresi, yang menunjukkan seberapa besar variasi pada variabel dependen dapat dijelaskan oleh model.
Bagaimana cara menghitung R-squared?
Rumus paling umum untuk menghitung R-squared adalah: R2=1-RSS/TSS, di mana RSS adalah residual sum of squares dan TSS adalah total sum of squares.
Nilai apa saja yang dapat diambil oleh R-squared?
Nilai R-squared berada antara 0 dan 1, di mana R²=0 berarti model tidak menjelaskan variabilitas sama sekali dan R²=1 berarti model menjelaskannya seluruhnya.
Bagaimana menafsirkan R-squared?
R-squared tinggi berarti model menjelaskan porsi besar varians pada data pelatihan, sedangkan R-squared rendah berarti sedikit varians yang dijelaskan oleh model. R-squared tidak mengukur kausalitas atau mengatakan apa pun tentang kebenaran atau kegunaan model.
Kapan Anda menggunakan R-squared?
R-squared dapat membantu membandingkan model dengan jumlah prediktor yang sama atau menjelaskan seberapa banyak varians dalam suatu dataset yang dipertanggungjawabkan oleh model.

