Input Data

data <- data.frame(
  Siswa     = 1:10,
  IQ        = c(110,120,115,130,110,120,120,125,110,120),
  Kehadiran = c(60,70,75,80,80,90,95,95,100,100),
  Nilai_UAS = c(65,70,75,75,80,80,85,95,90,98)
)

Menentukan Variabel

Y <- as.matrix(data$Nilai_UAS)   # Variabel respon
X1 <- data$Kehadiran             # Variabel bebas 1
X2 <- data$IQ                    # Variabel bebas 2

Persamaan Regresi Linear Berganda

Menghitung beta duga manual

Bentuk Umum Persamaan Regresi Ŷ = β₀ + β₁X₁ + β₂X₂

Rumus OLS β̂ = (X’X)⁻¹ X’Y

# Bentuk matriks X (dengan intercept)
X <- cbind(1, X1, X2)
X
##          X1  X2
##  [1,] 1  60 110
##  [2,] 1  70 120
##  [3,] 1  75 115
##  [4,] 1  80 130
##  [5,] 1  80 110
##  [6,] 1  90 120
##  [7,] 1  95 120
##  [8,] 1  95 125
##  [9,] 1 100 110
## [10,] 1 100 120
# Ubah Y jadi matriks kolom
Y <- matrix(Y, ncol = 1)
Y
##       [,1]
##  [1,]   65
##  [2,]   70
##  [3,]   75
##  [4,]   75
##  [5,]   80
##  [6,]   80
##  [7,]   85
##  [8,]   95
##  [9,]   90
## [10,]   98
# Hitung X'X
XtX <- t(X) %*% X
XtX
##            X1     X2
##      10   845   1180
## X1  845 73075  99900
## X2 1180 99900 139650
# Hitung (X'X)^-1
XtX_inv <- solve(XtX)
XtX_inv
##                           X1            X2
##    34.62208967 -0.0188185492 -0.2790840870
## X1 -0.01881855  0.0006311333 -0.0002924764
## X2 -0.27908409 -0.0002924764  0.0025745622
# Hitung X'Y
XtY <- t(X) %*% Y
XtY
##     [,1]
##      813
## X1 69925
## X2 96060
# Hitung beta duga (β̂)
beta_duga <- XtX_inv %*% XtY
print(beta_duga)
##          [,1]
##    23.0544545
## X1  0.7372330
## X2 -0.0343275

Bandingkan dengan Fungsi (lm)

model <- lm(Nilai_UAS ~ Kehadiran + IQ, data = data)
model
## 
## Call:
## lm(formula = Nilai_UAS ~ Kehadiran + IQ, data = data)
## 
## Coefficients:
## (Intercept)    Kehadiran           IQ  
##    23.05445      0.73723     -0.03433
summary(model)
## 
## Call:
## lm(formula = Nilai_UAS ~ Kehadiran + IQ, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2861 -2.8939  0.0296  1.6791  6.1993 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 23.05445   25.57161   0.902 0.397247    
## Kehadiran    0.73723    0.10918   6.752 0.000264 ***
## IQ          -0.03433    0.22051  -0.156 0.880686    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.346 on 7 degrees of freedom
## Multiple R-squared:  0.8719, Adjusted R-squared:  0.8353 
## F-statistic: 23.82 on 2 and 7 DF,  p-value: 0.0007523

Persamaan Regresi

coef(model)
## (Intercept)   Kehadiran          IQ 
##  23.0544545   0.7372330  -0.0343275
b <- coef(model)
cat("Ŷ =", b[1], "+", b[2], "*X1", b[3], "*X2")
## Ŷ = 23.05445 + 0.737233 *X1 -0.0343275 *X2

Hasil/Interpretasi

Berdasarkan perhitungan manual menggunakan metode Ordinary Least Squares (OLS) dengan rumus β̂ = (X’X)⁻¹X’Y, diperoleh koefisien regresi yaitu β₀ = 23.0544545, β₁ = 0.7372330, dan β₂ = -0.0343275. Sehingga persamaan regresi linier berganda yang terbentuk adalah:

cat("Ŷ =", b[1], "+", b[2], "*X1", b[3], "*X2")
## Ŷ = 23.05445 + 0.737233 *X1 -0.0343275 *X2

X1 = Kehadiran, X2 = IQ , Y = Nilai UAS

Hasil tersebut kemudian dibandingkan dengan output fungsi lm() di R dan diperoleh nilai koefisien yang sama. Hal ini menunjukkan bahwa perhitungan manual yang dilakukan sudah benar.

Interpretasinya adalah sebagai berikut:

Uji F, Uji T, dan koefisien determinasinya

Uji F

  • H₀ (nol): β₁ = β₂ = 0

  • H₁ (alternatif): minimal ada satu βᵢ ≠ 0

summary(model)
## 
## Call:
## lm(formula = Nilai_UAS ~ Kehadiran + IQ, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2861 -2.8939  0.0296  1.6791  6.1993 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 23.05445   25.57161   0.902 0.397247    
## Kehadiran    0.73723    0.10918   6.752 0.000264 ***
## IQ          -0.03433    0.22051  -0.156 0.880686    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.346 on 7 degrees of freedom
## Multiple R-squared:  0.8719, Adjusted R-squared:  0.8353 
## F-statistic: 23.82 on 2 and 7 DF,  p-value: 0.0007523

Interpretasi Uji F

Berdasarkan hasil uji F diperoleh nilai F-statistic = 23.82 dengan p-value = 0.0007523. Karena nilai p-value < 0.05, maka H₀ ditolak dan H₁ diterima. Berarti bahwa secara simultan variabel kehadiran (X1) dan IQ (X2) berpengaruh signifikan terhadap nilai UAS (Y).

Uji T

Hipotesis:

Untuk X1:

  • H₀: β₁ = 0 → X1 tidak berpengaruh terhadap Y

  • H₁: β₁ ≠ 0 → X1 berpengaruh terhadap Y

Untuk X2:

  • H₀: β₂ = 0 → X2 tidak berpengaruh terhadap Y

  • H₁: β₂ ≠ 0 → X2 berpengaruh terhadap Y

summary(model)$coefficients
##               Estimate Std. Error    t value     Pr(>|t|)
## (Intercept) 23.0544545 25.5716101  0.9015644 0.3972467061
## Kehadiran    0.7372330  0.1091797  6.7524718 0.0002644133
## IQ          -0.0343275  0.2205125 -0.1556715 0.8806860631

Interpretasi Uji T

  • Variabel Kehadiran (X1): Diperoleh nilai p-value = 0.0002644133 < 0.05, sehingga H₀ ditolak. Artinya, variabel kehadiran berpengaruh signifikan terhadap nilai UAS. Dengan koefisien positif (0.7372330), menunjukkan bahwa semakin tinggi kehadiran siswa, maka nilai UAS cenderung meningkat.

  • Variabel IQ (X2): Diperoleh nilai p-value = 0.8806860631 > 0.05, sehingga H₀ gagal ditolak. Artinya, variabel IQ tidak berpengaruh signifikan terhadap nilai UAS.

Secara parsial, hanya variabel kehadiran yang berpengaruh signifikan terhadap nilai UAS, sedangkan IQ tidak berpengaruh signifikan dalam model ini.

Koefisien determinasi

R2 <- summary(model)$r.squared
Adj_R2 <- summary(model)$adj.r.squared

cat("Koefisien Determinasi (R2):", R2, "\n")
## Koefisien Determinasi (R2): 0.8719029
cat("Adjusted R2:", Adj_R2, "\n")
## Adjusted R2: 0.8353038

Interpretasi Koefisien determinasi

  • Nilai Koefisien Determinasi (R²) sebesar 0.8719029 menunjukkan bahwa sekitar 87.19% variasi nilai UAS dapat dijelaskan oleh variabel kehadiran (X1) dan IQ (X2) dalam model. Sedangkan sisanya sebesar 12.81% dijelaskan oleh faktor lain di luar model.

  • Nilai Adjusted R² sebesar 0.8353038 menunjukkan bahwa setelah disesuaikan dengan jumlah variabel dalam model, sekitar 83.53% variasi nilai UAS masih dapat dijelaskan oleh model. (Mempertimbangkan kompleksitas Modelnya)

Model regresi memiliki kemampuan yang cukup kuat dalam menjelaskan variasi nilai UAS siswa, sehingga model tergolong baik untuk digunakan.

Uji Asumsi

Uji Normalitas Residual (Shapiro-Wilk)

shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.95125, p-value = 0.6833
# QQ Plot
qqnorm(residuals(model))
qqline(residuals(model))

## Interpretasi Uji Shapiro-Wilk dan QQ Plot

Diperoleh nilai p-value = 0.6833 > 0.05, sehingga H₀ tidak ditolak. Artinya, residual pada model regresi berdistribusi normal.

Berdasarkan grafik QQ Plot, titik-titik residual cenderung mengikuti garis diagonal, meskipun terdapat sedikit penyimpangan di bagian ujung. Hal ini cukup menunjukkan bahwa distribusi residual mendekati normal.

Uji Heteroskedastisitas (Breusch-Pagan)

library(lmtest)
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 5.905, df = 2, p-value = 0.05221

Interpretasi Uji Breusch-Pagan:

Diperoleh p-value = 0.05221 > 0.05, sehingga H₀ tidak ditolak. Artinya, tidak terdapat gejala heteroskedastisitas pada model.

Uji Autokorelasi

dwtest(model)
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.594, p-value = 0.8013
## alternative hypothesis: true autocorrelation is greater than 0

Interpretasi Uji Autokorelasi (Durbin-Watson):

Berdasarkan hasil uji Durbin-Watson diperoleh nilai DW = 2.594 dengan p-value = 0.8013. Karena nilai p-value lebih besar dari 0.05, maka H₀ tidak ditolak, yang berarti tidak terdapat autokorelasi pada residual model.

Uji Multikolinearitas

library(car)
vif(model)
## Kehadiran        IQ 
##  1.055571  1.055571

Interpretasi Uji Multikolinearitas (VIF):

Berdasarkan hasil perhitungan Variance Inflation Factor (VIF), diperoleh nilai VIF untuk X1 = 1.055571 dan VIF untuk X2 = 1.055571. Nilai VIF yang mendekati 1 dan jauh di bawah batas umum (<10) menunjukkan bahwa tidak terdapat hubungan linier yang kuat antar variabel bebas. Artinya, tidak terjadi multikolinearitas dalam model.