Tugas 2 Pengantar Model Linear

Kohan Aminudin (333820034)

2026-04-02

Pendahuluan

Laporan ini disusun untuk memenuhi tugas mandiri mata kuliah Pengantar Model Linear. Seorang peneliti ingin menganalisis faktor-faktor yang memengaruhi nilai ujian mahasiswa (Y), yang diduga dipengaruhi oleh jumlah jam belajar dan tingkat kehadiran.

Identifikasi Variabel:

  • Variabel Dependen (\(Y\)): Nilai Ujian Mahasiswa
  • Variabel Independen (\(X_1\)): Jumlah jam belajar (jam/minggu)
  • Variabel Independen (\(X_2\)): Tingkat kehadiran (%)

Pertanyaan yang dijawab:

  1. Estimasikan model regresi linear berganda menggunakan OLS berbasis matriks dan interpretasikan hasilnya.
  2. Hitung Uji-F dan Uji-t secara manual dan interpretasikan hasilnya.
  3. Hitung \(R^2\) dan Adjusted \(R^2\) secara manual dan interpretasikan hasilnya.
  4. Bandingkan hasil no. 1 s.d. 3 dengan fungsi lm().
  5. Prediksikan nilai ujian mahasiswa jika \(X_1 = 1\) jam/minggu dan \(X_2 = 100\%\).

Input Data

Berikut adalah data dari 10 mahasiswa yang digunakan dalam analisis:

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)

n <- length(Y)
k <- 2

data_mahasiswa <- data.frame(No = 1:n, Y, X1, X2)

# Menampilkan tabel dengan kableExtra
knitr::kable(data_mahasiswa,
             col.names = c("No", "Y (Nilai Ujian)", "X1 (Jam Belajar)", "X2 (Kehadiran %)"),
             caption = "Tabel 1. Data 10 Mahasiswa",
             align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
                full_width = FALSE, 
                position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2C3E50")
Tabel 1. Data 10 Mahasiswa
No Y (Nilai Ujian) X1 (Jam Belajar) X2 (Kehadiran %)
1 65 2 60
2 70 3 65
3 75 4 70
4 80 5 75
5 85 6 80
6 78 5 72
7 72 3 68
8 90 7 85
9 88 6 83
10 95 8 90

Estimasi OLS Berbasis Matriks

Rumus

Model regresi linear berganda dalam notasi matriks:

\[ \mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]

Estimator OLS diperoleh dengan meminimalkan \(SSE = \boldsymbol{\varepsilon}^T\boldsymbol{\varepsilon}\), sehingga:

\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y} \]

di mana matriks desain \(\mathbf{X}\) berukuran \(n \times (k+1)\):

\[ \mathbf{X} = \begin{bmatrix} 1 & X_{11} & X_{21} \\ 1 & X_{12} & X_{22} \\ \vdots & \vdots & \vdots \\ 1 & X_{1n} & X_{2n} \end{bmatrix} \]

Perhitungan Manual

# Matriks desain X
X_mat <- cbind(1, X1, X2)

# Estimasi beta: (X'X)^{-1} X'Y
XtX     <- t(X_mat) %*% X_mat
XtX_inv <- solve(XtX)
XtY     <- t(X_mat) %*% Y
beta    <- XtX_inv %*% XtY

rownames(beta) <- c("beta0 (Intercept)", "beta1 (X1 - Jam Belajar)", "beta2 (X2 - Kehadiran)")
cat("=== Estimasi Koefisien Beta (Manual OLS) ===\n")
=== Estimasi Koefisien Beta (Manual OLS) ===
print(round(beta, 6))
                              [,1]
beta0 (Intercept)        16.136011
beta1 (X1 - Jam Belajar)  1.169838
beta2 (X2 - Kehadiran)    0.774489

Interpretasi Model:

Persamaan regresi yang terbentuk adalah: \[ \hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 X_1 + \hat{\beta}_2 X_2 \]

  • \(\hat{\beta}_0\): Nilai dugaan \(Y\) ketika \(X_1 = 0\) dan \(X_2 = 0\).
  • \(\hat{\beta}_1\): Setiap penambahan 1 jam belajar per minggu, nilai ujian diperkirakan naik sebesar \(\hat{\beta}_1\) poin (dengan asumsi \(X_2\) konstan).
  • \(\hat{\beta}_2\): Setiap kenaikan 1% kehadiran, nilai ujian diperkirakan naik sebesar \(\hat{\beta}_2\) poin (dengan asumsi \(X_1\) konstan).

Uji-F dan Uji-t (Manual)

Komponen Sum of Squares

\[ SS_T = \sum_{i=1}^n (Y_i - \bar{Y})^2, \quad SS_R = \sum_{i=1}^n (\hat{Y}_i - \bar{Y})^2, \quad SS_E = \sum_{i=1}^n (Y_i - \hat{Y}_i)^2 \]

Y_hat <- X_mat %*% beta
Y_bar <- mean(Y)

SST <- sum((Y - Y_bar)^2)
SSE <- sum((Y - Y_hat)^2)
SSR <- SST - SSE

# Varians galat
s2  <- SSE / (n - k - 1)

cat(sprintf("SST = %.4f\nSSR = %.4f\nSSE = %.4f\n", SST, SSR, SSE))
SST = 831.6000
SSR = 831.0376
SSE = 0.5624
cat(sprintf("s^2 (MSE) = %.6f\n", s2))
s^2 (MSE) = 0.080338

Uji-F (Simultan)

Hipotesis: \[ H_0: \beta_1 = \beta_2 = 0 \quad \text{vs} \quad H_1: \text{minimal satu } \beta_j \neq 0 \]

MSR     <- SSR / k
MSE     <- SSE / (n - k - 1)
F_hit   <- MSR / MSE
p_F     <- pf(F_hit, k, n - k - 1, lower.tail = FALSE)

cat(sprintf("MSR = %.4f  |  MSE = %.4f\n", MSR, MSE))
MSR = 415.5188  |  MSE = 0.0803
cat(sprintf("F-hitung = %.4f\n", F_hit))
F-hitung = 5172.1158
cat(sprintf("p-value  = %.6f\n\n", p_F))
p-value  = 0.000000
cat(if(p_F < 0.05) "➡️ Keputusan: TOLAK H0 (Model signifikan)\n" else "➡️ Keputusan: GAGAL TOLAK H0\n")
➡️ Keputusan: TOLAK H0 (Model signifikan)

Interpretasi Uji-F:

Nilai \(F_{hitung} = 5172.1158\) dengan \(p\text{-value} = 8.042e-12\). Karena \(p\text{-value} < \alpha = 0{,}05\), maka \(H_0\) ditolak. Variabel \(X_1\) dan \(X_2\) secara simultan berpengaruh signifikan terhadap nilai ujian mahasiswa.


Uji-t (Parsial)

Hipotesis untuk setiap \(\beta_j\): \[ H_0: \beta_j = 0 \quad \text{vs} \quad H_1: \beta_j \neq 0 \]

SE_beta <- sqrt(s2 * diag(XtX_inv))
t_hit   <- beta / SE_beta
p_t     <- 2 * pt(abs(t_hit), df = n - k - 1, lower.tail = FALSE)

hasil_t <- data.frame(
  Koefisien = c("Intercept (β0)", "X1 - Jam Belajar (β1)", "X2 - Kehadiran (β2)"),
  Beta      = round(beta, 6),
  SE        = round(SE_beta, 6),
  t_hitung  = round(t_hit, 4),
  p_value   = round(p_t, 6),
  Keputusan = ifelse(p_t < 0.05, "Tolak H0", "Gagal Tolak H0")
)

# Tabel Uji-t dengan kableExtra
knitr::kable(hasil_t, caption = "Tabel 2. Hasil Uji-t Manual", align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), 
                full_width = FALSE, 
                position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#18BC9C") %>%
  column_spec(6, bold = TRUE, color = ifelse(hasil_t$p_value < 0.05, "green", "red"))
Tabel 2. Hasil Uji-t Manual
Koefisien Beta SE t_hitung p_value Keputusan
beta0 (Intercept) Intercept (β0) 16.136011 2.836775 5.6882 0.000744 Tolak H0
beta1 (X1 - Jam Belajar) X1 - Jam Belajar (β1) 1.169838 0.278436 4.2015 0.004028 Tolak H0
beta2 (X2 - Kehadiran) X2 - Kehadiran (β2) 0.774489 0.055718 13.9003 0.000002 Tolak H0

Interpretasi Uji-t:

  • \(X_1\) (Jam Belajar): \(p\text{-value} < 0{,}05\)signifikan secara parsial. Jam belajar memberikan pengaruh nyata terhadap nilai ujian.
  • \(X_2\) (Kehadiran): Sesuai nilai \(p\text{-value}\) pada tabel, jika nilainya \(< 0{,}05\) maka variabel ini berpengaruh signifikan secara parsial terhadap nilai ujian mahasiswa.

\(R^2\) dan Adjusted \(R^2\) (Manual)

R2     <- SSR / SST
R2_adj <- 1 - (SSE / (n - k - 1)) / (SST / (n - 1))

cat(sprintf("R^2      = %.4f  (%.2f%%)\n", R2, R2*100))
R^2      = 0.9993  (99.93%)
cat(sprintf("R^2_adj  = %.4f  (%.2f%%)\n", R2_adj, R2_adj*100))
R^2_adj  = 0.9991  (99.91%)

Interpretasi Determinasi:

  • \(R^2 = 0.9993\): Sebesar 99.93% variasi nilai ujian mahasiswa dapat dijelaskan oleh variabel jam belajar (\(X_1\)) dan kehadiran (\(X_2\)) secara bersama-sama. Sisanya 0.07% dipengaruhi oleh faktor lain di luar model.
  • \(R^2_{adj} = 0.9991\): Setelah dikoreksi terhadap jumlah variabel dan observasi, model tetap menunjukkan daya prediksi yang sangat tinggi.

Perbandingan dengan Fungsi lm()

model_lm <- lm(Y ~ X1 + X2)
sm       <- summary(model_lm)
beta_lm  <- coef(model_lm)

perbandingan <- data.frame(
  Parameter   = c("β0 (Intercept)", "β1 (X1)", "β2 (X2)"),
  Beta_Manual = round(as.numeric(beta), 6),
  Beta_lm     = round(beta_lm, 6),
  R2_Manual   = c(round(R2, 6), NA, NA),
  R2_lm       = c(round(sm$r.squared, 6), NA, NA),
  R2adj_Manual = c(round(R2_adj, 6), NA, NA),
  R2adj_lm    = c(round(sm$adj.r.squared, 6), NA, NA)
)

knitr::kable(perbandingan,
             caption = "Tabel 3. Perbandingan Hasil Manual vs lm()",
             align = "c",
             na = "-") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "bordered"), 
                full_width = FALSE, 
                position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#34495E")
Tabel 3. Perbandingan Hasil Manual vs lm()
Parameter Beta_Manual Beta_lm R2_Manual R2_lm R2adj_Manual R2adj_lm
(Intercept) β0 (Intercept) 16.136011 16.136011 0.999324 0.999324 0.999131 0.999131
X1 β1 (X1) 1.169838 1.169838 NA NA NA NA
X2 β2 (X2) 0.774489 0.774489 NA NA NA NA

Interpretasi: Seluruh nilai koefisien \(\hat{\beta}\), \(R^2\), dan \(R^2_{adj}\) yang dihitung secara manual menghasilkan nilai yang identik dengan output fungsi lm(). Ini membuktikan kebenaran implementasi formula OLS berbasis matriks secara matematis.


Prediksi Nilai Ujian

Skenario: Prediksikan nilai ujian mahasiswa jika \(X_1 = 1\) jam/minggu dan \(X_2 = 100\%\).

X1_baru <- 1
X2_baru <- 100

Y_pred <- beta[1] + beta[2] * X1_baru + beta[3] * X2_baru

cat(sprintf("X1 (Jam Belajar) = %d jam/minggu\n", X1_baru))
X1 (Jam Belajar) = 1 jam/minggu
cat(sprintf("X2 (Kehadiran)   = %d%%\n\n", X2_baru))
X2 (Kehadiran)   = 100%
cat(sprintf("Y_pred = %.4f\n", Y_pred))
Y_pred = 94.7548

Interpretasi Hasil Prediksi:

Berdasarkan model regresi yang telah diestimasi, mahasiswa yang hanya belajar 1 jam/minggu namun memiliki kehadiran 100% diprediksi memperoleh nilai ujian sebesar \(\hat{Y} \approx 94.75\). Hasil ini mengindikasikan bahwa tingkat kehadiran yang tinggi memiliki kompensasi positif terhadap minimnya jam belajar mandiri, dengan asumsi faktor lain tetap konstan.


Kesimpulan

Berdasarkan analisis regresi linear berganda yang telah dilakukan untuk mengevaluasi faktor-faktor yang memengaruhi nilai ujian mahasiswa, dapat disimpulkan bahwa pendekatan Ordinary Least Squares (OLS) berbasis matriks berhasil diterapkan dengan sangat baik. Perhitungan estimasi koefisien \(\hat{\boldsymbol{\beta}}\) yang dilakukan secara manual menggunakan formula \((\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}\) terbukti akurat dan sepenuhnya identik ketika divalidasi dengan fungsi bawaan R, yaitu lm(). Hal ini memvalidasi bahwa implementasi matematis yang disusun sudah tepat.

Selanjutnya, melalui pengujian hipotesis secara simultan (Uji-F), diperoleh bukti statistik yang kuat (\(p\text{-value} < 0{,}05\)) bahwa jumlah jam belajar dan persentase kehadiran secara bersama-sama memberikan pengaruh yang signifikan terhadap capaian nilai ujian mahasiswa. Secara parsial (Uji-t), kontribusi masing-masing variabel independen juga dapat dievaluasi signifikansinya pada tingkat kepercayaan 95% (\(\alpha = 0{,}05\)).

Keandalan model regresi ini juga sangat kuat, yang dibuktikan oleh nilai Koefisien Determinasi (\(R^2\)). Model ini mampu menjelaskan 99.93% dari variasi data nilai ujian melalui faktor durasi jam belajar dan tingkat kehadiran. Daya prediksi yang tinggi ini juga dikonfirmasi oleh nilai \(R^2_{adj}\) yang stabil. Terakhir, pemanfaatan model ini dalam simulasi prediksi menunjukkan hasil yang menarik; seorang mahasiswa yang memiliki durasi belajar minim (1 jam/minggu) namun mempertahankan tingkat kehadiran yang sempurna (100%), diprediksikan masih mampu mendapatkan skor ujian sebesar 94.75. Hal ini mengindikasikan adanya kompensasi positif yang signifikan dari kedisiplinan kehadiran terhadap hasil evaluasi akhir.