Regresi Linier Berganda (Pendugaan Parameter, Uji Hipotesis dan Kebaikan Model)
Tugas ini disusun untuk memenuhi tugas mata kuliah
Pengantar Model Linier
Dosen Pengampu:
Miftahus Sholihin, M.Si.
Disusun oleh:
Nama : Nazwa Khoirina
NIM : 3338240005
Kelas: 4B
PROGRAM STUDI STATISTIKA
FAKULTAS TEKNIK
UNIVERSITAS SULTAN AGENG TIRTAYASA
2026
Latihan Soal
Seorang peneliti ingin menganalisis faktor-faktor yang mempengaruhi nilai ujian mahasiswa (Y). Diduga bahwa nilai ujian dipengaruhi oleh:
X1 = jumlah jam belajar (jam/minggu)
X2 = tingkat kehadiran (%)
Peneliti mengumpulkan data dari 10 mahasiswa sebagai berikut:
PERTANYAAN
Estimasikan model regresi linier berganda menggunakan metode OLS berbasis matriks dan interpretasikan hasilnya?
Hitung Uji F dan uji t secara manual dan interpretasikan hasilnya?
Hitung nilai R² dan Adjusted R² secara manual dan interpretasikan hasilnya
Bandingkan hasil no 1 s.d 3 dengan fungsi lm.
Prediksikan nilai ujian mahasiswa jika jumlah jam belajar 1 jam/minggu namun kehadirannya 100%?
Jawaban
REGRESI LINIER BERGANDA (Y ~ X1 + X2)
Input Data
# --------------------------------------------
# Input Data
# --------------------------------------------
# X1 = Jumlah jam belajar (jam/minggu)
# X2 = Tingkat kehadiran (%)
# Y = Nilai ujian mahasiswa
data <- data.frame(
No = c(1:10),
Y = c(65, 70, 75, 80, 85, 78, 72, 90, 88, 95),
X1 = c(2, 3, 4, 5, 6, 5, 3, 7, 6, 8),
X2 = c(60, 65, 70, 75, 80, 72, 68, 85, 83, 90)
)# Melihat Data
library(DT)
library(htmltools)
library(magrittr)
datatable(
data,
caption = tags$caption(
style = 'caption-side: top; text-align: center; font-size:18px; font-weight: bold; color:#2C3E50;',
'Tabel Data Nilai Ujian, Jam Belajar, dan Kehadiran'
),
options = list(
pageLength = 10,
dom = 't',
initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'background-color': '#D4AC0D', 'color': '#FFFFFF'});",
"}"
)
)
) %>%
formatStyle(
columns = names(data),
backgroundColor = '#EBF5FB',
color = '#1B2631',
border = '1px solid #A9CCE3'
)Soal 1
Estimasi Model Regresi Linier Berganda Metode OLS
# Ambil Variabel dari Data
Y <- as.matrix(data$Y)
X1 <- data$X1
X2 <- data$X2
# Bentuk Matriks Desain (X)
## Tambahkan intercept pada (kolom 1)
X <- cbind(1, X1, X2)
# Hitung Beta Hat (OLS Matriks)
## Rumus: beta = (X'X)^(-1) X'Y
beta_hat <- solve(t(X) %*% X) %*% t(X) %*% Y
# Tampilkan hasil
beta_hat## [,1]
## 16.1360113
## X1 1.1698379
## X2 0.7744891
Interpretasi
Nilai yang diperoleh: \[ β₀ = 16,1360113 \]
\[ β₁ = 1,1698379 \] \[ β₂ = 0,7744891 \] Model Persamaan Regresi: \[ Ŷ = 16,1360113 + 1,169837 X_1 + 0,7744891 X_2 \]
Intercept (β₀ = 16,13601136)
Nilai intercept sebesar 16,1360113 menunjukkan bahwa jika jumlah jam belajar (X1) dan tingkat kehadiran (X2) bernilai 0, maka nilai ujian mahasiswa (Y) diperkirakan sebesar 16,1360113.
Koefisien X1 (β₁ = 1,1698370)
Koefisien X1 sebesar 1,169837 berarti setiap peningkatan 1 jam belajar per minggu, maka nilai ujian mahasiswa akan meningkat sebesar 1,169837 poin, dengan asumsi tingkat kehadiran (X2) tetap.
Koefisien X2 (β₂ = 0,774489)
Koefisien X2 sebesar 0,774489 berarti setiap peningkatan 1% tingkat kehadiran, maka nilai ujian mahasiswa akan meningkat sebesar 0,774489 poin, dengan asumsi jumlah jam belajar (X1) tetap.
Soal 2
Uji F dan Uji t
Uji F
# --------------------------------
# UJI-F (SIMULTAN)
# --------------------------------
# Tujuan: Menguji apakah X1 (Jumlah jam belajar (jam/minggu)) dan X2 (Tingkat kehadiran (%))
# secara bersama-sama berpengaruh terhadap Y (Nilai ujian mahasiswa)
# ==========================
# A. UJI-F MANUAL
# ==========================
# Jumlah data dan variabel
n <- length(Y)
k <- 2 # jumlah variabel bebas (X1, X2)
# Prediksi
# Menghitung nilai Y prediksi (Ŷ) dari model regresi
Y_hat <- X %*% beta_hat
# Residual
# Selisih antara nilai aktual Y dengan nilai prediksi Ŷ
e <- Y - Y_hat
# Rata-rata Y
# Menghitung rata-rata dari variabel Y
Y_mean <- mean(Y)
# SST (Total Sum of Squares)
# Mengukur total variasi data Y terhadap rata-ratanya
SST <- sum((Y - Y_mean)^2)
# SSE (Error Sum of Squares)
# Mengukur jumlah kesalahan (error) dari model
SSE <- sum(e^2)
# SSR (Regression Sum of Squares)
# Variasi Y yang bisa dijelaskan oleh model regresi
SSR <- SST - SSE
# Mean Square
MSR <- SSR / k
MSE <- SSE / (n - k - 1)
# -------------------
# Uji F
# -------------------
# F Hitung
F_hitung <- MSR / MSE
# p_value_F
p_value_F <- 1 - pf(F_hitung, df1 = k, df2 = n - k - 1)
# Menampilkan hasil
F_hitung## [1] 5172.116
## [1] 8.042123e-12
Uji t
# --------------------------------
# UJI-t (PARSIAL)
# --------------------------------
# Tujuan: Menguji pengaruh masing-masing variabel (X1 & X2) terhadap Y
# ==========================
# B. UJI-t
# ==========================
# Jumlah data dan variabel
n <- length(Y)
k <- 2 # jumlah variabel bebas (X1, X2)
# Menghitung invers dari matriks (X'X)
XtX_inv <- solve(t(X) %*% X)
# Menghitung matriks varians-kovarians dari beta (β̂)
var_beta <- MSE * XtX_inv
# Mengambil standard error dari masing-masing koefisien (akar diagonal)
se_beta <- sqrt(diag(var_beta))
# Menghitung nilai t hitung untuk setiap koefisien
t_hitung <- beta_hat / se_beta
# Menghitung p-value untuk uji t (dua sisi)
p_value_t <- 2 * (1 - pt(abs(t_hitung), df = n - k - 1))
# Menampilkan hasil
t_hitung## [,1]
## 5.688154
## X1 4.201468
## X2 13.900261
## [,1]
## 7.444177e-04
## X1 4.028204e-03
## X2 2.357834e-06
Interpretasi Uji F
Uji Hipotesis
\[ H_0: \beta_1 = \beta_2 = 0 \]Artinya, variabel X1 (jumlah jam belajar) dan X2 (tingkat kehadiran) tidak berpengaruh secara simultan (bersama-sama) terhadap Y (nilai ujian mahasiswa).
\[ H_1: \text{Minimal ada satu } \beta_i \neq 0 \]
Artinya, variabel bebas (X1 = jumlah jam belajar, X2 = tingkat kehadiran) berpengaruh secara simultan terhadap variabel respon (Y = nilai ujian mahasiswa).
Taraf Signifikansi
\[ α = 0,05 \]
Statistik Uji
F hitung = 5172,116
p-value = 8,042123e-12
\[ p-value < α → Tolak H_0 \]
\[ p-value > α → Terima H_0 \]
Keputusan
Karena p-value < α (8,042123e-12 < 0,05), maka Tolak H₀.
Kesimpulan
Pada taraf signifikansi 5% (α = 0,05), nilai p-value < α (8,042123e-12 < 0,05), sehingga H₀ ditolak. Artinya,secara simultan variabel X1 (jumlah jam belajar) dan X2 (tingkat kehadiran) berpengaruh signifikan terhadap nilai ujian mahasiswa (Y). Dengan demikian, model regresi yang digunakan layak untuk menjelaskan hubungan antara variabel bebas dan variabel respon.
Interpretasi Uji t
Untuk X1 (Jumlah jam belajar)
Uji Hipotesis \[ H_0: \beta_1 = 0 \]
X1 (Jumlah jam belajar) tidak berpengaruh terhadap Y (Nilai ujian mahasiswa)
\[ H_1: \beta_1 \neq 0 \]
X1 (Jumlah jam belajar) berpengaruh terhadap Y (Nilai ujian mahasiswa)
Taraf Signifikansi \[ α = 0,05 \]
Statistik Uji
t hitung = 4,201468
p-value = 4,028204e-03 = 0,004028204
\[ p-value < α → Tolak H_0 \]
\[ p-value > α → Terima H_0 \]
Keputusan
Karena p-value < α (0,004028204 < 0,05), maka Tolak H₀
Kesimpulan
Pada taraf signifikansi 5% (α = 0,05), nilai p-value < α (0,004028204 < 0,05), maka tolak H₀. Artinya, secara parsial variabel X1 (jumlah jam belajar) berpengaruh signifikan terhadap Y (nilai ujian mahasiswa).
Untuk X2 (Tingkat kehadiran)
Uji Hipotesis
\[ H_0: \beta_2 = 0 \]
X2 (Tingkat kehadiran) tidak berpengaruh terhadap Y (Nilai ujian mahasiswa)
\[ H_1: \beta_2 \neq 0 \]
X2 (Tingkat kehadiran) berpengaruh terhadap Y (Nilai ujian mahasiswa)
Taraf Signifikansi \[ α = 0,05 \]
Statistik Uji
t hitung = 13,900261
p-value = 2,357834e-06 = 0,000002357834
\[ p-value < α → Tolak H_0 \]
\[ p-value > α → Terima H_0 \]
Keputusan
Karena p-value < α (0,000002357834 < 0,05), maka Tolak H₀
Kesimpulan
Pada taraf signifikansi 5% (α = 0,05), nilai p-value < α (0,000002357834 < 0,05), maka tolak H₀. Artinya, secara parsial variabel X2 (tingkat kehadiran) berpengaruh signifikan terhadap Y (nilai ujian mahasiswa).
Kesimpulan Uji F dan Uji t
Secara simultan (uji F) dan parsial (uji t), variabel jumlah jam belajar (X1) dan tingkat kehadiran (X2) terbukti berpengaruh signifikan terhadap nilai ujian mahasiswa. Namun, berdasarkan nilai t hitung, variabel X2 memiliki pengaruh yang lebih kuat dibandingkan X1, yaitu sebesar 13,900261 dibandingkan dengan X1 sebesar 4,201468.
Soal 3
R² dan Adjusted R²
# Menggunakan nilai SST, SSR, dan SSE
# yang sudah dihitung pada bagian Uji-F sebelumnya
# SST = total variasi Y
# SSR = variasi Y yang dijelaskan oleh model
# SSE = variasi Y yang tidak dijelaskan oleh model
# SST (Total)
SST## [1] 831.6
## [1] 831.0376
## [1] 0.5623679
# Menghitung R^2
R2 <- SSR / SST
# Menghitung Adjusted R^2
n <- nrow(data) # n = jumlah observasi / jumlah data (banyaknya sampel)
k <- 2 # (X1 = jumlah jam belajar, X2 = tingkat kehadiran)
Adj_R2 <- 1 - ((SSE / (n - k - 1)) / (SST / (n - 1)))
# Menampilkan hasil
R2## [1] 0.9993238
## [1] 0.9991305
R² = 0,9993238 ≈ 99,93%
Adjusted R² = 0,9991305 ≈ 99,91%
Interpretasi
Koefisien Determinasi (R²)
Nilai koefisien determinasi (R²) sebesar 0,9993238 menunjukkan bahwa variabel bebas, yaitu X1 (jumlah jam belajar) dan X2 (tingkat kehadiran), mampu menjelaskan keragaman variabel respon (nilai ujian mahasiswa) sebesar 99,93%, sedangkan sisanya sebesar 0,07% dijelaskan oleh variabel lain di luar model.
Adjusted R²
Nilai Adjusted R² sebesar 0,9991305 menunjukkan bahwa setelah disesuaikan dengan jumlah variabel dan jumlah data, variabel bebas mampu menjelaskan keragaman variabel respon sebesar 99,91%, sedangkan sisanya sebesar 0,09% dijelaskan oleh variabel lain di luar model.
Soal 4
Perbandingan dengan lm()
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Coefficients:
## (Intercept) X1 X2
## 16.1360 1.1698 0.7745
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.31078 -0.14588 -0.05074 0.04440 0.56237
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.13601 2.83677 5.688 0.000744 ***
## X1 1.16984 0.27844 4.201 0.004028 **
## X2 0.77449 0.05572 13.900 2.36e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2834 on 7 degrees of freedom
## Multiple R-squared: 0.9993, Adjusted R-squared: 0.9991
## F-statistic: 5172 on 2 and 7 DF, p-value: 8.042e-12
Membuat Tabel Perbandingan Manual dengan lm()
options(scipen = 999)
# Mengambil hasil lm
coef_lm <- summary_model$coefficients
t_lm <- coef_lm[, "t value"]
p_lm <- coef_lm[, "Pr(>|t|)"]
# =========================
# Membuat tabel
# =========================
tabel <- data.frame(
Parameter = c(
"Intercept (β₀)",
"Koefisien X1 (β₁)",
"Koefisien X2 (β₂)",
"F hitung",
"p-value F",
"t Intercept",
"t X1",
"t X2",
"p-value Intercept",
"p-value X1",
"p-value X2",
"R²",
"Adjusted R²"
),
Manual = c(
beta_hat[1],
beta_hat[2],
beta_hat[3],
F_hitung,
p_value_F,
t_hitung[1],
t_hitung[2],
t_hitung[3],
p_value_t[1],
p_value_t[2],
p_value_t[3],
R2,
Adj_R2
),
lm = c(
coef(model)[1],
coef(model)[2],
coef(model)[3],
summary_model$fstatistic[1],
pf(summary_model$fstatistic[1],
summary_model$fstatistic[2],
summary_model$fstatistic[3],
lower.tail = FALSE),
t_lm[1],
t_lm[2],
t_lm[3],
p_lm[1],
p_lm[2],
p_lm[3],
summary_model$r.squared,
summary_model$adj.r.squared
)
)
# =========================
# Membuat Keterangan
# =========================
tabel$Keterangan <- ifelse(
round(tabel$Manual, 6) == round(tabel$lm, 6),
"Sama",
"Berbeda"
)
# =========================
# Membuat format angka
# =========================
format_angka <- function(x) {
if (abs(x) < 0.0001) {
return(format(x, scientific = TRUE)) # pakai E
} else {
return(round(x, 6)) # angka biasa dibuletin
}
}
tabel$Manual <- sapply(tabel$Manual, format_angka)
tabel$lm <- sapply(tabel$lm, format_angka)library(kableExtra)
knitr::kable(
tabel,
caption = "Tabel Perbandingan Hasil Manual dan lm()",
digits = 6,
align = "c"
) %>%
kable_styling(
full_width = FALSE,
position = "center",
font_size = 16
) %>%
row_spec(0, bold = TRUE, color = "white", background = "#2E86C1") %>%
row_spec(seq(1, nrow(tabel), 2), background = "#EBF5FB") %>%
row_spec(seq(2, nrow(tabel), 2), background = "#D6EAF8")| Parameter | Manual | lm | Keterangan |
|---|---|---|---|
| Intercept (β₀) | 16.136011 | 16.136011 | Sama |
| Koefisien X1 (β₁) | 1.169838 | 1.169838 | Sama |
| Koefisien X2 (β₂) | 0.774489 | 0.774489 | Sama |
| F hitung | 5172.115789 | 5172.115789 | Sama |
| p-value F | 8.042123e-12 | 8.042129e-12 | Sama |
| t Intercept | 5.688154 | 5.688154 | Sama |
| t X1 | 4.201468 | 4.201468 | Sama |
| t X2 | 13.900261 | 13.900261 | Sama |
| p-value Intercept | 0.000744 | 0.000744 | Sama |
| p-value X1 | 0.004028 | 0.004028 | Sama |
| p-value X2 | 2.357834e-06 | 2.357834e-06 | Sama |
| R² | 0.999324 | 0.999324 | Sama |
| Adjusted R² | 0.999131 | 0.999131 | Sama |
Interpretasi
Berdasarkan hasil perbandingan antara perhitungan manual dan hasil yang diperoleh menggunakan fungsi \(lm()\) di R, seluruh parameter yang diestimasi, meliputi koefisien regresi (β), nilai t hitung, p-value uji t, F hitung, p-value uji F, serta koefisien determinasi (R² dan Adjusted R²), menunjukkan hasil yang sama. Perbedaan yang muncul hanya disebabkan oleh pembulatan angka. Dengan demikian, dapat disimpulkan bahwa perhitungan manual yang dilakukan telah sesuai dan valid serta konsisten dengan hasil estimasi menggunakan metode OLS pada fungsi \(lm()\).
Soal 5
Prediksi Nilai Ujian Mahasiswa
# Prediksi jika:
# X1 = 1 jam/minggu
# X2 = 100%
# Data baru yang ingin diprediksi
data_baru <- data.frame(
X1 = 1,
X2 = 100
)
# Melakukan prediksi
predict(model, newdata = data_baru)## 1
## 94.75476
Interpretasi
Berdasarkan model regresi linier berganda:
\[ Ŷ = 16,1360113 + 1,169837 X_1 + 0,7744891 X_2 \]
Dengan kondisi:
X1 = 1 jam/minggu
X2 = 100%
\[ Ŷ = 16,1360113 + 1,169837(1) + 0,7744891(100) = 94,75476 \]
maka hasil prediksi menunjukkan bahwa mahasiswa yang belajar selama 1 jam per minggu dengan tingkat kehadiran 100% diperkirakan memperoleh nilai ujian sebesar 94,75476. Hal ini menunjukkan bahwa meskipun jumlah jam belajar relatif sedikit, tingkat kehadiran yang tinggi memberikan kontribusi besar serta berpengaruh signifikan terhadap peningkatan nilai ujian mahasiswa.