Previsioni e quote

Introduzione alla regressione con statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Le previsioni di regplot()

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

plt.show()

Grafico a dispersione di churn vs tempo dall’ultimo acquisto, con curva logistica.

Introduzione alla regressione con statsmodels in Python

Fare previsioni

mdl_recency = logit("has_churned ~ time_since_last_purchase",
                    data = churn).fit()


explanatory_data = pd.DataFrame( {"time_since_last_purchase": np.arange(-1, 6.25, 0.25)})
prediction_data = explanatory_data.assign( has_churned = mdl_recency.predict(explanatory_data))
Introduzione alla regressione con statsmodels in Python

Aggiungere previsioni puntuali

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=prediction_data,
                color="red")

plt.show()

Grafico a dispersione di churn vs tempo dall’ultimo acquisto, con curva logistica. Il grafico è annotato con i risultati di predict(), che seguono esattamente la curva.

Introduzione alla regressione con statsmodels in Python

Ottenere l’esito più probabile

prediction_data = explanatory_data.assign(
    has_churned = mdl_recency.predict(explanatory_data))

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Introduzione alla regressione con statsmodels in Python

Visualizzare l’esito più probabile

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="most_likely_outcome",
                data=prediction_data,
                color="red")

plt.show()

Grafico a dispersione di churn vs tempo dall’ultimo acquisto, con curva logistica. Il grafico è annotato con gli esiti più probabili: per tempi bassi l’esito più probabile è non abbandonare; per tempi alti è abbandonare.

Introduzione alla regressione con statsmodels in Python

Quote (odds)

Le quote (odds) sono la probabilità che qualcosa accada divisa per la probabilità che non accada.

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

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

Grafico a linee di quote vs probabilità. La curva cresce asintoticamente verso infinito quando la probabilità tende a uno.

Introduzione alla regressione con statsmodels in Python

Calcolare le quote

prediction_data["odds"] = prediction_data["has_churned"] / 
                            (1 - prediction_data["has_churned"])

Introduzione alla regressione con statsmodels in Python

Visualizzare le quote

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)


plt.axhline(y=1, linestyle="dotted")
plt.show()

Grafico a linee di quote vs tempo dall’ultimo acquisto, con linea a quote = 1. Per tempi bassi l’esito più probabile è non abbandonare. Le quote di abbandono crescono con il tempo, fino a cinque volte quelle di non abbandono.

Introduzione alla regressione con statsmodels in Python

Visualizzare i log-odds

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)

plt.axhline(y=1,
            linestyle="dotted")
plt.yscale("log")

plt.show()

Grafico a linee di quote vs tempo dall’ultimo acquisto, con linea a quote = 1. L’asse y è in scala log, che rende la linea delle quote lineare.

Introduzione alla regressione con statsmodels in Python

Calcolare i log-odds

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Introduzione alla regressione con statsmodels in Python

Tutte le previsioni insieme

time_since_last_prchs has_churned most_likely_rspns odds log_odds
0 0.491 0 0.966 -0.035
2 0.623 1 1.654 0.503
4 0.739 1 2.834 1.042
6 0.829 1 4.856 1.580
... ... ... ... ...
Introduzione alla regressione con statsmodels in Python

Confronto delle scale

Scala Valori facili da interpretare? Variazioni facili da interpretare? Precisa?
Probabilità
Esito più probabile ✔✔
Quote (odds)
Log-odds
Introduzione alla regressione con statsmodels in Python

Passiamo alla pratica !

Introduzione alla regressione con statsmodels in Python

Preparing Video For Download...