Input Data

# 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)

Estimasikan model regresi linier berganda menggunakan metode OLS berbasis matriks dan interpretasikan hasilnya?

Bentuk Umum Persamaan Regresi Ŷ = β₀ + β₁X₁ + β₂X₂

Rumus OLS β̂ = (X’X)⁻¹ X’Y

Perhitungan Manual

Estimasi beta

beta_hat <- solve(t(X) %*% X) %*% t(X) %*% Y
beta_hat
##          [,1]
##    16.1360113
## X1  1.1698379
## X2  0.7744891

Interpretasi

Diperoleh model regresi linier:

Ŷ = 16.136 + 1.1698X₁ + 0.774X₂

Interpretasi:

# 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

Uji F

Hipotesis:

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

Interpretasi

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.

Uji T

Hipotesis:

Untuk X1:

Untuk X2:

# 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

Interpretasi

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.

Hitung nilai R² dan Adjusted R² secara manual dan interpretasikan hasilnya?

R2

R2 <- SSR / SST
R2
## [1] 0.9993238

Adj_R2

Adj_R2 <- 1 - ((SSE/(n-k-1)) / (SST/(n-1)))
Adj_R2
## [1] 0.9991305

Interpretasi

  • 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.

Membandingkan dengan fungsi lm

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.

Prediksikan nilai ujian mahasiswa jika jumlah jam belajar 1 jam/minggu namun kehadirannya 100%?

# 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

Interpretasi

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.