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:
Peneliti mengumpulkan data dari 10 mahasiswa sebagai berikut:
| No | Y | X1 | X2 |
|---|---|---|---|
| 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 |
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%!
Penyelesaian
1. Model regresi linier berganda menggunakan metode OLS
Buat input datanya
# Input Data
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)
# Menggabungkan menjadi data frame
data_ujian <- data.frame(Y, X1, X2)
# Menentukan jumlah observasi (n) dan variabel independen (k)
n <- length(Y)
k <- 2Hitung beta duga dengan rumus penduga parameter \(\beta\) adalah: \[\hat{\beta} = (X^T X)^{-1} X^T Y\]
# Membuat matriks Y
mat_Y <- matrix(Y, ncol = 1)
# Membuat matriks X (tambahkan kolom 1 untuk konstanta/intersep)
mat_X <- cbind(1, X1, X2)
# Menghitung estimasi Beta (b_hat)
# solve() digunakan untuk mencari invers matriks, t() untuk transpose, %*% untuk perkalian matriks
beta_hat <- solve(t(mat_X) %*% mat_X) %*% t(mat_X) %*% mat_Y
# Menampilkan hasil
rownames(beta_hat) <- c("Intercept", "X1", "X2")
print("Estimasi Koefisien (Beta):")## [1] "Estimasi Koefisien (Beta):"
## [,1]
## Intercept 16.1360113
## X1 1.1698379
## X2 0.7744891
Berdasarkan perhitungan, kita mendapatkan persamaan regresi estimasi: \[\hat{Y} = 14.808 + 1.259 X_1 + 0.771 X_2\] ## 2. Hitung Uji F (Simultan) dan Uji t (Parsial) secara Manual
# Nilai prediksi Y (Y_hat)
Y_hat <- mat_X %*% beta_hat
# Residual (Error)
e <- mat_Y - Y_hat
# Sum of Squares
Y_bar <- mean(Y)
SST <- sum((Y - Y_bar)^2)
SSE <- sum(e^2)
SSR <- SST - SSE
# Degrees of Freedom (Derajat Bebas)
df_reg <- k
df_err <- n - k - 1
# Mean Squares
MSR <- SSR / df_reg
MSE <- SSE / df_errUji F
Uji F menguji apakah seluruh variabel independen secara bersama-sama mempengaruhi variabel dependen. \[ F_{stat} = \frac{MSR}{MSE} \] Hipotesis:
\(H_0\): Tidak ada pengaruh signifikan secara simultan.
\(H_1\): Minimal ada satu variabel independen yang berpengaruh signifikan.
F_stat <- MSR / MSE
p_value_F <- pf(F_stat, df_reg, df_err, lower.tail = FALSE)
cat("Nilai F-Hitung:", F_stat, "\n")## Nilai F-Hitung: 5172.116
## P-value Uji F: 8.042129e-12
Interpretasi: Nilai p-value sangat kecil (\(8.042129 \times 10^{-12} < 0.05\)). Artinya, kita menolak H0. Kesimpulannya, jumlah jam belajar (\(X_1\)) dan tingkat kehadiran (\(X_2\)) secara bersama-sama (simultan) memiliki pengaruh yang signifikan terhadap nilai ujian (\(Y\)).
Uji-t
Uji t menguji apakah setiap variabel independen secara individu mempengaruhi variabel dependen. Untuk ini, kita butuh Standar Error dari masing-masing koefisien. \[ Var(\hat{\beta}) = MSE \cdot (X^T X)^{-1} \] \[ SE(\hat{\beta}) = \sqrt{diag(Var(\hat{\beta}))} \] \[ t_{stat} = \frac{\hat{\beta}}{SE(\hat{\beta})} \]
# Menghitung Matriks Varian-Kovarian
var_covar_matrix <- MSE * solve(t(mat_X) %*% mat_X)
# Mengambil akar kuadrat dari diagonal utama untuk mendapatkan Standard Error
se_beta <- sqrt(diag(var_covar_matrix))
# Menghitung t-hitung
t_stat <- beta_hat / se_beta
# Menghitung p-value untuk t-hitung (uji 2 arah)
p_value_t <- 2 * pt(abs(t_stat), df = df_err, lower.tail = FALSE)
# Membuat tabel ringkasan
hasil_t_test <- data.frame(
Koefisien = beta_hat,
Std_Error = se_beta,
t_Hitung = t_stat,
p_Value = p_value_t
)
print(hasil_t_test)## Koefisien Std_Error t_Hitung p_Value
## Intercept 16.1360113 2.83677490 5.688154 7.444177e-04
## X1 1.1698379 0.27843551 4.201468 4.028204e-03
## X2 0.7744891 0.05571759 13.900261 2.357834e-06
Interpretasi: \(X_1\) (Jam Belajar): P-value adalah (\(4.028204\times 10^{-3} < 0.05\)) sehingga variabel \(X_1\) secara parsial signifikan. \(X_2\) (Kehadiran): P-value adalah (\(2.357834\times 10^{-6}\)). Karena p-value < 0.05, maka tingkat kehadiran berpengaruh secara signifikan terhadap nilai ujian.
3. nilai R² dan Adjusted R² secara manual
# R-squared
R_sq <- SSR / SST
# Adjusted R-squared
Adj_R_sq <- 1 - ((1 - R_sq) * (n - 1) / (n - k - 1))
cat("R-squared:", R_sq, "\n")## R-squared: 0.9993238
## Adjusted R-squared: 0.9991305
Interpretasi: Nilai \(R^2\) = 0.9993238 berarti 99.93238% variasi (naik turunnya) Nilai Ujian mahasiswa dapat dijelaskan oleh kombinasi Jumlah Jam Belajar dan Tingkat Kehadiran. Sisanya 0.06762% dijelaskan oleh faktor lain di luar model.
Nilai Adjusted \(R^2\) = 0.9991305 atau 99.91305% adalah angka yang lebih akurat untuk menilai kelayakan model karena sudah memperhitungkan jumlah variabel yang digunakan.
4. Bandingkan dengan Fungsi lm()
# Menggunakan fungsi bawaan R
# Menggunakan fungsi lm
model_lm <- lm(Y ~ X1 + X2, data = data_ujian)
summary(model_lm)##
## Call:
## lm(formula = Y ~ X1 + X2, data = data_ujian)
##
## 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
Hasilnya nilai intersep, koefisien \(x_1\), dan koefisien \(x_2\) dari model manual regresi linier berganda kedua metode akan sama, begitu juga dengan nilai R² dan Adjusted R².
5. Prediksi nilai ujian mahasiswa jika jumlah jam belajar 1 jam/minggu namun kehadirannya 100%.
Kita akan memasukkan nilai tersebut ke dalam persamaan regresi: \(\hat{Y} = \beta_0 + \beta_1(1) + \beta_2(100)\)
# Mendefinisikan observasi baru (X_baru) -> c(Intercept, X1, X2)
X_baru <- c(1, 1, 100)
# Melakukan prediksi
Y_prediksi <- sum(X_baru * beta_hat)
cat("Prediksi Nilai Ujian:", Y_prediksi, "\n")## Prediksi Nilai Ujian: 94.75476
Berdasarkan model yang terbentuk, jika seorang mahasiswa belajar 1 jam/minggu namun kehadirannya 100%, maka prediksi nilai ujiannya adalah sebesar 94.75476.