tujuan: 1. menjelaskan hubungan antara variabel 2. memprediksi nilai Y berdasarkan X
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
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.
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
# 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.
# 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.
# 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.
# 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.
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).
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.
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.
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).
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.
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.