Predictions और odds ratios

R में Regression परिचय

Richie Cotton

Data Evangelist at DataCamp

ggplot predictions

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)
  )

आखिरी खरीद से समय के मुकाबले churn का scatter plot, जिसमें logistic ट्रेंड लाइन है.

R में Regression परिचय

Predictions बनाना

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")
  )
R में Regression परिचय

Point predictions जोड़ना

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

आखिरी खरीद से समय के मुकाबले churn का scatter plot, logistic ट्रेंड लाइन के साथ. प्लॉट में predict() के नतीजे एनोटेट हैं, जो ट्रेंड लाइन को ठीक-ठीक फॉलो करते हैं.

R में Regression परिचय

सबसे संभावित outcome पाना

prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_outcome = round(has_churned)
  )
R में Regression परिचय

सबसे संभावित outcome का visualization

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

आखिरी खरीद से समय के मुकाबले churn का scatter plot, logistic ट्रेंड लाइन के साथ. प्लॉट में सबसे संभावित outcomes एनोटेट हैं. कम समय पर सबसे संभावित outcome है: churn नहीं. अधिक समय पर: churn.

R में Regression परिचय

Odds ratios

"Odds ratio" वह है: किसी घटना के होने की probability को उसके न होने की probability से भाग दें.

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

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

Probability के मुकाबले odds ratio का line plot. जैसे-जैसे probability 1 की ओर जाती है, कर्व अनंत की ओर असिम्प्टोटिकली बढ़ता है.

R में Regression परिचय

Odds ratio निकालना

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)
  )
R में Regression परिचय

Odds ratio का visualization

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

आखिरी खरीद से समय के मुकाबले odds ratio का line plot, जिसमें odds ratio = 1 पर एक लाइन है. कम समय पर सबसे संभावित outcome churn नहीं है. जैसे-जैसे समय बढ़ता है, churn के odds बढ़ते हैं, और न churn करने के odds से लगभग पाँच गुना तक जाते हैं.

R में Regression परिचय

Log odds ratio का visualization

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

उसी line plot में y-axis पर logarithmic scale है, जिससे odds ratio की लाइन लगभग linear दिखती है.

R में Regression परिचय

Log odds ratio निकालना

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)
  )
R में Regression परिचय

सारी predictions एक साथ

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
... ... ... ... ... ...
R में Regression परिचय

Scales की तुलना

Scale Are values easy to interpret? Are changes easy to interpret? Is precise?
Probability ✔ ✘ ✔
Most likely outcome ✔✔ ✔ ✘
Odds ratio ✔ ✘ ✔
Log odds ratio ✘ ✔ ✔
R में Regression परिचय

अभ्यास करते हैं!

R में Regression परिचय

Preparing Video For Download...