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)
)
Y <- as.matrix(data$Nilai_UAS) # Variabel respon
X1 <- data$Kehadiran # Variabel bebas 1
X2 <- data$IQ # Variabel bebas 2
print(data)
## Siswa IQ Kehadiran Nilai_UAS
## 1 1 110 60 65
## 2 2 120 70 70
## 3 3 115 75 75
## 4 4 130 80 75
## 5 5 110 80 80
## 6 6 120 90 80
## 7 7 120 95 85
## 8 8 125 95 95
## 9 9 110 100 90
## 10 10 120 100 98
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
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
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
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:
Setiap peningkatan kehadiran siswa sebesar 1 satuan ( 1%), maka nilai UAS diperkirakan akan meningkat sebesar 0.7372330 poin, dengan asumsi IQ tetap/ konstan .
Setiap peningkatan IQ sebesar 1 satuan (1 poin) , maka nilai UAS diperkirakan akan menurun sebesar 0.0343275 poin, dengan asumsi kehadiran tetap.
Nilai Intersep 23.0544545 menunjukkan nilai UAS yang diperkirakan ketika kehadiran dan IQ bernilai konstan (0)
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
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).
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
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.
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
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.
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.
library(lmtest)
bptest(model)
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 5.905, df = 2, p-value = 0.05221
Diperoleh p-value = 0.05221 > 0.05, sehingga H₀ tidak ditolak. Artinya, tidak terdapat gejala heteroskedastisitas pada model.
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 2.594, p-value = 0.8013
## alternative hypothesis: true autocorrelation is greater than 0
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.
library(car)
vif(model)
## Kehadiran IQ
## 1.055571 1.055571
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.