Tugas Praktikum Individu 1
STA1381 -
Pengantar Sains Data
Data yang akan digunakan dalam pemodelan nonlinear ini adalah data spesifikasi kualitas mesin dalam standar horsepower dan tingkat kehematan penggunaan bensin dalam standar miles per galon (mpg) pada 392 kendaraan. Data yang dapat diakses pada software R ini merupakan data yang diambil dan diolah oleh Carnegie Mellon University dan digunakan dalam 1983 American Statistical Association Exposition.
Pra-Processing Data
Memanggil Package di R
Untuk melakukan proses pemodelan nonlinear, diperlukan beberapa library untuk menunjang proses analisis data sebagai berikut.
library("MultiKink")
library(tidyverse)
library(ggplot2)
library(dplyr)
library(purrr)
library(rsample)
library(ISLR)
library(splines)Pengambilan Data
Proses pengambilan data dapat dilakukan dengan mudah karena sudah
tersedia dalam fungsi Auto di software R sebagai
berikut,
AutoData <- Auto %>%
select(mpg, horsepower)
tibble(AutoData)## # A tibble: 392 × 2
## mpg horsepower
## <dbl> <dbl>
## 1 18 130
## 2 15 165
## 3 18 150
## 4 16 150
## 5 17 140
## 6 15 198
## 7 14 220
## 8 14 215
## 9 14 225
## 10 15 190
## # … with 382 more rows
Pemodelan Nonlinear
Metode pemodelan nonlinear yang hendak dicobakan pada gugus data terdiri atas beberapa model regresi dan pemulusan sebagai berikut,
Regresi Linear
model.linear <- lm(mpg~horsepower, data = Auto)
summary(model.linear)##
## Call:
## lm(formula = mpg ~ horsepower, data = Auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.5710 -3.2592 -0.3435 2.7630 16.9240
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 39.935861 0.717499 55.66 <2e-16 ***
## horsepower -0.157845 0.006446 -24.49 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.906 on 390 degrees of freedom
## Multiple R-squared: 0.6059, Adjusted R-squared: 0.6049
## F-statistic: 599.7 on 1 and 390 DF, p-value: < 2.2e-16
Mengacu pada keluaran fungsi lm di atas, seluruh
parameter regresi linear signifikan pada taraf 5% sehingga dapat
diperoleh model regresi linear untuk gugus data terkait sebagai
berikut,
\[ y = 39.936 - 0.158x \]
Berdasarkan model regresi linear di atas, dapat dimaknai bahwa perubahan nilai besar horsepower sebesar satu satuan akan menurunkan dugaan rataan rata-rata besar miles per gallon sebesar 0.158 satuan pada tiap kendaraan. Interpretasi ini dapat diamati secara eksploratif melalui grafik sebagai berikut,
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~x,
lty = 1, col = "red",se = T)+
theme_bw()Regresi Polinomial Ordo 2
model.poli <- lm(mpg~horsepower+I(horsepower^2), data = Auto)
summary(model.poli)##
## Call:
## lm(formula = mpg ~ horsepower + I(horsepower^2), data = Auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.7135 -2.5943 -0.0859 2.2868 15.8961
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 56.9000997 1.8004268 31.60 <2e-16 ***
## horsepower -0.4661896 0.0311246 -14.98 <2e-16 ***
## I(horsepower^2) 0.0012305 0.0001221 10.08 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.374 on 389 degrees of freedom
## Multiple R-squared: 0.6876, Adjusted R-squared: 0.686
## F-statistic: 428 on 2 and 389 DF, p-value: < 2.2e-16
Mengacu pada keluaran fungsi lm di atas, seluruh
parameter regresi polinomial dengan ordo 2 signifikan pada taraf 5%
sehingga dapat diperoleh model regresi polinomial dengan ordo 2 untuk
gugus data terkait sebagai berikut,
\[ y = 56.9 + 0.001x^2-0.466x \]
Berdasarkan model regresi polinomial ordo dua di atas, dapat dimaknai bahwa perubahan nilai besar horsepower sebesar satu satuan akan menurunkan dugaan rataan rata-rata besar miles per gallon sebesar 0.466 satuan dan pada saat yang bersamaan meningkatkan dugaan rataannya secara kuadratik sebesar 0.001 pada tiap kendaraan. Interpretasi ini dapat diamati secara eksploratif melalui grafik sebagai berikut,
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~x+I(x^2),
lty = 1, col = "red",se = T)+
theme_bw()Regresi Polinomial Ordo 3
model.poli3 <- lm(mpg~poly(horsepower,3,raw=T), data = Auto)
summary(model.poli3)##
## Call:
## lm(formula = mpg ~ poly(horsepower, 3, raw = T), data = Auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.7039 -2.4491 -0.1519 2.2035 15.8159
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.068e+01 4.563e+00 13.298 < 2e-16 ***
## poly(horsepower, 3, raw = T)1 -5.689e-01 1.179e-01 -4.824 2.03e-06 ***
## poly(horsepower, 3, raw = T)2 2.079e-03 9.479e-04 2.193 0.0289 *
## poly(horsepower, 3, raw = T)3 -2.147e-06 2.378e-06 -0.903 0.3673
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.375 on 388 degrees of freedom
## Multiple R-squared: 0.6882, Adjusted R-squared: 0.6858
## F-statistic: 285.5 on 3 and 388 DF, p-value: < 2.2e-16
Mengacu pada keluaran fungsi lm di atas, tidak seluruh
parameter regresi polinomial dengan ordo 3 signifikan pada taraf 5%
sehingga model secara keseluruhan menjadi tidak signifikan untuk
menggambarkan pola hubungan antara spesifikasi horsepower
dengan tingkat miles per gallon. Meskipun demikian, secara
eksploratif, model regresi ini dapat diamati melalui plot sebagai
berikut,
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~poly(x,3,raw=T),
lty = 1, col = "red",se = T)+
theme_bw()Regresi Fungsi Tangga
range(Auto$horsepower)## [1] 46 230
Gugus data yang diamati memiliki range data dari 46 hingga 230 sehingga secara keseluruhan, data dapat dibagi menjadi delapan selang yang masing-masing selangnya terbagi dalam nilai yang bulat.
model.step <- lm(Auto$mpg~cut(horsepower,8),data=Auto)
summary(model.step)##
## Call:
## lm(formula = Auto$mpg ~ cut(horsepower, 8), data = Auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.9471 -2.6757 -0.1533 2.4015 14.5529
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 33.9085 0.5771 58.76 <2e-16 ***
## cut(horsepower, 8)(69,92] -6.9614 0.6910 -10.07 <2e-16 ***
## cut(horsepower, 8)(92,115] -12.7551 0.7425 -17.18 <2e-16 ***
## cut(horsepower, 8)(115,138] -15.6656 1.1264 -13.91 <2e-16 ***
## cut(horsepower, 8)(138,161] -18.7799 0.8568 -21.92 <2e-16 ***
## cut(horsepower, 8)(161,184] -19.9735 1.1470 -17.41 <2e-16 ***
## cut(horsepower, 8)(184,207] -21.1228 1.7720 -11.92 <2e-16 ***
## cut(horsepower, 8)(207,230] -21.0085 1.5159 -13.86 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.433 on 384 degrees of freedom
## Multiple R-squared: 0.6832, Adjusted R-squared: 0.6774
## F-statistic: 118.3 on 7 and 384 DF, p-value: < 2.2e-16
Mengacu pada keluaran fungsi lm di atas, seluruh
parameter regresi fungsi tangga signifikan pada taraf 5%. Secara
eksploratif, pola hubungan data yang digambarkan oleh model regresi ini
dapat diamati melalui grafik sebagai berikut,
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~cut(x,8),
lty = 1, col = "red",se = T)+
theme_bw()Berdasarkan fungsi tangga yang berhasil dibuat pada grafik di atas, dapat diamati bahwa terdapat hubungan negatif antara nilai horsepower dengan tingkat miles per gallon. Hal ini dapat dimaknai bahwa peningkatan kualitas kendaraan berdasarkan standar horsepower akan menurunkan dugaan rataan tingkat kehematan penggunaan bensin dalam standar miles per gallon kendaraan.
Regresi Spline
Akan diujikan pemodelan regresi spline dengan derajat bebas 6 dengan pembagian proporsi sebagai berikut,
knot_value_pc_df_6 <- attr(bs(Auto$horsepower, df=6), "knots")
knot_value_pc_df_6## 25% 50% 75%
## 75.0 93.5 126.0
model.spline = lm(mpg ~ bs(horsepower,knots =knot_value_pc_df_6),
data=Auto)
summary(model.spline)##
## Call:
## lm(formula = mpg ~ bs(horsepower, knots = knot_value_pc_df_6),
## data = Auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.5656 -2.5966 -0.2456 2.2574 15.2709
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 32.591 1.931 16.878
## bs(horsepower, knots = knot_value_pc_df_6)1 5.801 3.293 1.761
## bs(horsepower, knots = knot_value_pc_df_6)2 -2.609 1.972 -1.323
## bs(horsepower, knots = knot_value_pc_df_6)3 -11.374 2.241 -5.076
## bs(horsepower, knots = knot_value_pc_df_6)4 -16.977 2.622 -6.475
## bs(horsepower, knots = knot_value_pc_df_6)5 -23.202 3.557 -6.523
## bs(horsepower, knots = knot_value_pc_df_6)6 -18.161 2.829 -6.420
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## bs(horsepower, knots = knot_value_pc_df_6)1 0.079 .
## bs(horsepower, knots = knot_value_pc_df_6)2 0.187
## bs(horsepower, knots = knot_value_pc_df_6)3 6.02e-07 ***
## bs(horsepower, knots = knot_value_pc_df_6)4 2.90e-10 ***
## bs(horsepower, knots = knot_value_pc_df_6)5 2.18e-10 ***
## bs(horsepower, knots = knot_value_pc_df_6)6 4.03e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.294 on 385 degrees of freedom
## Multiple R-squared: 0.702, Adjusted R-squared: 0.6974
## F-statistic: 151.2 on 6 and 385 DF, p-value: < 2.2e-16
Mengacu pada keluaran fungsi lm di atas, tidak seluruh
parameter regresi spline signifikan pada taraf 5% sehingga model secara
keseluruhan menjadi tidak signifikan untuk menggambarkan pola hubungan
antara spesifikasi horsepower dengan tingkat miles per
gallon. Meskipun demikian, secara eksploratif, model regresi ini
dapat diamati melalui plot sebagai berikut,
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~bs(x, knots = knot_value_pc_df_6),
lty = 1,col="red",se = T)+
theme_bw()Pemulusan Spline
model.sms <- with(data=Auto, smooth.spline(horsepower,mpg))
model.sms## Call:
## smooth.spline(x = horsepower, y = mpg)
##
## Smoothing Parameter spar= 0.2648644 lambda= 5.101567e-07 (12 iterations)
## Equivalent Degrees of Freedom (Df): 42.14987
## Penalized Criterion (RSS): 1117.657
## GCV: 18.64132
pred_data <- broom::augment(model.sms)
ggplot(pred_data,aes(x=x,y=y))+
geom_point(alpha=0.55, color="black")+
geom_line(aes(y=.fitted),col="red",
lty=1, lwd=1)+
xlab("horsepower")+
ylab("mpg")+
theme_bw()model_sms <- with(data = Auto,smooth.spline(horsepower,mpg,df=7))
model_sms ## Call:
## smooth.spline(x = horsepower, y = mpg, df = 7)
##
## Smoothing Parameter spar= 0.7927002 lambda= 0.003320238 (12 iterations)
## Equivalent Degrees of Freedom (Df): 6.999082
## Penalized Criterion (RSS): 2424.819
## GCV: 18.84972
pred.data <- broom::augment(model_sms)
ggplot(pred.data,aes(x=x,y=y))+
geom_point(alpha=0.55, color="black")+
geom_line(aes(y=.fitted),col="red",
lty=1, lwd=1)+
xlab("horsepower")+
ylab("mpg")+
theme_bw()Melalui metode pemulusan spline yang teramati pada grafik di atas, dapat diamati bahwa terdapat hubungan yang saling bertolak belakang antara spesifikasi mesin kendaraan dalam standar horsepower dan tingkat kehematan penggunaan bensin dalam standar mpg. Meskipun demikian, dapat diamati pula bahwa grafik semakin melandai sejak nilai horsepower sebesar 175.
Pemulusan LOESS
model.loess <- loess(mpg~horsepower, data = Auto)
summary(model.loess)## Call:
## loess(formula = mpg ~ horsepower, data = Auto)
##
## Number of Observations: 392
## Equivalent Number of Parameters: 4.97
## Residual Standard Error: 4.32
## Trace of smoother matrix: 5.43 (exact)
##
## Control settings:
## span : 0.75
## degree : 2
## family : gaussian
## surface : interpolate cell = 0.2
## normalize: TRUE
## parametric: FALSE
## drop.square: FALSE
Berdasarkan keluaran fungsi loess di atas, digunakan
parameter span sebesar 0.75 yang secara eksploratif
dapat diamati melalui grafik sebagai berikut,
ggplot(Auto, aes(horsepower,mpg)) +
geom_point(alpha=0.5,color="black") +
stat_smooth(method='loess',
formula=y~x,
span = 0.75,
col="red",
lty=1,
se=T)+
theme_bw()Melalui metode pemulusan LOESS yang teramati pada grafik di atas, dapat diamati bahwa terdapat hubungan negatif antara spesifikasi mesin kendaraan dalam standar horsepower dan tingkat kehematan penggunaan bensin dalam standar mpg. Meskipun demikian, dapat diamati pula bahwa grafik semakin melandai sejak nilai horsepower sebesar 175 di kisaran angka 15 mpg. Hal ini menunjukkan bahwa dari kendaraan-kendaraan yang teramati, batas bawah tingkat kehematan penggunaan bensinnya adalah 15 mil per galon.
Perbandingan Kebaikan Model
Berdasarkan model-model regresi yang telah dicobakan dan memiliki parameter pemodelan yang seluruhnya signifikan, perlu ditentukan model terbaik yang dapat menggambarkan hubungan antara kedua peubah menggunakan nilai AIC dengan tabulasi sebagai berikut,
aic.lin <- AIC(model.linear)
aic.poli2 <- AIC(model.poli)
aic.tangga <- AIC(model.step)
metode <- c("Regresi Linear", "Regresi Polinomial Ordo 2",
"Regresi Fungsi Tangga")
aic <- c(aic.lin, aic.poli2, aic.tangga)
comp <- cbind(Metode=metode, AIC=aic)
kableExtra::kable(comp, caption = "Perbandingan Kebaikan Model Regresi", align = rep("c",2))## Warning in !is.null(rmarkdown::metadata$output) && rmarkdown::metadata$output
## %in% : 'length(x) = 2 > 1' in coercion to 'logical(1)'
| Metode | AIC |
|---|---|
| Regresi Linear | 2363.3236578374 |
| Regresi Polinomial Ordo 2 | 2274.35352235969 |
| Regresi Fungsi Tangga | 2289.76066853693 |
Kesimpulan
Berdasarkan perbandingan kebaikan model regresi, diketahui bahwa model regresi polinomial berordo 2 merupakan model terbaik karena memiliki nilai AIC yang terkecil di antara model-model lain. Model regresi ini memiliki persamaan dan plot sebagai berikut,
\[ y = 56.9 + 0.001x^2-0.466x \]
dengan \(x\) menunjukkan nilai horsepower dan \(y\) menunjukkan tingkat miles per gallon.
ggplot(Auto,aes(x=horsepower, y=mpg)) +
geom_point(alpha=0.55, color="black") +
stat_smooth(method = "lm",
formula = y~x+I(x^2),
lty = 1, col = "red",se = T)+
theme_bw()