Predicciones y cuotas

Introducción a la regresión con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Predicciones de regplot()

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

plt.show()

Diagrama de dispersión de churn frente a tiempo desde la última compra, con una línea de tendencia logística.

Introducción a la regresión con statsmodels en Python

Hacer predicciones

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))
Introducción a la regresión con statsmodels en Python

Añadir predicciones puntuales

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

Diagrama de dispersión de churn frente a tiempo desde la última compra, con línea logística. El gráfico está anotado con los resultados de predict(), que siguen exactamente la línea de tendencia.

Introducción a la regresión con statsmodels en Python

Obtener el resultado más probable

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

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Introducción a la regresión con statsmodels en Python

Visualizar el resultado más probable

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

Diagrama de dispersión de churn frente a tiempo desde la última compra, con línea logística. El gráfico está anotado con los resultados más probables. Para tiempos bajos, lo más probable es no darse de baja. Para tiempos altos, lo más probable es darse de baja.

Introducción a la regresión con statsmodels en Python

Cuotas (odds)

Cuotas es la probabilidad de que ocurra algo dividida por la probabilidad de que no ocurra.

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

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

Gráfico de líneas de cuotas frente a probabilidad. La curva crece asintóticamente hacia infinito a medida que la probabilidad se acerca a uno.

Introducción a la regresión con statsmodels en Python

Calcular las cuotas

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

Introducción a la regresión con statsmodels en Python

Visualizar las cuotas

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


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

Gráfico de líneas de cuotas frente a tiempo desde la última compra, con una línea en cuotas igual a uno. Para tiempos bajos, lo más probable es no darse de baja. Las cuotas de darse de baja aumentan con el tiempo desde la última compra, hasta cinco veces las cuotas de no darse de baja.

Introducción a la regresión con statsmodels en Python

Visualizar el logit (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()

Gráfico de líneas de cuotas frente a tiempo desde la última compra, con una línea en cuotas igual a uno. El eje Y usa escala logarítmica, lo que hace que la línea de cuotas sea lineal.

Introducción a la regresión con statsmodels en Python

Calcular el logit (log-odds)

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Introducción a la regresión con statsmodels en Python

Todas las predicciones juntas

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
... ... ... ... ...
Introducción a la regresión con statsmodels en Python

Comparar escalas

Escala ¿Valores fáciles de interpretar? ¿Cambios fáciles de interpretar? ¿Precisa?
Probabilidad
Resultado más probable ✔✔
Cuotas
Logit (log-odds)
Introducción a la regresión con statsmodels en Python

¡Vamos a practicar!

Introducción a la regresión con statsmodels en Python

Preparing Video For Download...