Moving Beyond Linearity
Data
library(ISLR)
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 (Stepwise 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)
regnatspline = lm(mpg ~ ns(horsepower, knots = c(80,120,160,200)))
prediksi = predict(regnatspline , 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)
