1. 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)

data <- data.frame(Y, X1, X2)
data
##     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

Interpretasi: Data berisi nilai ujian (Y), jam belajar (X1), dan tingkat kehadiran (X2).


2. Estimasi Regresi (Metode OLS - Matriks)

X <- cbind(1, X1, X2)
Y_mat <- matrix(Y, ncol = 1)

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

Interpretasi:


3. Prediksi dan Residual

Y_pred <- X %*% beta
residual <- Y_mat - Y_pred

Interpretasi: Residual adalah selisih antara nilai aktual dan hasil prediksi model.


4. R² dan Adjusted R²

SST <- sum((Y - mean(Y))^2)
SSE <- sum(residual^2)
SSR <- SST - SSE

R2 <- SSR / SST

n <- length(Y)
k <- 2
Adj_R2 <- 1 - ((SSE/(n-k-1)) / (SST/(n-1)))

R2
## [1] 0.9993238
Adj_R2
## [1] 0.9991305

Interpretasi:


5. Uji F

F_hit <- (SSR/k) / (SSE/(n-k-1))
F_hit
## [1] 5172.116

Interpretasi: Jika F hitung besar, maka variabel X1 dan X2 secara bersama-sama berpengaruh terhadap Y.


6. Uji t

sigma2 <- SSE / (n - k - 1)
var_beta <- sigma2 * solve(t(X) %*% X)
se_beta <- sqrt(diag(var_beta))

t_hit <- beta / se_beta
t_hit
##         [,1]
##     5.688154
## X1  4.201468
## X2 13.900261

Interpretasi: Jika nilai t besar (dibanding t tabel), maka variabel tersebut berpengaruh signifikan.


7. Perbandingan dengan lm()

model <- lm(Y ~ X1 + X2, data = data)
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2, 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 ***
## 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 dari fungsi lm() seharusnya mendekati hasil perhitungan manual.


8. Prediksi Nilai

predict(model, newdata = data.frame(X1=1, X2=100))
##        1 
## 94.75476

Interpretasi: Ini adalah prediksi nilai ujian jika mahasiswa belajar 1 jam/minggu dan kehadiran 100%.


Kesimpulan