Variabelen transformeren

Introductie tot regressie in R

Richie Cotton

Data Evangelist at DataCamp

Perch-gegevensset

library(dplyr)

perch <- fish %>%
  filter(species == "Perch")
species mass_g length_cm
Perch 5.9 7.5
Perch 32.0 12.5
Perch 40.0 13.8
Perch 51.5 15.0
Perch 70.0 15.7
... ... ...
Introductie tot regressie in R

Het is geen lineair verband

ggplot(perch, aes(length_cm, mass_g)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

Een spreidingsdiagram van brasemassen tegenover hun lengtes, met een trendlijn. De baars wordt sneller zwaarder dan lineair bij toenemende lengte, wat een opwaartse kromme geeft.

Introductie tot regressie in R

Brasem vs. baars

Enkele brasems die zwemmen. Brasems zijn vrij plat.

Enkele baarzen die zwemmen. Baarzen zijn vrij rond.

Introductie tot regressie in R

Massa vs. lengte tot de derde macht plotten

ggplot(perch, aes(length_cm ^ 3, mass_g)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

Een spreidingsdiagram van baarsmassa's tegenover lengte tot de derde macht, met een trendlijn. Na deze transformatie liggen de punten grotendeels dicht bij de trendlijn.

Introductie tot regressie in R

Massa vs. lengte tot de derde macht modelleren

mdl_perch <- lm(mass_g ~ I(length_cm ^ 3), data = perch)
Call:
lm(formula = mass_g ~ I(length_cm^3), data = perch)

Coefficients:
   (Intercept)  I(length_cm^3)  
       -0.1175          0.0168
Introductie tot regressie in R

Massa vs. lengte tot de derde macht voorspellen

explanatory_data <- tibble(
  length_cm = seq(10, 40, 5)
)
prediction_data <- explanatory_data %>%
  mutate(
    mass_g = predict(mdl_perch, explanatory_data)
  )
# A tibble: 7 x 2
  length_cm mass_g
      <dbl>  <dbl>
1        10   16.7
2        15   56.6
3        20  134. 
4        25  262. 
5        30  453. 
6        35  720. 
7        40 1075.
Introductie tot regressie in R

Massa vs. lengte tot de derde macht plotten

ggplot(perch, aes(length_cm ^ 3, mass_g)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  geom_point(data = prediction_data, color = "blue")

Het spreidingsdiagram van baarsmassa's tegenover lengte tot de derde macht, met een trendlijn, geannoteerd met punten uit de functie predict(). De punten volgen de trendlijn exact.

ggplot(perch, aes(length_cm, mass_g)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  geom_point(data = prediction_data, color = "blue")

Het spreidingsdiagram van baarsmassa's tegenover lengte, met een trendlijn, geannoteerd met punten uit de functie predict(). De punten volgen de trendlijn niet maar wel de kromme van de gegevenspunten.

Introductie tot regressie in R

Facebook-advertentiegegevensset

Hoe adverteren werkt

  1. Betaal Facebook om advertenties te tonen.
  2. Mensen zien de advertenties ("impressies").
  3. Een deel klikt erop.

 

  • 936 rijen
  • Elke rij is 1 advertentie
spent_usd n_impressions n_clicks
1.43 7350 1
1.82 17861 2
1.25 4259 1
1.29 4133 1
4.77 15615 3
... ... ...
Introductie tot regressie in R

Plot is krap

ggplot(
  ad_conversion, 
  aes(spent_usd, n_impressions)
) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

Een spreidingsdiagram van het aantal impressies tegenover advertentiekosten, met een trendlijn. De meeste punten zitten samengepakt linksonder.

Introductie tot regressie in R

Wortel vs. wortel

ggplot(
  ad_conversion, 
  aes(sqrt(spent_usd), sqrt(n_impressions))
) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

Een spreidingsdiagram van de vierkantswortel van het aantal impressies tegenover de vierkantswortel van de advertentiekosten, met een trendlijn. De punten zijn nu gelijkmatiger verdeeld.

Introductie tot regressie in R

Modelleren en voorspellen

mdl_ad <- lm(
  sqrt(n_impressions) ~ sqrt(spent_usd), 
  data = ad_conversion
)
explanatory_data <- tibble(
  spent_usd = seq(0, 600, 100)
)
prediction_data <- explanatory_data %>% 
  mutate(
    sqrt_n_impressions = predict(
      mdl_ad, explanatory_data
    ),
    n_impressions = sqrt_n_impressions ^ 2
  )
# A tibble: 7 x 3
  spent_usd sqrt_n_impressions n_impressions
      <dbl>              <dbl>         <dbl>
1         0               15.3          235.
2       100              598.        357289.
3       200              839.        703890.
4       300             1024.       1048771.
5       400             1180.       1392762.
6       500             1318.       1736184.
7       600             1442.       2079202.
Introductie tot regressie in R

Laten we oefenen!

Introductie tot regressie in R

Preparing Video For Download...