Tugas Pertemuan 4: Regresi Linier (Uji Hipotesis, Ukuran Kecocokan Model, dan Uji Asumsi

TUGAS REGRESI LINIER


Tugas ini disusun untuk memenuhi tugas mata kuliah
Pengantar Model Linier



Dosen Pengampu:
Miftahus Sholihin, M.Si.





Disusun oleh:

Nama : Nazwa Khoirina
NIM : 3338240005
Kelas: 4B




PROGRAM STUDI STATISTIKA
FAKULTAS TEKNIK
UNIVERSITAS SULTAN AGENG TIRTAYASA
2026

Latihan Soal

Diberikan data tentang IQ dan tingkat kehadiran sepuluh siswa di kelas yang diperkirakan mempengaruhi nilai UAS.

Soal
Soal

Pertanyaan:

  1. Buatlah persamaan regresi linier berganda ! (hitung beta duga secara manual di R dan bandingkan dengan fungsi lm)

  2. Lakukan Uji-F ! (interpretasikan hasilnya)

  3. Lakukan Uji-t ! (interpretasikan hasilnya)

  4. Berapa koefisien determinasinya? Interpretasi hasil ini !

  5. Lakukan uji asumsi dan jelaskan hasilnya

Jawaban

Soal 1

Regresi Linier Berganda

Input Data

# --------------------------------
# INPUT DATA
# --------------------------------
# X1 = Kehadiran
# X2 = IQ
# Y  = Nilai UAS

data <- data.frame(
  Siswa = c(1:10),
  X1 = c(60,70,75,80,80,90,95,95,100,100),   # Kehadiran (%)
  X2 = c(110,120,115,130,110,120,120,125,110,120),  # IQ
  Y  = c(65,70,75,75,80,80,85,95,90,98)      # Nilai UAS
)
# Melihat Data
library(DT)

datatable(
  data,
  caption = htmltools::tags$caption(
    style = 'caption-side: top; text-align: center; font-size:18px; font-weight: bold;',
    'Tabel Data IQ dan Tingkat Kehadiran Sepuluh Siswa di Kelas'
  ),
  options = list(
    pageLength = 10,
    dom = 't',
    initComplete = JS(
      "function(settings, json) {",
      "$(this.api().table().header()).css({'background-color': '#8E7CC3', 'color': '#ffffff'});",
      "}"
    )
  )
) %>%
  formatStyle(
    columns = names(data),
    backgroundColor = '#FFF1E6', 
    border = '1px solid black'   
  )

Perhitungan Dengan Manual

# --------------------------------
# A. REGRESI MANUAL (METODE MATRIKS)
# --------------------------------
# Model: Y = b0 + b1*X1 + b2*X2

# Matriks X (ditambah intercept)
X <- cbind(1, data$X1, data$X2)

# Matriks Y
Y <- as.matrix(data$Y)

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

# Menampilkan hasil beta
beta_manual
##            [,1]
## [1,] 23.0544545
## [2,]  0.7372330
## [3,] -0.0343275

Perhitungan Dengan fungsi lm

# --------------------------------
# B. REGRESI DENGAN lm()
# --------------------------------
model <- lm(Y ~ X1 + X2, data = data)
model
## 
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
## 
## Coefficients:
## (Intercept)           X1           X2  
##    23.05445      0.73723     -0.03433
# Koefisien dari lm
coef(model)
## (Intercept)          X1          X2 
##  23.0544545   0.7372330  -0.0343275

Membuat persamaan regresi linier berganda

# --------------------------------
# Menampilkan Persamaan Regresi
# --------------------------------

b <- coef(model)  # ambil koefisien

# Buat fungsi otomatis  + atau - sesuai tanda
format_koef <- function(k) {
  if (k >= 0) paste("+", k)
  else paste("-", abs(k))
}

# Buat persamaan 
persamaan <- paste0(
  "Ŷ = ", format(b[1], scientific = FALSE), " ",
  ifelse(b[2] >= 0, "+ ", "- "),
  format(abs(b[2]), scientific = FALSE), " * X1 ",
  ifelse(b[3] >= 0, "+ ", "- "),
  format(abs(b[3]), scientific = FALSE), " * X2"
)


# Menampilkan persamaan
cat("Persamaan regresi linier berganda:\n")
## Persamaan regresi linier berganda:
cat(persamaan)
## Ŷ = 23.05445 + 0.737233 * X1 - 0.0343275 * X2

Perbandingan Hasil Manual Dengan Fungsi lm

library(knitr)
library(kableExtra)

# Buat nama parameter manual b0, b1, b2
parameter_nama <- c("b0", "b1", "b2")

# Data perbandingan
perbandingan <- data.frame(
  Koefisien = parameter_nama,
  Manual = as.numeric(beta_manual),
  lm = as.numeric(coef(model))
)

# Tampilkan tabel rapi
kable(
  perbandingan,
  caption = "<b>Perbandingan Hasil Manual dengan Fungsi lm</b>",
  escape = FALSE
) %>%
  kable_styling(
    full_width = FALSE,
    position = "center",
    font_size = 15
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#C75100") %>%
  row_spec(seq(1, nrow(perbandingan), 2), background = "#FFE5D9") %>% 
  row_spec(seq(2, nrow(perbandingan), 2), background = "#FFD6BA")    
Perbandingan Hasil Manual dengan Fungsi lm
Koefisien Manual lm
b0 23.0544545 23.0544545
b1 0.7372330 0.7372330
b2 -0.0343275 -0.0343275

Interpretasi

Persamaan Regresi Linier: \[ Ŷ = 23.05 + 0.737 X_1 - 0.03 X_2 \]

1. Intercept (\(b0 = 23.05\)):

Menunjukkan bahwa jika kehadiran (\(X_1\)) dan IQ (\(X_2\)) bernilai 0 atau seorang siswa tidak hadir sama sekali dan memiliki IQ 0, maka nilai UAS-nya diprediksi sekitar 23,05. Ini menjadi titik awal model, meskipun secara nyata tidak ada siswa dengan \(X_1\) (kehadiran) atau \(X_2\) (IQ) = 0.

2. Koefisien \(X_1\) (\(b1 = 0.737\)):

Setiap peningkatan 1% kehadiran siswa akan meningkatkan nilai UAS sebesar 0,737 poin, dengan asumsi IQ tetap. Hal ini menunjukkan bahwa kehadiran memiliki pengaruh positif terhadap nilai UAS. Artinya, semakin sering siswa hadir di kelas, maka nilai UAS yang diperoleh cenderung lebih tinggi. Sebagai contoh, jika kehadiran meningkat sebesar 10%, maka nilai UAS diperkirakan naik sekitar 7,37 poin.

3. Koefisien \(X_2\) (\(b2 = -0.03\)):

Setiap peningkatan 1 poin IQ akan menurunkan nilai UAS sebesar 0,03 poin, dengan asumsi kehadiran tetap. Namun, pengaruh ini sangat kecil, sehingga dapat dikatakan bahwa IQ memiliki pengaruh yang lemah terhadap nilai UAS dalam data ini. Contoh, jika IQ naik 10 poin, maka nilai UAS diperkirakan turun sebesar 0,3 poin, dengan asumsi kehadiran tetap.

Kesimpulan:

Berdasarkan hasil analisis regresi linier berganda, variabel kehadiran (\(X_1\)) memiliki pengaruh positif terhadap nilai UAS, sedangkan IQ (\(X_2\)) memiliki pengaruh negatif namun relatif kecil. Hal ini menunjukkan bahwa kehadiran lebih berpengaruh dalam meningkatkan nilai UAS dibandingkan IQ. Selain itu, hasil perhitungan manual dan menggunakan fungsi lm() memberikan koefisien yang sama. Dengan demikian, model regresi yang diperoleh dapat digunakan untuk memprediksi nilai UAS berdasarkan kehadiran dan IQ siswa.

Soal 2

Uji-F (Simultan)

Uji-F Manual

# --------------------------------
# UJI-F (SIMULTAN)
# --------------------------------
# Tujuan: Menguji apakah X1 (Kehadiran) dan X2 (IQ)
# secara bersama-sama berpengaruh terhadap Y (Nilai)

# ==========================
# A. UJI-F MANUAL
# ==========================

# Jumlah data
n <- nrow(data)

# Jumlah variabel bebas
k <- 2

# Nilai prediksi
Y_pred <- predict(model)

# Residual
resid <- residuals(model)

# Hitung SST (Total)
SST <- sum((data$Y - mean(data$Y))^2)

# Hitung SSR (Regresi)
SSR <- sum((Y_pred - mean(data$Y))^2)

# Hitung SSE (Error)
SSE <- sum(resid^2)

# Mean Square
MSR <- SSR / k
MSE <- SSE / (n - k - 1)

# F hitung
F_hitung <- MSR / MSE

# p-value
p_value_F <- pf(F_hitung, k, n - k - 1, lower.tail = FALSE)

# Tampilkan hasil manual
F_hitung
## [1] 23.82303
p_value_F
## [1] 0.0007522929

Uji-F Dengan Fungsi

# ==========================
# B. UJI-F DENGAN FUNGSI
# ==========================
# Analisis Varians (ANOVA)
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2, 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    
## X1           0.73723    0.10918   6.752 0.000264 ***
## X2          -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
anova(model)
## Analysis of Variance Table
## 
## Response: Y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## X1         1 899.43  899.43 47.6218 0.0002312 ***
## X2         1   0.46    0.46  0.0242 0.8806861    
## Residuals  7 132.21   18.89                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Uji F Atau dari summary
summary(model)$fstatistic
##    value    numdf    dendf 
## 23.82303  2.00000  7.00000
# P-value
pf(summary(model)$fstatistic[1],
   summary(model)$fstatistic[2],
   summary(model)$fstatistic[3],
   lower.tail = FALSE)
##        value 
## 0.0007522929

Interpretasi

Uji Hipotesis:

\[ H_0: \beta_1 = \beta_2 = 0 \]

Variabel bebas (X1 = Kehadiran, X2 = IQ) tidak berpengaruh secara simultan terhadap variabel respon (Y = Nilai UAS)

\[ H_1: \text{Setidaknya ada satu } \beta_i \neq 0 \]

Variabel bebas (X1 = Kehadiran, X2 = IQ) berpengaruh secara simultan terhadap variabel respon (Y = Nilai UAS)

Taraf Signifikansi:

\[ α = 0,05 \]

Statistik Uji:

F hitung = 23,82303

p-value = 0,0007522929

\[ p-value < α → Tolak H_0 \]

\[ p-value > α → Terima H_0 \]

Keputusan:

Karena p-value < α (0,0007522929 < 0,05), maka tolak H0

Kesimpulan:

Pada taraf signifikansi 5% (α = 0,05), nilai p-value < α (0,0007522929 < 0,05), sehingga Tolak H0. Artinya, secara simultan variabel X1 (Kehadiran) dan X2 (IQ) berpengaruh signifikan terhadap Y (Nilai UAS). Dengan demikian, model regresi yang digunakan layak untuk menjelaskan hubungan antara variabel bebas dan respon.

Soal 3

Uji-t (Parsial)

Uji-t Manual

# --------------------------------
# UJI-t (PARSIAL)
# --------------------------------
# Tujuan: Menguji pengaruh masing-masing variabel (X1 & X2) terhadap Y

# ==========================
# A. UJI-t MANUAL
# ==========================

# Jumlah data & variabel
n <- nrow(data)   # n = jumlah observasi / jumlah data (banyaknya sampel)
k <- 2           # k = jumlah variabel bebas (X1 = Kehadiran, X2 = IQ)

# Matriks X & Y (pastikan sudah ada dari sebelumnya)
X <- cbind(1, data$X1, data$X2)
Y <- as.matrix(data$Y)

# Hitung XtX
XtX <- t(X) %*% X

# Koefisien beta
b <- solve(XtX) %*% t(X) %*% Y

# Residual
resid <- Y - X %*% b

# SSE
SSE  # Sudah dihitung pada bagian Uji-F sebelumnya
## [1] 132.209
# Varians error
sigma2 <- SSE / (n - k - 1)

# Varians koefisien
var_b <- sigma2 * solve(XtX)

# Standard error
se_b <- sqrt(diag(var_b))

# t hitung
t_hitung <- as.vector(b) / se_b

# p-value
p_value_t <- 2 * pt(-abs(t_hitung), df = n - k - 1)

# Gabungkan hasil
uji_t <- data.frame(
  Koefisien = as.vector(b),
  Std_Error = se_b,
  t_hitung = t_hitung,
  p_value = p_value_t
)

uji_t
##    Koefisien  Std_Error   t_hitung      p_value
## 1 23.0544545 25.5716101  0.9015644 0.3972467061
## 2  0.7372330  0.1091797  6.7524718 0.0002644133
## 3 -0.0343275  0.2205125 -0.1556715 0.8806860631

Uji-t Dengan Fungsi

# ==========================
# B. UJI-t DENGAN FUNGSI
# ==========================

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

Interpretasi

Untuk \(X_1\) (Kehadiran)

Hipotesis:

\[ H_0: \beta_1 = 0 \]

X1 (Kehadiran) tidak berpengaruh terhadap Y (Nilai UAS)

\[ H_1: \beta_1 \neq 0 \]

X1 (Kehadiran) berpengaruh terhadap Y (Nilai UAS)

Taraf Signifikansi: \[ α = 0,05 \]

Statistik Uji:

t hitung = 6,7524718

p-value = 0,0002644133

\[ p-value < α → Tolak H_0 \]

\[ p-value > α → Terima H_0 \]

Keputusan:

Karena p-value < α (0,0002644133 < 0,05), maka tolak H₀

Kesimpulan:

Pada taraf signifikansi 5% ( α = 0,05), nilai p-value < α (0,0002644133 < 0,05), sehingga H₀ ditolak. Artinya, secara parsial variabel X1 (Kehadiran) memiliki pengaruh yang signifikan terhadap Y (Nilai UAS).

Untuk \(X_2\) (IQ)

Hipotesis:

\[ H_0: \beta_2 = 0 \]

X2 (IQ) tidak berpengaruh terhadap Y (Nilai UAS)

\[ H_1: \beta_2 \neq 0 \]

X2 (IQ) berpengaruh terhadap Y (Nilai UAS)

Taraf Signifikansi: \[ α = 0,05 \]

Statistik Uji:

t hitung = -0,1556715

p-value = 0,8806860631 \[ p-value < α → Tolak H_0 \]

\[ p-value > α → Terima H_0 \]

Keputusan:

Karena p-value > α (0,8806860631 > 0,05), maka terima H₀

Kesimpulan:

Pada taraf signifikansi 5% (α = 0,05), nilai p-value > α (0,8806860631 > 0,05), sehingga terima H₀ . Artinya, secara parsial variabel X2 (IQ) tidak memiliki pengaruh yang signifikan terhadap Y (Nilai UAS).

Kesimpulan Uji-t (Parsial)

Secara parsial, variabel kehadiran memiliki pengaruh yang signifikan terhadap nilai UAS, sedangkan variabel IQ tidak memiliki pengaruh yang signifikan terhadap nilai UAS. Hal ini menunjukkan bahwa kehadiran merupakan faktor yang lebih berperan dalam memengaruhi nilai UAS dibandingkan dengan IQ.

Soal 4

Koefisien Determinasi (\(R^2\))

Koefisien Determinasi Manual

# --------------------------------
# KOEFISIEN DETERMINASI (R^2)
# --------------------------------
# Tujuan: Mengukur seberapa besar X1 & X2 menjelaskan Y

# ==========================
# A. MANUAL
# ==========================

# Menggunakan nilai SST, SSR, dan SSE 
# yang sudah dihitung pada bagian Uji-F sebelumnya

# SST = total variasi Y
# SSR = variasi Y yang dijelaskan oleh model
# SSE = variasi Y yang tidak dijelaskan oleh model

# SST (Total)
SST 
## [1] 1032.1
# Prediksi
Y_pred <- predict(model)

# SSR (Regresi)
SSR 
## [1] 899.891
# SSE (Error)
SSE 
## [1] 132.209
# R^2
R2 <- SSR / SST

# Adjusted R^2
n <- nrow(data)     # n = jumlah observasi / jumlah data (banyaknya sampel)
k <- 2              # k = jumlah variabel bebas (X1 = Kehadiran, X2 = IQ)
Adj_R2 <- 1 - ((SSE/(n-k-1)) / (SST/(n-1)))

# Menampilkan hasil manual
R2
## [1] 0.8719029
Adj_R2
## [1] 0.8353038

Koefisien Determinasi Dengan Fungsi

# ==========================
# B. DENGAN FUNGSI
# ==========================

summary(model)$r.squared
## [1] 0.8719029
summary(model)$adj.r.squared
## [1] 0.8353038

Koefisien Determinasi

R² = 0,8719029 ≈ 87,19%

Adjusted R² = 0,8353038 ≈ 83,53%

Interpretasi

Koefisien Determinasi R²

Nilai koefisien determinasi (R²) sebesar 0,8719 menunjukkan bahwa variabel bebas (X1 = Kehadiran dan X2 = IQ) mampu menjelaskan keragaman variabel respon (Nilai UAS) sebesar 87,19%, sedangkan sisanya sebesar 12,81% dijelaskan oleh variabel lain di luar model.

Adjusted R²

Nilai Adjusted R² sebesar 0,8353 menunjukkan bahwa setelah disesuaikan dengan jumlah variabel dan data, variabel bebas mampu menjelaskan keragaman variabel respon (Nilai UAS) sebesar 83,53%, sedangkan sisanya sebesar 16,47% dijelaskan oleh variabel lain di luar model.

Soal 5

Uji Asumsi Klasik

Uji Normalitas

# --------------------------------
# UJI ASUMSI KLASIK
# --------------------------------

# ==========================
# 1. UJI NORMALITAS
# ==========================
# Menguji apakah residual berdistribusi normal

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

Interpretasi Uji Normalitas

Hipotesis

H₀: Residual berdistribusi normal

H₁: Residual tidak berdistribusi normal

Taraf Signifikansi \[ α = 0,05 \]

Statistik Uji

Nilai statistik uji (W) = 0,95125

p-value = 0,6833

\[ p-value < α→ Tolak H_0 \]

\[ p-value > α→ Terima H_0 \]

Keputusan

p-value > α (0,6833 > 0,05) maka Terima H₀

Kesimpulan

Pada taraf signifikansi 5% (α = 0,05), nilai p-value > α (0,6833 > 0,05), sehingga terima H₀. Artinya, residual berdistribusi normal. Dengan demikian, asumsi normalitas terpenuhi.

Uji Heteroskedastisitas

# ==========================
# 2. UJI HETEROSKEDASTISITAS
# ==========================
# Menguji apakah varians residual konstan atau tidak

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

Interpretasi Uji Heteroskedastisitas

Hipotesis

H₀: Tidak terjadi heteroskedastisitas (varians residual konstan)

H₁: Terjadi heteroskedastisitas (varians residual tidak konstan)

Taraf Signifikansi \[ α = 0,05 \]

Statistik Uji

BP = 5,905

p-value = 0,05221

\[ p-value < α→ Tolak H_0 \]

\[ p-value > α→ Terima H_0 \]

Keputusan

p-value > α (0,05221 > 0,05) maka Terima H₀

Kesimpulan

Pada taraf signifikansi 5% (α = 0,05), nilai p-value > α (0,05221 > 0,05), sehingga terima H₀. Artinya, tidak terjadi heteroskedastisitas (varians residual bersifat konstan atau homoskedastisitas), sehingga asumsi homoskedastisitas terpenuhi.

Uji Autokorelasi

# ==========================
# 3. UJI AUTOKORELASI
# ==========================
# Menguji apakah ada korelasi antar residual

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

Hipotesis

H₀: Tidak terdapat autokorelasi antar residual

H₁: Terdapat autokorelasi antar residual

Taraf Signifikansi \[ α = 0,05 \]

Statistik Uji

DW = 2,594

p-value = 0,8013

Nilai Durbin-Watson yang mendekati 2 menunjukkan bahwa tidak terdapat autokorelasi antar residual.

\[ p-value < α→ Tolak H_0 \]

\[ p-value > α→ Terima H_0 \]

Keputusan

p-value > α (0,8013 > 0,05), maka Terima H₀

Kesimpulan

Pada taraf signifikansi 5% (α = 0,05), nilai p-value > α (0,8013 > 0,05), sehingga terima H₀. Artinya, tidak terdapat autokorelasi antar residual. Dengan demikian, asumsi autokorelasi terpenuhi.

Uji Multikolinearitas

# ==========================
# 4. UJI MULTIKOLINEARITAS
# ==========================
# Menguji apakah antar variabel bebas saling berkorelasi tinggi

library(car)
vif(model)
##       X1       X2 
## 1.055571 1.055571

Interpretasi Uji Multikolinearitas

Hipotesis

H₀: Tidak terjadi multikolinearitas antar variabel bebas

H₁: Terjadi multikolinearitas antar variabel bebas

Statistik Uji

Kriteria: VIF < 10 → tidak terjadi multikolinearitas

VIF > 10 → terjadi multikolinearitas

Nilai yang diperoleh:

VIF X1 = 1,055571

VIF X2 = 1,055571

Keputusan

Karena seluruh nilai VIF (X1 dan X2) kurang dari 10, maka terima H₀.

Kesimpulan

Berdasarkan nilai VIF yang diperoleh, yaitu X1 sebesar 1,055571 dan X2 sebesar 1,055571, yang keduanya kurang dari 10, maka terima H₀. Artinya, tidak terdapat multikolinearitas antar variabel bebas. Sehingga, asumsi multikolinearitas terpenuhi.

Kesimpulan Uji Asumsi Klasik

Berdasarkan hasil pengujian asumsi klasik yang telah dilakukan, diperoleh bahwa pada uji normalitas residual berdistribusi normal, pada uji heteroskedastisitas tidak terjadi heteroskedastisitas (varians residual bersifat konstan), pada uji autokorelasi tidak terdapat autokorelasi antar residual, serta pada uji multikolinearitas tidak terdapat multikolinearitas antar variabel bebas. Dengan demikian, seluruh asumsi klasik dalam model regresi telah terpenuhi.

Visualisasi Grafik Uji Asumsi Klasik

# --------------------------------
# VISUALISASI 
# --------------------------------

# Grafik untuk melihat pola residual
par(mfrow = c(2,2))   # Menampilkan 4 grafik dalam 1 tampilan (2x2)
par(col = "darkblue", col.lab = "black", col.main = "darkred")  # Mengatur warna

# Menampilkan grafik diagnostik regresi
plot(model, main = "Grafik Uji Asumsi Klasik")

Interpretasi Grafik Uji Asumsi Klasik

1. Residuals vs Fitted

Grafik Residuals vs Fitted digunakan untuk mendeteksi linearitas dan heteroskedastisitas. Berdasarkan grafik tersebut, terlihat bahwa titik-titik residual menyebar di sekitar garis horizontal dan tidak membentuk pola tertentu yang jelas. Meskipun garis merah sedikit melengkung, namun tidak menunjukkan pola yang ekstrem. Oleh karena itu, dapat disimpulkan bahwa pola sebaran residual cenderung acak sehingga asumsi linearitas dan homoskedastisitas terpenuhi.

2. Q-Q Plot

Grafik Q-Q Plot digunakan untuk mendeteksi apakah residual berdistribusi normal. Berdasarkan grafik tersebut, terlihat bahwa titik-titik residual cenderung mengikuti garis diagonal dengan sedikit penyimpangan pada bagian ujung yang tidak signifikan. Oleh karena itu, dapat disimpulkan bahwa residual berdistribusi normal sehingga asumsi normalitas terpenuhi.

3. Scale-Location

Grafik Scale-Location digunakan untuk mendeteksi homoskedastisitas atau kesamaan varians residual. Berdasarkan grafik tersebut, terlihat bahwa sebaran titik relatif merata meskipun terdapat sedikit kecenderungan meningkat seiring bertambahnya nilai fitted. Namun, tidak menunjukkan pola yang sangat jelas atau ekstrem. Oleh karena itu, dapat disimpulkan bahwa varians residual relatif konstan sehingga asumsi homoskedastisitas masih terpenuhi.

4. Residuals vs Leverage

Grafik Residuals vs Leverage digunakan untuk mendeteksi adanya outlier dan pengaruh observasi (influential points). Berdasarkan grafik tersebut, tidak terdapat titik yang melewati batas Cook’s Distance, meskipun terdapat beberapa titik dengan leverage yang relatif lebih tinggi namun masih dalam batas wajar. Oleh karena itu, dapat disimpulkan bahwa tidak terdapat observasi yang berpengaruh besar sehingga tidak ditemukan masalah outlier yang signifikan dalam model.