Transformer des variables

Introduction à la régression en R

Richie Cotton

Data Evangelist at DataCamp

Ensemble de données : Perch

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
... ... ...
Introduction à la régression en R

Ce n'est pas linéaire

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

Nuage de points des masses de perches selon leur longueur, avec une tendance. Le poids augmente plus vite que linéairement avec la longueur, produisant une courbe vers le haut.

Introduction à la régression en R

Brèmes vs perches

Des brèmes qui nagent. Les brèmes sont assez plates.

Des perches qui nagent. Les perches sont assez rondes.

Introduction à la régression en R

Tracer masse vs longueur au cube

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

Nuage de points des masses de perches selon la longueur au cube, avec une tendance. Après la transformation, les points sont majoritairement proches de la droite de tendance.

Introduction à la régression en R

Modéliser masse vs longueur au cube

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
Introduction à la régression en R

Prédire masse vs longueur au cube

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.
Introduction à la régression en R

Tracer masse vs longueur au cube

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

Nuage de points des masses de perches selon la longueur au cube, avec une tendance, annoté par des points calculés avec predict(). Les points suivent exactement la tendance.

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

Nuage de points des masses de perches selon leur longueur, avec une tendance, annoté par des points calculés avec predict(). Les points ne suivent pas la droite, mais suivent la courbe des données.

Introduction à la régression en R

Ensemble de données : publicité Facebook

Comment fonctionne la publicité

  1. Payer Facebook pour montrer des annonces.
  2. Les gens voient les annonces (« impressions »).
  3. Une partie de ces personnes clique.

 

  • 936 lignes
  • Chaque ligne représente 1 annonce
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
... ... ...
Introduction à la régression en R

Graphique trop tassé

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

Nuage de points du nombre d'impressions selon les dépenses publicitaires, avec une tendance. La plupart des points sont tassés en bas à gauche.

Introduction à la régression en R

Racine carrée vs racine carrée

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

Nuage de points de la racine carrée des impressions selon la racine carrée des dépenses, avec une tendance. Les points sont maintenant plus répartis.

Introduction à la régression en R

Modéliser et prédire

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.
Introduction à la régression en R

Passons à la pratique !

Introduction à la régression en R

Preparing Video For Download...