Data
library(ISLR)
## Warning: package 'ISLR' was built under R version 4.0.3
attach(Auto)
head(cbind(mpg, horsepower))
## mpg horsepower
## [1,] 18 130
## [2,] 15 165
## [3,] 18 150
## [4,] 16 150
## [5,] 17 140
## [6,] 15 198
plot(horsepower, mpg, pch=19, col="coral",
xlab="Horse Power", ylab="mile per gallon")

Regresi Polinomial
polinom = lm(mpg ~ poly(horsepower,4))
prediksi = predict( polinom , data.frame(horsepower), interval="predict" )
plot(horsepower, mpg, pch=19, col="coral",
xlab="Horse Power", ylab="mile per gallon",
main="Regresi Polinomial Ordo 4")
ix <- sort(horsepower,index.return=T)$ix
lines(horsepower[ix], prediksi[ix],
main = "Polynomial Regression", col="blue",
type="l", lwd=2)

Fungsi Tangga (Piecewise Constant)
tangga = lm(mpg ~ cut(horsepower,12))
prediksi = predict(tangga , data.frame(horsepower), interval="predict" )
plot(horsepower, mpg, pch=19, col="coral",
xlab="Horse Power", ylab="mile per gallon",
main="Fungsi Tangga dengan 11 knots")
ix <- sort(horsepower,index.return=T)$ix
lines(horsepower[ix], prediksi[ix],
main = "Polynomial Regression", col="blue",
type="l", lwd=2)

Regresi Spline
library(splines)
regspline = lm(mpg ~ bs(horsepower, knots=c(80, 120, 160, 200)))
prediksi = predict(regspline , data.frame(horsepower), interval="predict" )
plot(horsepower, mpg, pch=19, col="coral",
xlab="Horse Power", ylab="mile per gallon",
main="cubic splines dengan knots 80, 120, 160, 200")
ix <- sort(horsepower,index.return=T)$ix
lines(horsepower[ix], prediksi[ix],
main = "Polynomial Regression", col="blue",
type="l", lwd=2)
abline(v=c(80, 120, 160, 200), col="grey50", lty=2)

Regresi Natural Spline
library(splines)
regspline = lm(mpg ~ ns(horsepower, knots=c(80, 120, 160, 200)))
prediksi = predict(regspline , data.frame(horsepower), interval="predict" )
plot(horsepower, mpg, pch=19, col="coral",
xlab="Horse Power", ylab="mile per gallon",
main="natural cubic splines dengan knots 80, 120, 160, 200")
ix <- sort(horsepower,index.return=T)$ix
lines(horsepower[ix], prediksi[ix],
main = "Polynomial Regression", col="blue",
type="l", lwd=2)
abline(v=c(80, 120, 160, 200), col="grey50", lty=2)
