Regresi Linear

tujuan: 1. menjelaskan hubungan antara variabel 2. memprediksi nilai Y berdasarkan X

Regresi Linear sederhana

Contoh Kasus: • Hubungan Jam Belajar (X) dengan Nilai Ujian (Y). • Hipotesis: semakin banyak jam belajar, semakin tinggi nilai ujian.

# Membaca data dari CSV
 jam_bel <- c(2,3,5,7,9,4,8,6,1,2)
 nilai <- c(55,60,65,80,85,63,80,75,45,53)
 dataku <- data.frame(jam_bel,nilai)
 
 # Melihat isi data
 dataku
##    jam_bel nilai
## 1        2    55
## 2        3    60
## 3        5    65
## 4        7    80
## 5        9    85
## 6        4    63
## 7        8    80
## 8        6    75
## 9        1    45
## 10       2    53
summary(dataku)
##     jam_bel         nilai      
##  Min.   :1.00   Min.   :45.00  
##  1st Qu.:2.25   1st Qu.:56.25  
##  Median :4.50   Median :64.00  
##  Mean   :4.70   Mean   :66.10  
##  3rd Qu.:6.75   3rd Qu.:78.75  
##  Max.   :9.00   Max.   :85.00

Analisis Regresi Linear Sederhana

membuat model

# Model regresi linear
 model <- lm(nilai ~ jam_bel, data = dataku)
 # Ringkasan hasil model
 summary(model)
## 
## Call:
## lm(formula = nilai ~ jam_bel, data = dataku)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3715 -1.8598  0.0455  1.9934  2.8796 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  43.5800     1.5863   27.47 3.32e-09 ***
## jam_bel       4.7915     0.2951   16.24 2.08e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.435 on 8 degrees of freedom
## Multiple R-squared:  0.9706, Adjusted R-squared:  0.9669 
## F-statistic: 263.7 on 1 and 8 DF,  p-value: 2.081e-07

visualisasi garis regresi sederhana

plot(dataku$jam_bel, dataku$nilai,
     main = "Hubungan Jam Belajar dan Nilai",
     xlab = "Jam Belajar",
     ylab = "Nilai Ujian", 
     pch = 19)
abline(model, col = "blue", lwd = 2)

Scatterplot di atas menunjukkan adanya hubungan positif yang kuat antara jam belajar dengan nilai ujian. Garis regresi yang menanjak menegaskan bahwa semakin lama mahasiswa belajar, semakin tinggi pula nilai ujian yang dicapai. Model regresi ini cukup baik merepresentasikan data, karena titik-titik observasi tersebar dekat dengan garis regresi.

pemerikasaan asumsi 1. normalitas menggunakan metode saphiro test

shapiro.test(residuals(model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(model)
## W = 0.91809, p-value = 0.3413
hist(residuals(model), main = "Histogram Residuals")

 qqnorm(residuals(model)); qqline(residuals(model))

Berdasarkan uji statistik (Shapiro-Wilk) dan grafik (histogram & Q-Q plot), residual dari model regresi ini dapat dianggap berdistribusi normal. Dengan demikian, asumsi normalitas terpenuhi.

  1. homoskedastisitas menggunakan Breusch-Pagan test
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
model <- lm(nilai ~ jam_bel, data = dataku)
bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 0.01625, df = 1, p-value = 0.8986
 plot(model$fitted.values, residuals(model),
 xlab = "Fitted Values", ylab = "Residuals",
 main = "Uji Homoskedastisitas")
 abline(h = 0, col = "red")

Dari plot Residual vs Fitted Values, dapat dilihat: • Titik-titik residual menyebar acak di atas dan di bawah garis nol (merah). 80 • Tidak tampak pola tertentu (misalnya membentuk kipas/lebar ke kanan, menyempit, atau me lengkung). • Variansi residual terlihat relatif konstan sepanjang fitted values. Dengan demikian, asumsi homoskedastisitas terpenuhi.

### Prediksi Regresi Sederhana

newdata <- data.frame(jam_bel = 7)
predict(model, newdata, interval = "confidence")
##        fit      lwr      upr
## 1 77.12041 74.75339 79.48743

Belajar selama 7 jam diperkirakan akan menghasilkan nilai sekitar 77. Meskipun ada ketidakpastian, model cukup yakin bahwa hasilnya tidak akan jauh dari rentang 75–79.5. Ini menunjukkan model memberikan prediksi yang cukup stabil dan bisa dijadikan acuan dalam memperkirakan hasil berdasarkan jam belajar.

## Regresi Linear Berganda Contoh Kasus: Pada data mtcars akan dilihat, apakah: • mpg (Miles per Gallon) → efisiensi bahan bakar (variabel dependen Y). • hp (Horsepower) → tenaga mesin (variabel independen X1). • wt (Weight) → berat mobil (variabel independen X2). Hipotesis: • Semakin besar horsepower, semakin boros bahan bakar (mpg turun). • Semakin berat mobil, semakin boros bahan bakar (mpg turun).

data(mtcars)
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
# korelasi awal 
cat("korelasi mpg dan hp: ", cor(mtcars$mpg, mtcars$hp))
## korelasi mpg dan hp:  -0.7761684
cat("korelasi mpg dan wt: ", cor(mtcars$mpg, mtcars$wt))
## korelasi mpg dan wt:  -0.8676594

Analisis Regresi Linear

  1. Membuat Model Regresi Linear Sederhana (mpg~hp)
# model 1 sederhana (mpg ~ hp)
 model1 <- lm(mpg ~ hp, data = mtcars)
 summary(model1)
## 
## Call:
## lm(formula = mpg ~ hp, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.7121 -2.1122 -0.8854  1.5819  8.2360 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 30.09886    1.63392  18.421  < 2e-16 ***
## hp          -0.06823    0.01012  -6.742 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.863 on 30 degrees of freedom
## Multiple R-squared:  0.6024, Adjusted R-squared:  0.5892 
## F-statistic: 45.46 on 1 and 30 DF,  p-value: 1.788e-07
# model 2 berganda (mpg ~ hp + wt)
model2 <- lm(mpg ~ hp + wt, data = mtcars)
summary(model2)
## 
## Call:
## lm(formula = mpg ~ hp + wt, data = mtcars)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.941 -1.600 -0.182  1.050  5.854 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.22727    1.59879  23.285  < 2e-16 ***
## hp          -0.03177    0.00903  -3.519  0.00145 ** 
## wt          -3.87783    0.63273  -6.129 1.12e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.593 on 29 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8148 
## F-statistic: 69.21 on 2 and 29 DF,  p-value: 9.109e-12

Ketika ditambahkan variabel berat mobil (model regresi berganda: mpg ~ hp + wt), model mengalami peningkatan yang cukup besar. Nilai R2 naik menjadi 0.83, yang berarti 83 variasi mpg kini dapat dijelaskan oleh kombinasi hp dan wt. Selain itu, standard error residual turun dari 3.86 menjadi 2.59, menandakan prediksi model lebih tepat. Dalam model berganda ini, baik hp maupun wt sama-sama signifikan memengaruhi mpg. Namun, koefisien hp mengecil (dari −0.068 menjadi −0.032). Hal ini menunjukkan bahwa sebagian pengaruh hp terhadap mpg sebelumnya “tercampur” dengan efek berat mobil. Setelah mengontrol wt, pengaruh murni hp terhadap mpg lebih kecil. Sementara itu, wt memberikan dampak yang cukup besar: setiap kenaikan 1 ton berat mobil menurunkan mpg sekitar 3.88. Secara keseluruhan, penambahan variabel wt terbukti memperbaiki model, meningkatkan kemampuan prediksi, dan memberikan pemahaman yang lebih akurat mengenai faktor-faktor yang memengaruhi efisiensi bahan bakar mobil.

### Pemeriksaan Asumsi pada Kedua Model pada bagian ini juga merupakan pr yang di berikan, yang mana setelah melakukan interpretasi dengan model 1 sederhana (mpg ~ hp), dan model 2 berganda (mpg ~ hp + wt). ditahap ini akan melakukan pemeriksaan asumsi yang merupakan penting untuk validitas model.

tugas nya antara lain:

1. melakukan pengujian asumsi: linearitas, homoskedastisitas, normalitas eror, dan multikolinearitas

  • cek linearitas
# plot residual vs fitted values
plot(model1, which = 1, main = "Model 1")

plot(model2, which = 1, main = "Model 2")

Model 1: masih terlihat pola melengkung, artinya hubungan antara hp dan mpg tidak sepenuhnya linear. Model 2: Pola terlihat lebih acak, hubungan linear lebih terpenuhi setelah menambahkan wt.

  • cek homoskedastisitas
# uji Breusch-Pagan
bptest(model1) # p > 0.05 = homoskedastisitas terpenuhi
## 
##  studentized Breusch-Pagan test
## 
## data:  model1
## BP = 0.049298, df = 1, p-value = 0.8243
bptest(model2)
## 
##  studentized Breusch-Pagan test
## 
## data:  model2
## BP = 0.88072, df = 2, p-value = 0.6438

Model 1: Sering terlihat residual makin besar pada fitted rendah yang mengindikasikan heteroskedastisitas. Model 2: Residual lebih stabil yang mana homoskedastisitas lebih baik.

  • cek normalitas eror
# uji saphiro-wilk
shapiro.test(resid(model1)) # p > 0.05 = normal
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(model1)
## W = 0.92337, p-value = 0.02568
shapiro.test(resid(model2))
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(model2)
## W = 0.92792, p-value = 0.03427
# Q-Q plot
plot(model1, which = 2, main = "Model 1")

plot(model2, which = 2, main = "Model 2")

Model 1: Residual agak melenceng (skewed). Model 2: Lebih dekat ke distribusi normal sehingga asumsi normalitas lebih baik.

  • cek multikolinearitas untuk uji multikolinearitas hanya di peruntukkan untuk regresi yang berganda saja. karena untuk regresi yang sederhana tidak relevan.
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
vif(model2) # nilai vif < 10 aman
##       hp       wt 
## 1.766625 1.766625

Model 2: hp dan wt ada korelasi sehingga VIF (masih aman, jauh dari 10).

2. melakukan perbandingan hasil uji dari kedua model

  • Linearitas Model 1 (mpg ~ hp): Residual vs fitted masih menunjukkan pola melengkung → indikasi hubungan antara hp dan mpg tidak sepenuhnya linear. Model 2 (mpg ~ hp + wt): Residual lebih menyebar acak → asumsi linearitas lebih terpenuhi setelah ditambahkan variabel berat mobil (wt).

Model 1 (mpg ~ hp) masih menunjukkan pola melengkung sehingga hubungan tidak sepenuhnya linear, sedangkan Model 2 (mpg ~ hp + wt) menunjukkan pola residual yang lebih acak. Hal ini menandakan bahwa penambahan variabel wt memperbaiki asumsi linearitas. * Kesimpulan: Model 2 lebih baik dalam memenuhi asumsi linearitas.

  • Homoskedastisitas (Uji Breusch-Pagan) Model 1: p-value = 0.8243 → tidak signifikan → asumsi homoskedastisitas terpenuhi. Model 2: p-value = 0.6438 → juga tidak signifikan → asumsi homoskedastisitas terpenuhi.

Uji Breusch-Pagan menghasilkan p-value > 0.05 pada kedua model (Model 1: 0.8243, Model 2: 0.6438), sehingga asumsi homoskedastisitas terpenuhi di keduanya. * Kesimpulan: Kedua model sama-sama memenuhi asumsi homoskedastisitas.

  • Normalitas Error (Shapiro-Wilk Test) Model 1: p-value = 0.02568 → signifikan (< 0.05) → residual tidak normal. Model 2: p-value = 0.03427 → signifikan (< 0.05) → residual juga tidak normal.

Uji Shapiro-Wilk menunjukkan p-value < 0.05 baik pada Model 1 (0.02568) maupun Model 2 (0.03427), sehingga secara formal asumsi normalitas tidak terpenuhi. Namun, secara visual melalui Q-Q plot, residual Model 2 terlihat lebih mendekati distribusi normal dibanding Model 1. * Kesimpulan: Kedua model mengalami sedikit pelanggaran asumsi normalitas error. Namun, karena sampel mtcars kecil (n = 32), hasil uji Shapiro-Wilk bisa sensitif. Secara praktis, residual Model 2 terlihat lebih mendekati normal dibanding Model 1 (dari Q-Q plot).

  • Multikolinearitas (VIF) Model 1: Tidak relevan (hanya 1 variabel). Model 2: hp = 1.77, wt = 1.77 → jauh di bawah ambang batas 10 → tidak ada masalah multikolinearitas serius.

Pada Model 2, nilai VIF untuk hp dan wt sebesar 1.77, jauh di bawah ambang batas 10. Dengan demikian, tidak terdapat masalah multikolinearitas serius. * Kesimpulan: Model 2 aman dari multikolinearitas.

3. membuat kesimpulan

Model berganda (mpg ~ hp + wt) terbukti lebih baik dibandingkan model sederhana (mpg ~ hp). Selain memberikan peningkatan yang signifikan pada R² (dari 0.60 menjadi 0.83) dan menurunkan standard error residual (dari 3.86 menjadi 2.59), Model 2 juga lebih mampu memenuhi asumsi regresi (khususnya linearitas dan distribusi error). Dengan demikian, Model 2 dapat dianggap sebagai model yang lebih tepat dan reliabel untuk menjelaskan variasi mpg pada dataset mtcars.