Kelompok 4 Praktikum Statistika Sains Data RB

121450022 - Sarah Natalia Geraldine

121450094 - Syifa Firnanda

121450105 - Raditia Riandi

121450112 - Christian Arvianus Nathanael Biran

121450157 - Salwa Naqwadisa Madinna

1.Pengantar dataset(respons, variabel prediktor, jumlah observasi, dan jumlah prediktor)

Dataset yang digunakan pada Tugas kali ini adalah Dataset Auto.

- Respon : MPG

- Predictor : cylinders, displacement, horsepower, weight, acceleration, model year, dan origin.

- Jumlah Observasi : Jumlah baris dalam dataset Auto, yaitu jumlah data mobil yang terdapat dalam dataset.

- Jumlah Predictor : 7

2. Pertanyaan yang ingin dijawab :

Bagaimana pengaruh variabel prediktor Horse power terhadap MPG dalam model regresi polinomial dan regresi splines?

IMPORT Library dan dataset

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.1.8
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(rsample)
library(splines)
library(ggplot2)
library(ISLR)
library(boot)
data("Auto")

3. Pembersihan Data

sum(is.na(Auto))
## [1] 0

Pada Dataset ini tidak didapatkan mising value sehingga kita tidak perlu melakukan progres pembersihan lebih lanjut

4. Analisis deskriptif awal (ringkasan numerik dan gambar plot - jika diperlukan)

#analisis deskiptif awal
summary(Auto)
##       mpg          cylinders      displacement     horsepower        weight    
##  Min.   : 9.00   Min.   :3.000   Min.   : 68.0   Min.   : 46.0   Min.   :1613  
##  1st Qu.:17.00   1st Qu.:4.000   1st Qu.:105.0   1st Qu.: 75.0   1st Qu.:2225  
##  Median :22.75   Median :4.000   Median :151.0   Median : 93.5   Median :2804  
##  Mean   :23.45   Mean   :5.472   Mean   :194.4   Mean   :104.5   Mean   :2978  
##  3rd Qu.:29.00   3rd Qu.:8.000   3rd Qu.:275.8   3rd Qu.:126.0   3rd Qu.:3615  
##  Max.   :46.60   Max.   :8.000   Max.   :455.0   Max.   :230.0   Max.   :5140  
##                                                                                
##   acceleration        year           origin                      name    
##  Min.   : 8.00   Min.   :70.00   Min.   :1.000   amc matador       :  5  
##  1st Qu.:13.78   1st Qu.:73.00   1st Qu.:1.000   ford pinto        :  5  
##  Median :15.50   Median :76.00   Median :1.000   toyota corolla    :  5  
##  Mean   :15.54   Mean   :75.98   Mean   :1.577   amc gremlin       :  4  
##  3rd Qu.:17.02   3rd Qu.:79.00   3rd Qu.:2.000   amc hornet        :  4  
##  Max.   :24.80   Max.   :82.00   Max.   :3.000   chevrolet chevette:  4  
##                                                  (Other)           :365

Membuat ringkasan deskriptif awal yang berisi ringkasan statistik nilai minimal, quartil 1, median, mean, quartil 3, dan nilai maksimal dari masing-masing variabel dalam atribut yang terdapat pada data

#filter 4 kolom data Auto
#mpg sebagai peubah respon
#weight, horsepower, origin sebagai peubah prediktor
auto <- Auto %>% select(mpg,weight,horsepower,origin)
auto$origin <- as.factor(auto$origin)

Memfilter 4 kolom pada dataset auto yaitu kolom : weight,horsepower,origin dan mpg(selaku peubah respon)

Scatter plot horsepower vs mpg

ggplot(auto, aes(x=horsepower,y=mpg, color=origin))+geom_point(size=1)

Scatter plot horsepower vs mpg dapat digunakan sebagai alat awal untuk memahami hubungan antara variabel horsepower dan mpg sebelum melakukan analisis lebih lanjut.

Didapatkan plot untuk membandingkan antara horsepower dengan mpg

ggplot(auto, aes(x=horsepower,y=mpg, color=origin))+geom_point(size=1)+facet_wrap(~origin)

Plot menunjukkan pola garis lurus yang menurun, maka hal ini menunjukkan bahwa semakin tinggi horsepower, semakin rendah mpg-nya. Pola garis yang menurun (negative slope) juga menunjukkan adanya korelasi negatif antara variablel horsepower dan mpg. Selain itu, diketahui juga bahwa titik-titik data terkumpul secara erat pada area rentang horsepower 50-100, ini menunjukkan adanya konsentrasi data yang tinggi pada area tersebut.

Scatter plot weight vs mpg

ggplot(auto, aes(x=weight,y=mpg, color=origin))+geom_point(size=1)

Plot perbandingan antara weight dengan mpg (miles per gallon) digunakan untuk memvisualisasikan hubungan antara berat kendaraan (weight) dan efisiensi bahan bakar (mpg) pada kendaraan.

Didapatkan plot untuk membandingkan weight dengan mpg

ggplot(auto,aes(x=weight, y=mpg,color=origin))+geom_point(size=1)+facet_wrap(~origin)

Plot yang dihasilkan menunjukkan pola garis lurus yang menurun, maka hal ini menunjukkan bahwa semakin tinggi weight, semakin rendah mpg-nya. Selain itu, plot menunjukkan pola garis yang menurun (negative slope), maka ini menunjukkan adanya korelasi negatif antara weight dan mpg.

5. Metode klasifikasi regresi polinomial dengan CV

set.seed(123)
deltas = rep(NA, 10)
for (i in 1:10) {
  glm.fit = glm(mpg~poly(horsepower, i), data=auto)
  deltas[i] = cv.glm(auto, glm.fit, K=10)$delta[1]
}

deltas
##  [1] 24.31286 19.26303 19.27008 19.45712 18.77845 19.09834 18.84706 19.43794
##  [9] 18.99339 19.91883

Didapatkan klasifikasi regresi polinomial dengan cross validation untuk memprediksi variabel mpg menggunakan variabel horsepower dan memilih derajat optimal untuk polinomial

dev.new()
plot.new()
plot(1:10, deltas, xlab = "Degree", ylab = "CV Eror", type = "l")
d.min <- which.min(deltas)
points(which.min(deltas), deltas[which.min(deltas)], col = "red", cex = 2, pch = 20)

derajat optimal, d = 5 merupakan derajat optimal untuk optimal yang dipilih CV

lm1 <- lm(mpg ~ horsepower, data = auto)
lm2 <- lm(mpg ~ poly(horsepower, 2), data = auto)
lm3 <- lm(mpg ~ poly(horsepower, 3), data = auto)
lm4 <- lm(mpg ~ poly(horsepower, 4), data = auto)
lm5 <- lm(mpg ~ poly(horsepower, 5), data = auto)

anova(lm1, lm2, lm3, lm4, lm5)
## Analysis of Variance Table
## 
## Model 1: mpg ~ horsepower
## Model 2: mpg ~ poly(horsepower, 2)
## Model 3: mpg ~ poly(horsepower, 3)
## Model 4: mpg ~ poly(horsepower, 4)
## Model 5: mpg ~ poly(horsepower, 5)
##   Res.Df    RSS Df Sum of Sq        F    Pr(>F)    
## 1    390 9385.9                                    
## 2    389 7442.0  1   1943.89 103.8767 < 2.2e-16 ***
## 3    388 7426.4  1     15.59   0.8333  0.361897    
## 4    387 7399.5  1     26.91   1.4382  0.231169    
## 5    386 7223.4  1    176.15   9.4131  0.002306 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Anova, P-value, menunjukkan bahwa regresi derajat polinomial tingkat 2 dan 5 memberikan kesesuaian yang wajar dengan data. Diantaranya Polinomial urutan ke-2 memberikan kesesuaian terbaik untuk data.

plot(mpg ~ horsepower, data = auto, col = "gray")
agelims <- range(auto$horsepower)
horsepower.grid <- seq(from = agelims[1], to = agelims[2])
poly2 <- lm(mpg ~ poly(horsepower, 2), data = auto)
preds <- predict(poly2, newdata = list(horsepower = horsepower.grid))
lines(horsepower.grid, preds, col = "blue", lwd = 2, lty = 1)
poly4 <- lm(mpg ~ poly(horsepower, 5), data = auto)
preds4 <- predict(poly4, newdata = list(horsepower = horsepower.grid))
lines(horsepower.grid, preds4, col = "red", lwd = 2, lty=2)
legend("topright", legend=c("poly2", "poly4"),
col=c("blue", "red"), lty=1:2, cex=0.8)
title("fig:1-Degree-1 and 5- Polynomial FIT",outer=FALSE)

cvs <- rep(NA, 10)
for (i in 2:10) {
  auto$horsepower.cut <- cut(auto$horsepower, i)
  fit <- glm(mpg ~ horsepower.cut, data = auto)
  cvs[i] <- cv.glm(auto, fit, K = 10)$delta[1]
}
plot.new()
plot(2:10, cvs[-1], xlab = "Cuts", ylab = "Test Error", type = "l")
d.min <- which.min(cvs)
points(which.min(cvs), cvs[which.min(cvs)], col = "red", cex = 2, pch = 20)
title("Fig:2,10-Fold Cross Validation to find optimal cuts",outer=FALSE)

Dengan menggunakan cross validation, diketahui bahwa pada pembagian segmen data yang menunjukkan kesalahan pada uji minimum yang berarti pemotongan optimal terdapat pada simpuk k = 8.

Dengan menggunakan jumlah pemotongan yang optimal, didapatkan prediksi dari mpg menggunakan horsepower dengan cross validation adalah sebagai berikut.

lm.fit = glm(mpg~cut(horsepower, 8), data=auto)
horsepowerlims = range(auto$horsepower)
horsepower.grid = seq(from=horsepowerlims[1], to=horsepowerlims[2])
lm.pred = predict(lm.fit, data.frame(horsepower=horsepower.grid))
plot(mpg~horsepower, data=auto, col="gray")
lines(horsepower.grid, lm.pred, col="darkgreen", lwd=2)
title("Fig:3, Scatter plot of data with fitted line at cuts = 8",outer=FALSE)

Splines

fit2=smooth.spline(auto$horsepower, auto$mpg ,cv=TRUE)
## Warning in smooth.spline(auto$horsepower, auto$mpg, cv = TRUE): cross-validation
## with non-unique 'x' values seems doubtful
fit2$df
## [1] 5.784761

Didapatkan fitting pada splines sebesar 5.784761

fit2=lm(mpg~ns(horsepower ,df=5),data=auto)
pred2=predict(fit2,newdata=list(horsepower=horsepower.grid),se=T)
plot(auto$horsepower, auto$mpg ,xlim=horsepowerlims ,cex =.5, col = "darkgrey")
lines(horsepower.grid, pred2$fit, col="red",lwd=2)
title ("Smoothing Spline ")

Dengan menetapkan df=5, dapat menentukan nilai lambda mana yanh menghasilkan 5 derajat kebebasan, dan memilih tingkat kehalusan dengan CV , dengan hasil lambda adalah sebagai berikut.

plot(auto$horsepower, auto$mpg ,xlim=horsepowerlims ,cex =.5, col ="darkgrey")
title (" Local Regression ")
fit=loess(mpg~horsepower,span =.2, data=auto)
fit2=loess(mpg~horsepower ,span =.5, data=auto)
lines(horsepower.grid ,predict (fit ,data.frame(horsepower=horsepower.grid)),
col ="red",lwd =2)
lines(horsepower.grid ,predict (fit2,data.frame(horsepower=horsepower.grid)),
col ="blue",lwd =2)
legend("topright",legend=c("Span=0.2" ,"Span=0.5"),
col=c("red","blue"),lty =1, lwd =2, cex =.8)

Dengan menggunakan regresi linear dengan rentang 0,2 dan 0,5 atau biasa disebut dengan 20% atau 50% pengamatan, jika semakin besar rentangnya maka semakin halus.

Plot local regression dapat memberikan informasi yang lebih rinci tentang hubungan antara variabel horsepower dan mpg yang bersifat non-linear. Hal ini dapat diketahui dari perubahan bentuk hubungan pada rentang nilai horsepower tertentu. Pada nilai horsepower di kirisaran 100, terlihat bahwa hubungan antara horsepower dan bersifat lebih linier, sedangkan pada rentang horsepower yang lebih tinggi, hubungan tersebut menurun secara cepat.

6. Kesimpulan Dan Diskusi :

Bagaimana pengaruh variabel prediktor Horse power terhadap MPG dalam model regresi polinomial dan regresi splines?

Pengaruh variabel prediktor Horse power terhadap MPG menunjukkan bahwa semakin tinggi horsepower, semakin rendah mpg-nya. Pola garis yang menurun (negative slope) juga menunjukkan adanya korelasi negatif antara variablel horsepower dan mpg.Anova, P-value, menunjukkan bahwa regresi derajat polinomial tingkat 2 dan 5 memberikan kesesuaian yang wajar dengan data. Diantaranya Polinomial urutan ke-2 memberikan kesesuaian terbaik untuk data.

Variabel horsepower adalah salah satu variabel untuk memprediksi Miles per Gallon (MPG), variabel ini berpengaruh terhadap MPG yang dapat dianalisis melalui regresi polinomial dan regresi splines. Dalam regresi polinomial, hubungan antara horsepower dengan MPG dapat diasumsikan sebagai polinomial , yang dimana jika koefisien bernilai negatif, maka semakin tinggi nilai horsepower dan semakin rendah nilai MPG. Namun, jika koefisien bernilai positif, maka semakin tinggi nilai horsepower dan semakin tinggi pula nilai MPG.

Dalam regresi splines, hubungan antara horsepower dan MPG dijelaskan pada fungsi spline yang terdiri dari beberapa titik pemotongan. Fungsi dari spline ini sendiri dapat memodelkan hubungan non-linear antara horsepower dengan MPG. Pengaruh horsepower terhadap MPG dalam model splines dapat berbeda di setiap bagian spline. Pada bagian yang rendah, pengaruh horsepower terhadap MPG mungkin lebih besar, sedangkan pada bagian yang tinggi, pengaruhnya mungkin lebih kecil. Oleh karena itu, regresi splines dapat memberikan prediksi yang lebih akurat tentang hubungan antara horsepower dengan MPG.

Secara umum, regresi polinomial ataupun regresi splines dapat digunakan untuk menganalisis pengaruh sebuah variabel prediktor horsepower terhadap MPG. Namun, regresi splines dapat memberikan informasi yang lebih akurat tentang hubungan non-linear antara horsepower dan MPG, sementara regresi polinomial hanya dapat menangkap hubungan polynomial antara variabel tersebut.