# Input Data
data <- data.frame(
Mahasiswa = 1:10,
Jam_Belajar = c(2,3,4,5,6,5,3,7,6,8),
Kehadiran = c(60,65,70,75,80,72,68,85,83,90),
Nilai_Ujian = c(65,70,75,80,85,78,72,90,88,95)
)
# Tampilkan data
print(data)
## Mahasiswa Jam_Belajar Kehadiran Nilai_Ujian
## 1 1 2 60 65
## 2 2 3 65 70
## 3 3 4 70 75
## 4 4 5 75 80
## 5 5 6 80 85
## 6 6 5 72 78
## 7 7 3 68 72
## 8 8 7 85 90
## 9 9 6 83 88
## 10 10 8 90 95
# Penentuan Variabel untuk Analisis
Y <- as.matrix(data$Nilai_Ujian) # Variabel respon
X1 <- data$Jam_Belajar # Variabel bebas 1
X2 <- data$Kehadiran # Variabel bebas 2
# Matriks X (dengan intercept)
X <- cbind(1, X1, X2)
Bentuk Umum Persamaan Regresi Ŷ = β₀ + β₁X₁ + β₂X₂
Rumus OLS β̂ = (X’X)⁻¹ X’Y
beta_hat <- solve(t(X) %*% X) %*% t(X) %*% Y
beta_hat
## [,1]
## 16.1360113
## X1 1.1698379
## X2 0.7744891
Diperoleh model regresi linier:
Ŷ = 16.136 + 1.1698X₁ + 0.774X₂
Interpretasi:
β₀ (intercept): 16.136, nilai ujian saat jam belajar dan kehadiran = 0
β₁:1.1698 ( Jam belajar), setiap kenaikan 1 jam belajar akan meningkatkan nilai ujian sebesar β₁ (1.1698), dengan asumsi kehadiran tetap/Konstan
-β₂:0,774 (Kehadiran), setiap kenaikan 1% kehadiran akan meningkatkan nilai ujian sebesar β₂ (0,774), dengan asumsi jam belajar tetap/Konstan
# Prediksi
Y_hat <- X %*% beta_hat
# Residual
e <- Y - Y_hat
# Rata-rata Y
Y_mean <- mean(Y)
# SST
SST <- sum((Y - Y_mean)^2)
# SSE
SSE <- sum(e^2)
# SSR
SSR <- SST - SSE
# Derajat bebas
n <- nrow(X)
k <- 2 # jumlah variabel bebas
Hipotesis:
H₀ : β₁ = β₂ = 0 (Jam belajar dan kehadiran tidak berpengaruh terhadap nilai Ujian)
H₁ : minimal satu koefisien ≠ 0
F_hit <- (SSR/k) / (SSE/(n-k-1))
F_hit
## [1] 5172.116
# F tabel
F_tabel <- qf(0.95, df1 = k, df2 = n - k - 1)
F_tabel
## [1] 4.737414
F_hit > F_tabel
## [1] TRUE
# p-value
p_value_F <- pf(F_hit, df1 = k, df2 = n - k - 1, lower.tail = FALSE)
p_value_F
## [1] 8.042129e-12
# Keputusan
p_value_F < 0.05
## [1] TRUE
Berdasarkan hasil uji F, diperoleh bahwa Fhitung lebih besar dibandingkan dengan Ftabel dan Nilai p-value < 0.05 maka H0 ditolak. Artinya, secara simultan variabel jam belajar dan kehadiran berpengaruh signifikan terhadap nilai ujian.
Hipotesis:
Untuk X1:
H₀: β₁ = 0 → X1 tidak berpengaruh terhadap Y
H₁: β₁ ≠ 0 → X1 berpengaruh terhadap Y
Untuk X2:
H₀: β₂ = 0 → X2 tidak berpengaruh terhadap Y
H₁: β₂ ≠ 0 → X2 berpengaruh terhadap Y
# KTG (σ²)
KTG <- SSE / (n - k - 1)
KTG
## [1] 0.08033827
# (X'X)⁻¹
XtX_inv <- solve(t(X) %*% X)
XtX_inv
## X1 X2
## 100.167606 9.4864928 -1.95924360
## X1 9.486493 0.9649988 -0.19003993
## X2 -1.959244 -0.1900399 0.03864224
# varians koefisien
var_b <- KTG * XtX_inv
var_b
## X1 X2
## 8.0472918 0.76212839 -0.15740223
## X1 0.7621284 0.07752633 -0.01526748
## X2 -0.1574022 -0.01526748 0.00310445
# standard error
se_b <- sqrt(diag(var_b))
se_b
## X1 X2
## 2.83677490 0.27843551 0.05571759
# t hitung
t_hit <- beta_hat / se_b
t_hit
## [,1]
## 5.688154
## X1 4.201468
## X2 13.900261
# t tabel
t_tabel <- qt(0.975, df = n - k - 1)
t_tabel
## [1] 2.364624
# p-value
p_value_t <- 2 * pt(-abs(t_hit), df = n - k - 1)
p_value_t
## [,1]
## 7.444177e-04
## X1 4.028204e-03
## X2 2.357834e-06
# Keputusan
abs(t_hit) > t_tabel
## [,1]
## TRUE
## X1 TRUE
## X2 TRUE
p_value_t < 0.05
## [,1]
## TRUE
## X1 TRUE
## X2 TRUE
Berdasarkan uji t:
Jam Belajar (X₁):
t hitung = 4.201 > t tabel = 2.364
p-value = 0.004 < 0.05
Kehadiran (X₂):
t hitung = 13.900 > t tabel = 2.364
p-value = 0.000002 < 0.05
sehingga H₀ ditolak
Dengan demikian, |t hitung| > t tabel dan p-value < 0.05, maka variabel berpengaruh signifikan. Hasil ini menunjukkan adanya pengaruh masing-masing variabel secara parsial terhadap nilai ujian.
R2 <- SSR / SST
R2
## [1] 0.9993238
Adj_R2 <- 1 - ((SSE/(n-k-1)) / (SST/(n-1)))
Adj_R2
## [1] 0.9991305
Nilai Koefisien Determinasi (R²) sebesar 0.9993238 berarti sekitar 99.93% variasi nilai Ujian dapat dijelaskan oleh variabel Jam belajar (X1) dan Kehadiran (X2) dalam model. Sedangkan sisanya 0.07% dijelaskan oleh faktor lain di luar model.
Nilai Adjusted R² = 0.9991 menunjukkan bahwa sekitar 99.91% variasi nilai ujian mahasiswa dapat dijelaskan oleh variabel jam belajar dan kehadiran, setelah mempertimbangkan jumlah variabel dalam model.
model <- lm(Nilai_Ujian ~ Jam_Belajar + Kehadiran, data = data)
summary(model)
##
## Call:
## lm(formula = Nilai_Ujian ~ Jam_Belajar + Kehadiran, 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 ***
## Jam_Belajar 1.16984 0.27844 4.201 0.004028 **
## Kehadiran 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
cbind(
Manual = c(beta_hat, R2, Adj_R2),
LM = c(coef(model), summary(model)$r.squared, summary(model)$adj.r.squared)
)
## Manual LM
## (Intercept) 16.1360113 16.1360113
## Jam_Belajar 1.1698379 1.1698379
## Kehadiran 0.7744891 0.7744891
## 0.9993238 0.9993238
## 0.9991305 0.9991305
Perbandingan Hasil OLS Matriks dan Fungsi lm()
Estimasi model regresi linier berganda menggunakan metode OLS berbasis matriks menghasilkan persamaan:
Ŷ = 16.1360 + 1.1698X₁ + 0.774X₂
Hasil ini sama dengan output yang diperoleh dari fungsi lm() di R, di mana nilai koefisien intercept, jam belajar, dan kehadiran memiliki nilai yang sama. Menunjukkan bahwa perhitungan manual dengan rumus OLS β̂ = (X’X)⁻¹ X’Y telah dilakukan dengan benar.
Selain itu, nilai koefisien determinasi juga sama:
R² = 0.9993 Adjusted R² = 0.9991
Baik perhitungan manual maupun output lm()nya menunjukkan model memiliki kemampuan yang sangat baik untuk menjelaskan variasi nilai ujian.
Dengan demikian, model regresi yang diperoleh dapat digunakan dengan baik untuk prediksi.
# Prediksi manual
Y_pred <- beta_hat[1] + beta_hat[2]*1 + beta_hat[3]*100
Y_pred
## [1] 94.75476
# Prediksi dengan model lm
data_2 <- data.frame(Jam_Belajar = 1, Kehadiran = 100)
predict(model, newdata = data_2)
## 1
## 94.75476
Berdasarkan hasil prediksi menggunakan model regresi linier berganda, diperoleh jika mahasiswa belajar 1 jam/minggu dan kehadiran 100%, maka nilai ujian diprediksi sekitar 94.75.