# Lab: Linear Regression ## Libraries ### library(MASS) library(ISLR2) ## Simple Linear Regression ### head(Boston) ### lm.fit <- lm(medv ~ lstat) ### lm.fit <- lm(medv ~ lstat, data = Boston) attach(Boston) lm.fit <- lm(medv ~ lstat) ### lm.fit summary(lm.fit) ### names(lm.fit) coef(lm.fit) ### confint(lm.fit) ### predict(lm.fit, data.frame(lstat = (c(5, 10, 15))), interval = "confidence") predict(lm.fit, data.frame(lstat = (c(5, 10, 15))), interval = "prediction") ### plot(lstat, medv) abline(lm.fit) ### abline(lm.fit, lwd = 3) abline(lm.fit, lwd = 3, col = "red") plot(lstat, medv, col = "red") plot(lstat, medv, pch = 20) plot(lstat, medv, pch = "+") plot(1:20, 1:20, pch = 1:20) ### par(mfrow = c(2, 2)) plot(lm.fit) ### plot(predict(lm.fit), residuals(lm.fit)) plot(predict(lm.fit), rstudent(lm.fit)) ### plot(hatvalues(lm.fit)) which.max(hatvalues(lm.fit)) ## Multiple Linear Regression ### lm.fit <- lm(medv ~ lstat + age, data = Boston) summary(lm.fit) ### lm.fit <- lm(medv ~ ., data = Boston) summary(lm.fit) ### library(car) vif(lm.fit) ### lm.fit1 <- lm(medv ~ . - age, data = Boston) summary(lm.fit1) ### lm.fit1 <- update(lm.fit, ~ . - age) ## Interaction Terms ### summary(lm(medv ~ lstat * age, data = Boston)) ## Non-linear Transformations of the Predictors ### lm.fit2 <- lm(medv ~ lstat + I(lstat^2)) summary(lm.fit2) ### lm.fit <- lm(medv ~ lstat) anova(lm.fit, lm.fit2) ### par(mfrow = c(2, 2)) plot(lm.fit2) ### lm.fit5 <- lm(medv ~ poly(lstat, 5)) summary(lm.fit5) ### summary(lm(medv ~ log(rm), data = Boston)) ## Qualitative Predictors ### head(Carseats) ### lm.fit <- lm(Sales ~ . + Income:Advertising + Price:Age, data = Carseats) summary(lm.fit) ### attach(Carseats) contrasts(ShelveLoc) ## Writing Functions ### LoadLibraries LoadLibraries() ### LoadLibraries <- function() { library(ISLR2) library(MASS) print("The libraries have been loaded.") } ### LoadLibraries ### LoadLibraries() ###