Regresi Berganda

Model dengan beberapa prediktor dan kehati-hatian penafsirannya.

Daftar isi

Regresi berganda (multiple regression) memodelkan satu variabel respons numerik dengan dua prediktor atau lebih, sehingga pengaruh setiap prediktor dihitung sambil menahan prediktor lainnya tetap. Topik ini memperluas model jam belajar dengan prediktor kedua berupa persentase kehadiran, membandingkan koefisiennya dengan koefisien pada model sederhana sebelum kehadiran masuk, dan menyinggung persoalan kolinearitas antar prediktor. Bagian akhir membahas mengapa koefisien pada regresi data observasional tidak boleh langsung dibaca sebagai efek kausal.

Data dengan prediktor kedua#

Data contohnya kembali berupa 30 siswa, tetapi kali ini dua variabel penjelas disusun bersamaan. Jam belajar ditarik seragam di antara 1 dan 8. Kehadiran dibangkitkan mengikuti jam belajar, yaitu 66 ditambah 2,6 kali jam dengan gangguan acak, kemudian dibatasi maksimum 100 persen. Nilai ujian disusun dari pola dasar 30 ditambah 1,5 kali jam belajar ditambah 0,5 kali kehadiran, lalu diberi gangguan acak normal dengan simpangan baku 3. Dengan susunan ini, kehadiran sungguh memengaruhi nilai dan pada saat yang sama berkorelasi dengan jam belajar.

r
library(tidyverse)

set.seed(2026)
n <- 30
nama <- c("Ali", "Budi", "Citra", "Dewi", "Eka", "Fajar", "Gita", "Hana", "Indra", "Joko",
          "Kartika", "Laila", "Maya", "Nanda", "Oki", "Putri", "Rahmat", "Sari", "Tono", "Umar",
          "Vina", "Wawan", "Yuni", "Zaki", "Bagas", "Dian", "Farhan", "Gading", "Halim", "Intan")
jam <- round(runif(n, min = 1, max = 8), 1)
kehadiran <- pmin(100, round(66 + 2.6 * jam + rnorm(n, mean = 0, sd = 5), 1))
nilai <- round(30 + 1.5 * jam + 0.5 * kehadiran + rnorm(n, mean = 0, sd = 3), 1)
belajar <- tibble(siswa = nama, jam = jam, kehadiran = kehadiran, nilai = nilai)
belajar
text Keluaran
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# A tibble: 30 × 4
   siswa   jam kehadiran nilai
   <chr> <dbl>     <dbl> <dbl>
 1 Ali     5.9      88.1  87.2
 2 Budi    4.9      81.8  80.4
 3 Citra   2        72.3  67.9
 4 Dewi    3        69.8  71.8
 5 Eka     4.9      82.2  79.7
 6 Fajar   1.2      67.5  62  
 7 Gita    4.3      76.4  74  
 8 Hana    7        77.2  76.3
 9 Indra   2.8      80.6  75.8
10 Joko    5.1      79.5  75.5
# ℹ 20 more rows

Tabel memuat empat kolom, yaitu siswa, jam, kehadiran, dan nilai. Nilai ujian kini dipengaruhi dua sumber sekaligus, sehingga satu prediktor saja jelas tidak cukup untuk menjelaskannya. Persamaan model yang hendak diestimasi berbentuk

nilai=β0+β1×jam+β2×kehadiran+ε \text{nilai} = \beta_0 + \beta_1 \times \text{jam} + \beta_2 \times \text{kehadiran} + \varepsilon

dengan β1\beta_1 dan β2\beta_2 sebagai pengaruh masing-masing prediktor sambil saling menahan.

Korelasi antar prediktor#

Sebelum menyesuaikan model berganda, hubungan antar prediktor patut diperiksa lebih dahulu karena kehadiran sengaja dibangkitkan mengikuti jam belajar.

r
cor(belajar$jam, belajar$kehadiran)
text Keluaran
[1] 0.7096231

Korelasi 0,71 tergolong cukup kuat untuk ukuran sampel 30 observasi. Siswa yang belajar lebih lama dalam data ini memang cenderung hadir lebih rajin, sehingga kedua prediktor bergerak bersama sebagian besar waktunya. Kondisi prediktor yang saling berkorelasi disebut multikolinearitas (multicollinearity), dan pada tingkat ini kondisinya masih bisa ditangani, tetapi konsekuensinya perlu diantisipasi pada pembacaan koefisien.

Membandingkan model sederhana dan berganda#

Model sederhana nilai ~ jam disesuaikan terlebih dahulu sebagai pembanding, lalu koefisiennya diambil dengan coef().

r
model_sederhana <- lm(nilai ~ jam, data = belajar)
coef(model_sederhana)
text Keluaran
(Intercept)         jam 
  61.867440    3.125996 

Model sederhana melaporkan kemiringan 3,126 per jam belajar. Angka ini jauh melampaui pola dasar 1,5 yang dipakai saat menyusun datanya. Penyebabnya adalah kehadiran yang tidak masuk model, sedangkan kehadiran berkorelasi positif dengan jam belajar, sehingga pengaruh kehadiran terserap ke dalam koefisien jam. Koefisien pada model sederhana menyatakan gabungan pengaruh jam belajar dan pengaruh variabel lain yang bergerak bersamanya.

Membaca keluaran model berganda#

Model berganda menambahkan kehadiran ke sisi kanan formula, dan ringkasannya dibaca dengan struktur yang sama seperti model sederhana.

r
model_berganda <- lm(nilai ~ jam + kehadiran, data = belajar)
summary(model_berganda)
text Keluaran

Call:
lm(formula = nilai ~ jam + kehadiran, data = belajar)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.6181 -1.5219  0.1619  1.6065  4.7529 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  36.7627     6.8514   5.366 1.14e-05 ***
jam           2.1478     0.3722   5.771 3.88e-06 ***
kehadiran     0.3747     0.1012   3.704 0.000963 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.504 on 27 degrees of freedom
Multiple R-squared:  0.8523,	Adjusted R-squared:  0.8414 
F-statistic: 77.92 on 2 and 27 DF,  p-value: 6.101e-12

Koefisien jam turun dari 3,126 pada model sederhana menjadi 2,148 setelah kehadiran masuk. Penurunan itulah buah dari kontrol, karena koefisien jam kini menyatakan perubahan nilai ujian rata-rata per tambahan satu jam belajar dengan kehadiran ditahan tetap. Koefisien kehadiran sebesar 0,375 menyatakan hal yang serupa, kali ini dengan jam belajar ditahan tetap. Kedua p-value sama-sama kecil, sehingga kedua prediktor menyumbang penjelasan yang tidak saling menggantikan sepenuhnya.

Kualitas model juga membaik dibandingkan model sederhana. Multiple R-squared naik ke 0,8523 karena dua prediktor menjelaskan lebih banyak variasi nilai, sedangkan residual standard error turun ke 2,504. Derajat bebasnya menyusut satu menjadi 27 karena satu koefisien tambahan harus diestimasi, dan itulah sebabnya adjusted R-squared 0,8414 dipakai sebagai pembanding yang adil antar model dengan jumlah prediktor yang berbeda. Interpretasi koefisien kehadiran mengikuti pola yang sama, yaitu setiap tambahan satu persen kehadiran dihubungkan dengan kenaikan nilai ujian rata-rata 0,375 poin sementara jam belajarnya ditahan tetap. Dua koefisien dengan satuan berbeda tidak boleh dibandingkan besarannya secara langsung, karena satu poin pada skala 0 sampai 8 tidak setara dengan satu poin pada skala 0 sampai 100.

Kolinearitas dan batas penafsiran#

Korelasi 0,71 antar prediktor menimbulkan dua konsekuensi yang terlihat pada keluaran di atas. Pertama, error standar koefisien menjadi besar karena sisi kanan model sulit memisahkan kontribusi dua prediktor yang bergerak bersama. Kedua, estimasi koefisien menjadi goyah, yaitu berubah besar setiap kali prediktor lain masuk atau keluar model, sebagaimana kemiringan jam yang melompat dari 3,126 ke 2,148. Multikolinearitas yang berat bahkan dapat membuat seluruh koefisien tidak signifikan meskipun R-squared modelnya tinggi.

Karena itu, penafsiran koefisien berganda selalu memerlukan dua kehati-hatian. Koefisien hanya sah dibaca dalam lingkup prediktor lain yang ikut berada dalam model, dan nilai yang diperoleh tetap merupakan asosiasi pada data, bukan efek kausal yang dijamin. Rancangan percobaan dengan penugasan acak, bukan penambahan prediktor, yang menjadi jalan menuju klaim sebab akibat.

Ringkasan#

  • Regresi berganda menambahkan prediktor dengan tanda + pada formula, dan setiap koefisiennya dibaca sambil menahan prediktor lain tetap.
  • Koefisien jam turun dari 3,126 pada model sederhana menjadi 2,148 setelah kehadiran masuk, karena model sederhana menyerap pengaruh prediktor lain yang berkorelasi dengannya.
  • Korelasi 0,71 antar prediktor menandakan multikolinearitas yang menaikkan error standar dan menggoyahkan estimasi koefisien.
  • Adjusted R-squared 0,8414 menjadi pembanding antar model karena memperhitungkan banyaknya prediktor, sedangkan R-squared biasa selalu naik ketika prediktor ditambahkan.
  • Koefisien regresi pada data observasional menyatakan asosiasi terkendali, bukan efek kausal yang ditetapkan rancangan percobaan.

Referensi#