knitr::opts_knit$set(root.dir = rprojroot::find_rstudio_root_file()) # Set WD to Root
here::i_am("lab_mod/ch3-lm-lab.Rmd")
library(here)
library(ISLR2)
library(MASS)
library(tidyverse)
library(broom)
library(plotly)
head(Boston)

lstat vs medv

Plot: lstat vs medv

Boston %>% 
  ggplot(aes(lstat, medv)) +
  geom_point(alpha = 0.4) +
  geom_smooth(method = "lm")

Fit LM: lstat vs medv

boston_lm_medv.lstat <- lm(medv ~ lstat, Boston)
boston_lm_medv.lstat
summary(boston_lm_medv.lstat)
names(boston_lm_medv.lstat)

Confidence Interval

confint(boston_lm_medv.lstat)

Broom's Way

broom::tidy(boston_lm_medv.lstat)
broom::augment(boston_lm_medv.lstat)

Predict

predict(boston_lm_medv.lstat, data.frame(lstat = (c(5, 10, 15))),
    interval = "confidence")
predict(boston_lm_medv.lstat, data.frame(lstat = (c(5, 10, 15))),
    interval = "prediction")

Multiple LM

medv ~ lstat + age

boston_lm_medv.lstat_age <- lm(medv ~ lstat + age, data = Boston)
summary(boston_lm_medv.lstat_age)
par(mfrow = c(2,2))
plot(boston_lm_medv.lstat_age)

All Predictors

boston_lm_medv_all <- lm(medv ~ ., data = Boston )
summary(boston_lm_medv_all)

Since age and indus is not significant, we will remove them.

boston_lm_medv_allupd <- update(boston_lm_medv_all, ~. -age-indus)

summary(boston_lm_medv_allupd)

Interaction

Boston %>% 
  plotly::plot_ly(x = ~lstat, y = ~age, z = ~medv, size = 1)
boston_lm_medv_lstat_i_age <- lm(medv ~ lstat*age, Boston)

summary(boston_lm_medv_lstat_i_age)

Quadratic

Boston %>% 
  ggplot(aes(lstat, medv)) +
  geom_point(alpha = 0.4) + 
  geom_smooth(formula = "y ~ x + I(x^2)", method = "lm")
lm(medv ~ lstat + I(lstat^2), Boston) %>% summary()


Lightbridge-KS/ISLR documentation built on Dec. 17, 2021, 12:06 a.m.