Regresi Linier Berganda (Pendugaan Parameter, Uji Hipotesis dan Kebaikan Model)

PENDAHULUAN

Penelitian ini bertujuan untuk menganalisis faktor-faktor yang mempengaruhi nilai ujian mahasiswa (Y). Variabel yang digunakan adalah:

  • X1 = Jumlah jam belajar (jam/minggu)
  • X2 = Tingkat kehadiran (%)

Metode yang digunakan adalah regresi linier berganda dengan pendekatan Ordinary Least Square (OLS).

INPUT DATA

# Membuat data
data_nilai_ujian_mahasiswa <- data.frame(
  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_nilai_ujian_mahasiswa
##     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

EKSPLORASI DATA ANALYIST

summary(data_nilai_ujian_mahasiswa)
##        Y               X1             X2       
##  Min.   :65.00   Min.   :2.00   Min.   :60.00  
##  1st Qu.:72.75   1st Qu.:3.25   1st Qu.:68.50  
##  Median :79.00   Median :5.00   Median :73.50  
##  Mean   :79.80   Mean   :4.90   Mean   :74.80  
##  3rd Qu.:87.25   3rd Qu.:6.00   3rd Qu.:82.25  
##  Max.   :95.00   Max.   :8.00   Max.   :90.00
# Scatter plot
pairs(data_nilai_ujian_mahasiswa, main = "Scatter Plot Matrix")

# Korelasi
cor(data_nilai_ujian_mahasiswa)
##            Y        X1        X2
## Y  1.0000000 0.9902816 0.9988085
## X1 0.9902816 1.0000000 0.9841252
## X2 0.9988085 0.9841252 1.0000000

ANALISIS REGRSI

A. ESTIMASI MODEL REGRESI DENGAN METODE OLS (BERBASIS MATRIKS)

1. Menyusun Matriks X dan Y

# Data
Y  <- matrix(c(65,70,75,80,85,78,72,90,88,95), ncol = 1)

X1 <- c(2,3,4,5,6,5,3,7,6,8)
X2 <- c(60,65,70,75,80,72,68,85,83,90)

# Tambahkan intercept (1)
X <- cbind(1, X1, X2)

Y
##       [,1]
##  [1,]   65
##  [2,]   70
##  [3,]   75
##  [4,]   80
##  [5,]   85
##  [6,]   78
##  [7,]   72
##  [8,]   90
##  [9,]   88
## [10,]   95
X
##         X1 X2
##  [1,] 1  2 60
##  [2,] 1  3 65
##  [3,] 1  4 70
##  [4,] 1  5 75
##  [5,] 1  6 80
##  [6,] 1  5 72
##  [7,] 1  3 68
##  [8,] 1  7 85
##  [9,] 1  6 83
## [10,] 1  8 90

2. Rumus OLS (Matrix)

Model regresi linier:

\[ Y = X\beta + \epsilon \]

Estimator OLS:

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

3. Perhitungan Manual dengan R

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

4. Membentuk Persamaan Regresi

beta0 <- beta[1]
beta1 <- beta[2]
beta2 <- beta[3]

beta0
## [1] 16.13601
beta1
## [1] 1.169838
beta2
## [1] 0.7744891

Model Regresi Yang diperoleh:

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 \]

Intrpretasi Koefisien:

  • Intercept (β0): nilai Y saat X1 dan X2 = 0
  • β1 (X1): setiap tambahan 1 jam belajar → nilai ujian meningkat sebesar β1
  • β2 (X2): setiap kenaikan 1% kehadiran → nilai ujian meningkat sebesar β2

5. Validasi dengan Fungsi lm()

model_lm <- lm(Y ~ X1 + X2)
coef(model_lm)
## (Intercept)          X1          X2 
##  16.1360113   1.1698379   0.7744891

6. Interpretasi Akhir

  • Variabel jam belajar (X1) dan kehadiran (X2) berpengaruh positif terhadap nilai ujian
  • Model dapat digunakan untuk memprediksi nilai mahasiswa
  • Pendekatan matriks memberikan hasil yang konsisten dengan metode komputasi di R

B. UJI F DAN UJI t (MANUAL)

1. Menentukan Nilai Prediksi dan Residual

# Matriks
Y  <- matrix(c(65,70,75,80,85,78,72,90,88,95), ncol = 1)
X1 <- c(2,3,4,5,6,5,3,7,6,8)
X2 <- c(60,65,70,75,80,72,68,85,83,90)

X <- cbind(1, X1, X2)

# Estimasi beta (OLS)
beta <- solve(t(X) %*% X) %*% t(X) %*% Y
beta
##          [,1]
##    16.1360113
## X1  1.1698379
## X2  0.7744891
# Prediksi
Y_hat <- X %*% beta
Y_hat
##           [,1]
##  [1,] 64.94503
##  [2,] 69.98732
##  [3,] 75.02960
##  [4,] 80.07188
##  [5,] 85.11416
##  [6,] 77.74841
##  [7,] 72.31078
##  [8,] 90.15645
##  [9,] 87.43763
## [10,] 95.19873
# Residual
e <- Y - Y_hat
e
##              [,1]
##  [1,]  0.05496829
##  [2,]  0.01268499
##  [3,] -0.02959831
##  [4,] -0.07188161
##  [5,] -0.11416490
##  [6,]  0.25158562
##  [7,] -0.31078224
##  [8,] -0.15644820
##  [9,]  0.56236786
## [10,] -0.19873150

2. Menghitung SSE, SSR, SST

# SSE (Error)
SSE <- sum(e^2)

# SST (Total)
Y_mean <- mean(Y)
SST <- sum((Y - Y_mean)^2)

# SSR (Regresi)
SSR <- SST - SSE

SSE
## [1] 0.5623679
SSR
## [1] 831.0376
SST
## [1] 831.6

3. Uji F (Simultan)

Rumus:

\[ F = \frac{SSR / k}{SSE / (n - k - 1)} \]

n <- nrow(X)
k <- ncol(X) - 1

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

Keputusan:

p_value_F <- pf(F_hitung, k, n-k-1, lower.tail = FALSE)
p_value_F
## [1] 8.042129e-12

Interpretasi:

  • Jika p-value < 0.05 → model signifikan
  • Artinya X1 dan X2 secara bersama-sama berpengaruh terhadap Y

4. Uji t (Parsial)

Variansi Error:

sigma2 <- SSE / (n - k - 1)
sigma2
## [1] 0.08033827

Variansi Koefisien:

var_beta <- sigma2 * solve(t(X) %*% X)
var_beta
##                        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_beta <- sqrt(diag(var_beta))
se_beta
##                    X1         X2 
## 2.83677490 0.27843551 0.05571759

Statistik t:

\[ t = \frac{\beta}{SE(\beta)} \]

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

p-value Uji t:

p_value_t <- 2 * pt(abs(t_hitung), df = n-k-1, lower.tail = FALSE)
p_value_t
##            [,1]
##    7.444177e-04
## X1 4.028204e-03
## X2 2.357834e-06

5. Interpretasi Uji t

  • Jika p-value < 0.05 → variabel signifikan
  • β1 signifikan → jam belajar berpengaruh terhadap nilai
  • β2 signifikan → kehadiran berpengaruh terhadap nilai

C. Koefisien Determinasi (R² dan Adjusted R²)

Rumus R²

\[ R^2 = \frac{SSR}{SST} \]

Rumus Adjusted R²

\[ \bar{R}^2 = 1 - \frac{SSE/(n - k - 1)}{SST/(n - 1)} \]

1. Perhitungan Manual

# Data
Y  <- matrix(c(65,70,75,80,85,78,72,90,88,95), ncol = 1)
X1 <- c(2,3,4,5,6,5,3,7,6,8)
X2 <- c(60,65,70,75,80,72,68,85,83,90)

X <- cbind(1, X1, X2)

# Estimasi beta
beta <- solve(t(X) %*% X) %*% t(X) %*% Y

# Prediksi & residual
Y_hat <- X %*% beta
e <- Y - Y_hat

# Hitung SSE, SST, SSR
SSE <- sum(e^2)
SST <- sum((Y - mean(Y))^2)
SSR <- SST - SSE

# Banyak data & variabel
n <- nrow(X)
k <- ncol(X) - 1

# R^2
R2 <- SSR / SST

# Adjusted R^2
Adj_R2 <- 1 - (SSE/(n - k - 1)) / (SST/(n - 1))

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

2. Interpretasi

Interpretasi R²

  • R² menunjukkan proporsi variasi variabel Y yang dapat dijelaskan oleh model
  • Nilai R² mendekati 1 → model semakin baik

Interpretasi Adjusted R²

  • Adjusted R² sudah mempertimbangkan jumlah variabel dalam model
  • Lebih akurat untuk membandingkan model dengan jumlah variabel berbeda

D. PERBANDINGAN DENGAN FUNGSI lm()

1. Model Dengan lm()

data <- data.frame(
  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)
)

model_lm <- lm(Y ~ X1 + X2, data = data)
summary(model_lm)
## 
## 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

2. Perbandingan Koefisien (β)

# Manual (hasil sebelumnya)
beta_manual <- solve(t(X) %*% X) %*% t(X) %*% Y
beta_manual
##          [,1]
##    16.1360113
## X1  1.1698379
## X2  0.7744891
# lm()
beta_lm <- coef(model_lm)
beta_lm
## (Intercept)          X1          X2 
##  16.1360113   1.1698379   0.7744891

3. Perbandingan Uji F

# F manual
F_hitung <- (SSR / k) / (SSE / (n - k - 1))
F_hitung
## [1] 5172.116
# F dari lm
summary(model_lm)$fstatistic
##    value    numdf    dendf 
## 5172.116    2.000    7.000

4. Perbandingan Uji t

# t manual
t_hitung <- beta / se_beta
t_hitung
##         [,1]
##     5.688154
## X1  4.201468
## X2 13.900261
# t dari lm
summary(model_lm)$coefficients[,3]
## (Intercept)          X1          X2 
##    5.688154    4.201468   13.900261

5. Perbandingan R²

# Manual
R2
## [1] 0.9993238
Adj_R2
## [1] 0.9991305
# lm
summary(model_lm)$r.squared
## [1] 0.9993238
summary(model_lm)$adj.r.squared
## [1] 0.9991305

6. Kesimpulan

  • Semua hasil perhitungan manual (OLS matriks, uji t, uji F, R²) sama dengan hasil dari fungsi lm()
  • Hal ini membuktikan bahwa fungsi lm() di R menggunakan metode Ordinary Least Squares (OLS)
  • Perhitungan manual memberikan pemahaman konsep, sedangkan lm() mempermudah komputasi

E. Prediksi Nilai Ujian Mahasiswa

1. Perhitungan Prediksi

# Model regresi (pakai lm)
model <- lm(Y ~ X1 + X2, data = data)

# Prediksi untuk:
# X1 = 1 (jam belajar)
# X2 = 100 (kehadiran)
prediksi <- predict(model, newdata = data.frame(X1 = 1, X2 = 100))

prediksi
##        1 
## 94.75476

2. Interpretasi

Berdasarkan model regresi linier berganda yang telah diperoleh, nilai ujian mahasiswa dengan:

  • Jam belajar = 1 jam/minggu
  • Kehadiran = 100%

diperkirakan sebesar nilai yang dihasilkan dari prediksi di atas.

Hal ini menunjukkan bahwa meskipun jam belajar relatif rendah, tingkat kehadiran yang tinggi tetap memberikan kontribusi positif terhadap nilai ujian.

KESIMPULAN

Berdasarkan hasil analisis regresi linier berganda yang telah dilakukan, diperoleh beberapa kesimpulan sebagai berikut:

  1. Estimasi model menggunakan metode Ordinary Least Squares (OLS) berbasis matriks menghasilkan koefisien regresi yang menunjukkan bahwa variabel jumlah jam belajar (X1) dan tingkat kehadiran (X2) berpengaruh positif terhadap nilai ujian mahasiswa (Y).

  2. Hasil uji F menunjukkan bahwa model regresi signifikan secara simultan, yang berarti variabel X1 dan X2 secara bersama-sama berpengaruh terhadap nilai ujian.

  3. Hasil uji t menunjukkan bahwa masing-masing variabel independen (X1 dan X2) berpengaruh secara parsial terhadap variabel dependen (Y), sehingga keduanya merupakan faktor penting dalam model.

  4. Nilai koefisien determinasi (R²) yang tinggi menunjukkan bahwa model mampu menjelaskan sebagian besar variasi nilai ujian, sedangkan Adjusted R² mengonfirmasi bahwa model tidak mengalami overfitting.

  5. Hasil perhitungan manual (OLS, uji t, uji F, dan R²) konsisten dengan hasil yang diperoleh menggunakan fungsi lm() di R, sehingga validitas perhitungan dapat dipastikan.

Secara keseluruhan, model regresi yang dibangun dapat digunakan dengan baik untuk menjelaskan hubungan antara jam belajar, kehadiran, dan nilai ujian, serta dapat dimanfaatkan untuk keperluan prediksi.