Dalam kasus ini, seorang peneliti ingin melakukan analisis untuk mengidentifikasi faktor-faktor yang memengaruhi nilai ujian mahasiswa (Y). Diasumsikan bahwa nilai ujian dipengaruhi oleh dua variabel utama, yaitu jumlah jam belajar dan tingkat kehadiran mahasiswa.
Adapun variabel yang digunakan adalah sebagai berikut:
Penelitian ini bertujuan untuk:
lm() di R.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)
knitr::kable(data_mahasiswa,
col.names = c("No", "Nilai Ujian", "Jam Belajar", "Kehadiran (%)"),
align = "c")
| No | Nilai Ujian | Jam Belajar | 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 |
Model regresi linear berganda dapat dituliskan dalam bentuk matriks sebagai:
\[ \mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]
Estimator parameter diperoleh melalui:
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y} \]
X_mat <- cbind(1, X1, X2)
beta <- solve(t(X_mat) %*% X_mat) %*% t(X_mat) %*% Y
round(beta, 6)
## [,1]
## 16.136011
## X1 1.169838
## X2 0.774489
cat("Model Regresi:\n")
## Model Regresi:
cat("Y_hat =", round(beta[1],4), "+", round(beta[2],4),"X1 +", round(beta[3],4),"X2")
## Y_hat = 16.136 + 1.1698 X1 + 0.7745 X2
Interpretasi:
Y_hat <- X_mat %*% beta
Y_bar <- mean(Y)
SST <- sum((Y - Y_bar)^2)
SSE <- sum((Y - Y_hat)^2)
SSR <- SST - SSE
SST; SSR; SSE
## [1] 831.6
## [1] 831.0376
## [1] 0.5623679
MSR <- SSR / k
MSE <- SSE / (n-k-1)
F_hit <- MSR / MSE
p_F <- pf(F_hit, k, n-k-1, lower.tail=FALSE)
F_hit
## [1] 5172.116
p_F
## [1] 8.042129e-12
Interpretasi: Jika p-value < 0,05, maka variabel independen secara bersama-sama berpengaruh signifikan terhadap nilai ujian.
SE_beta <- sqrt(MSE * diag(solve(t(X_mat)%*%X_mat)))
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","X1","X2"),
Beta = beta,
SE = SE_beta,
t = t_hit,
p_value = p_t
)
knitr::kable(hasil_t, align="c")
| Koefisien | Beta | SE | t | p_value | |
|---|---|---|---|---|---|
| Intercept | 16.1360113 | 2.8367749 | 5.688154 | 0.0007444 | |
| X1 | X1 | 1.1698379 | 0.2784355 | 4.201468 | 0.0040282 |
| X2 | X2 | 0.7744891 | 0.0557176 | 13.900261 | 0.0000024 |
Interpretasi: Variabel dengan p-value < 0,05 dinyatakan berpengaruh signifikan secara parsial.
R2 <- SSR / SST
R2_adj <- 1 - (SSE/(n-k-1))/(SST/(n-1))
R2
## [1] 0.9993238
R2_adj
## [1] 0.9991305
Interpretasi:
model_lm <- lm(Y ~ X1 + X2)
summary(model_lm)
##
## Call:
## lm(formula = Y ~ X1 + X2)
##
## 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
Interpretasi: Hasil estimasi manual konsisten dengan
output fungsi lm(), sehingga perhitungan yang dilakukan
dapat dianggap valid.
X1_baru <- 1
X2_baru <- 100
Y_pred <- beta[1] + beta[2]*X1_baru + beta[3]*X2_baru
Y_pred
## [1] 94.75476
Interpretasi: Nilai yang diperoleh merupakan estimasi nilai ujian mahasiswa dengan kondisi jam belajar 1 jam per minggu dan kehadiran 100%.
lm().