Voorspellingen en oddsratio’s

Introductie tot regressie in R

Richie Cotton

Data Evangelist at DataCamp

De ggplot-voorspellingen

plt_churn_vs_recency_base <- ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_smooth(
    method = "glm", 
    se = FALSE, 
    method.args = list(family = binomial)
  )

Een spreidingsdiagram van churn versus tijd sinds laatste aankoop, met een logistische trendlijn.

Introductie tot regressie in R

Voorspellingen maken

mdl_recency <- glm(
  has_churned ~ time_since_last_purchase, data = churn, family = "binomial"
)
explanatory_data <- tibble(
  time_since_last_purchase = seq(-1, 6, 0.25)
)
prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response")
  )
Introductie tot regressie in R

Puntvoorspellingen toevoegen

plt_churn_vs_recency_base +
  geom_point(
    data = prediction_data, 
    color = "blue"
  )

Het spreidingsdiagram van churn versus tijd sinds laatste aankoop, met een logistische trendlijn. De plot is geannoteerd met de resultaten van predict(), die exact de trendlijn volgen.

Introductie tot regressie in R

De meest waarschijnlijke uitkomst bepalen

prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_outcome = round(has_churned)
  )
Introductie tot regressie in R

Meest waarschijnlijke uitkomst visualiseren

plt_churn_vs_recency_base +
  geom_point(
    aes(y = most_likely_outcome),
    data = prediction_data,
    color = "green"
  )

Een spreidingsdiagram van churn versus tijd sinds laatste aankoop, met een logistische trendlijn. De meest waarschijnlijke uitkomsten zijn geannoteerd. Bij een korte tijd sinds laatste aankoop is de meest waarschijnlijke uitkomst geen churn. Bij een lange tijd is de meest waarschijnlijke uitkomst churn.

Introductie tot regressie in R

Oddsratio’s

Oddsratio is de kans dat iets gebeurt gedeeld door de kans dat het niet gebeurt.

$$ odds\_ratio = \frac{probability}{(1 - probability)} $$

$$ odds\_ratio = \frac{0.25}{(1 - 0.25)} = \frac{1}{3} $$

Een lijndiagram van oddsratio versus kans. De curve neemt asymptotisch toe tot oneindig naarmate de kans naar één gaat.

Introductie tot regressie in R

Oddsratio berekenen

prediction_data <- explanatory_data %>%
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_response = round(has_churned),
    odds_ratio = has_churned / (1 - has_churned)
  )
Introductie tot regressie in R

Oddsratio visualiseren

ggplot(
  prediction_data, 
  aes(time_since_last_purchase, odds_ratio)
) +
  geom_line() +
  geom_hline(yintercept = 1, linetype = "dotted")

Een lijndiagram van oddsratio versus tijd sinds laatste aankoop, met een lijn bij oddsratio gelijk aan één. Bij een korte tijd sinds laatste aankoop is de meest waarschijnlijke uitkomst geen churn. De odds op churn nemen toe naarmate de tijd toeneemt, tot vijf keer de odds op geen churn.

Introductie tot regressie in R

Log-oddsratio visualiseren

ggplot(
  prediction_data, 
  aes(time_since_last_purchase, odds_ratio)
) +
  geom_line() +
  geom_hline(yintercept = 1, linetype = "dotted") +
  scale_y_log10()

Het lijndiagram van oddsratio versus tijd sinds laatste aankoop, met een lijn bij oddsratio gelijk aan één. De y-as gebruikt een logaritmische schaal, waardoor de oddsratio-lijn lineair is geworden.

Introductie tot regressie in R

Log-oddsratio berekenen

prediction_data <- explanatory_data %>%
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_response = round(has_churned),
    odds_ratio = has_churned / (1 - has_churned),
    log_odds_ratio = log(odds_ratio),
    log_odds_ratio2 = predict(mdl_recency, explanatory_data)
  )
Introductie tot regressie in R

Alle voorspellingen samen

tm_snc_lst_prch has_churned most_lkly_rspns odds_ratio log_odds_ratio log_odds_ratio2
0 0.491 0 0.966 -0.035 -0.035
2 0.623 1 1.654 0.503 0.503
4 0.739 1 2.834 1.042 1.042
6 0.829 1 4.856 1.580 1.580
... ... ... ... ... ...
Introductie tot regressie in R

Schalen vergelijken

Schaal Zijn waarden makkelijk te duiden? Zijn veranderingen makkelijk te duiden? Is precies?
Kans
Meest waarsch. uitk. ✔✔
Oddsratio
Log-oddsratio
Introductie tot regressie in R

Laten we oefenen!

Introductie tot regressie in R

Preparing Video For Download...