Simple Linear Regression

2026-02-05

Slide 1: What is Simple Linear Regression?

Simple linear regression models the relationship between:

Main goal:

Slide 2: The Regression Model (LaTeX)

The simple linear regression equation is:

\[ y = \beta_0 + \beta_1 x + \varepsilon \]

Where:

Slide 3: Example Dataset (mtcars)

We will use the mtcars dataset built into R.

Variables:

We will model:

\[ mpg = \beta_0 + \beta_1 wt + \varepsilon \]

Slide 4: ggplot #1 (Scatter Plot)

library(ggplot2)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(size = 3) +
  labs(
    title = "Scatter Plot: MPG vs Weight",
    x = "Weight (1000 lbs)",
    y = "Miles Per Gallon (MPG)"
  )

Slide 5: ggplot #2 (Regression Line)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = TRUE) +
  labs(
    title = "Regression Line: MPG vs Weight",
    x = "Weight (1000 lbs)",
    y = "Miles Per Gallon (MPG)"
  )
## `geom_smooth()` using formula = 'y ~ x'

Slide 6: Fitting the Model in R (Code Slide)

## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

Slide 7: Interpretation + Math (LaTeX)

Suppose the fitted model is: mpg^​=37.3−5.34⋅wt

Meaning: When weight increases by 1 unit (1000 lbs), MPG decreases by about 5.34

Slide 8: Plotly 3D Interactive Plot

We will visualize: - wt (weight) - hp (horsepower) - mpg (fuel efficiency)

library(plotly)
## Warning: package 'plotly' was built under R version 4.4.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
plot_ly(
  mtcars,
  x = ~wt,
  y = ~hp,
  z = ~mpg,
  type = "scatter3d",
  mode = "markers"
) %>%
  layout(
    title = "3D Plotly: MPG vs Weight and Horsepower",
    scene = list(
      xaxis = list(title = "Weight (wt)"),
      yaxis = list(title = "Horsepower (hp)"),
      zaxis = list(title = "MPG")
    )
  )