予測とオッズ比

Rで学ぶ回帰入門

Richie Cotton

Data Evangelist at DataCamp

ggplotでの予測

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

購入からの経過時間に対する解約の散布図(ロジスティック傾向線付き)。

Rで学ぶ回帰入門

予測を作成する

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で学ぶ回帰入門

点予測を追加する

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

購入からの経過時間に対する解約の散布図(ロジスティック傾向線付き)。predict()の結果で注釈。結果は傾向線に正確に沿う。

Rで学ぶ回帰入門

最も起こりやすい結果を取得

prediction_data <- explanatory_data %>% 
  mutate(
    has_churned = predict(mdl_recency, explanatory_data, type = "response"),
    most_likely_outcome = round(has_churned)
  )
Rで学ぶ回帰入門

最も起こりやすい結果の可視化

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

購入からの経過時間に対する解約の散布図(ロジスティック傾向線付き)。最も起こりやすい結果で注釈。経過時間が短いと「未解約」、長いと「解約」が最も起こりやすい。

Rで学ぶ回帰入門

オッズ比

「オッズ比」は、事象が起こる確率を起こらない確率で割ったものです。

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

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

確率に対するオッズ比の折れ線。確率が1に近づくほど、曲線は無限大に漸近的に増加する。

Rで学ぶ回帰入門

オッズ比を計算する

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で学ぶ回帰入門

オッズ比の可視化

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

購入からの経過時間に対するオッズ比の折れ線。オッズ比1の水平線付き。経過時間が短いと最も起こりやすい結果は未解約。時間が長いほど解約のオッズが増え、最大で未解約の5倍に。

Rで学ぶ回帰入門

対数オッズ比の可視化

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

購入からの経過時間に対するオッズ比の折れ線。オッズ比1の線付き。y軸は対数スケールで、オッズ比の線は直線状になる。

Rで学ぶ回帰入門

対数オッズ比を計算する

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で学ぶ回帰入門

予測の一覧

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で学ぶ回帰入門

尺度の比較

尺度 値は解釈しやすいか 変化は解釈しやすいか 精密か
確率
最頻結果 ✔✔
オッズ比
対数オッズ比
Rで学ぶ回帰入門

練習しましょう!

Rで学ぶ回帰入門

Preparing Video For Download...