Vender o no vender ese es el problema (I) - Regresión...

48
Vender o no vender ese es el problema (I) Regresión Logística Xavi Babrer Centro de Investigación Operativa Universidad Miguel Hernández de Elche Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 1 / 48

Transcript of Vender o no vender ese es el problema (I) - Regresión...

Page 1: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Vender o no vender ese es el problema (I)Regresión Logística

Xavi Babrer

Centro de Investigación OperativaUniversidad Miguel Hernández de Elche

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 1 / 48

Page 2: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

1 Introducción

2 Modelización con respuesta Binaria

3 Bondad de Ajuste

4 Estudiando la capacidad Predictiva

5 Ejercicio

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 2 / 48

Page 3: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

Introducción

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 3 / 48

Page 4: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El Problema

1 Los “vendedores” frecuentemente observan resultados del tipo Sí/No:

¿Comprarán los consumidores este producto?¿Querrá probar el coche antes de comprar?¿Responderán a campaña pu blicitaria?.

2 Todas estas clases de variables sólo tienen dos estados: Sí y No.3 Estos datos no los podemos modelizar utilizando la Regresión Lineal como

vimos con anterioridad.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 4 / 48

Page 5: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

Las Bases del Modelo Logístico

El núcleo del modelo logístico es este:

Relacionar la probabilidad de una “outcome” a una función exponencial de unavariable predictora.Modelizar la probabilidad de una “outcome”, debe de cumplir:Estudiar una probabilidad o proporción de que los consumidores compren o no.Los valores de la variable estarán entre [0,1].

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 5 / 48

Page 6: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

Las Bases del Modelo Logístico

La fórmula es necesaria para conocer el funcionamiento del modelo:

p(y) = eVx

eVx + 1

Esta ecuación, el “outcome” de interés es y , nosotros calcularemos la p(y)como una función de Vxen un modelo lineal (logit model):

logit = log(

p(y)p(y) + 1

)

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 6 / 48

Page 7: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

Las Bases del Modelo LogísticoLa función logit toma entonces esta forma, la probabilidad de cierto evento:

Prob(Y = y) = 11 + eZ , donde y ∈ [0, 1]

dondeZ = β0 + β1 ∗ X1 + β2 ∗ X2 + · · ·+ βp ∗ Xp

Utilizando el ejemplo del tema anterior, (mtcars), la función toma una forma comala siguiente figura.

0.0

0.4

0.8

1.2

10 15 20 25 30 35

mpg

vs

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 7 / 48

Page 8: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El ejemplo

Tenemos los datos de una encuesta a los visitantes de Terra Mítica. Los datoscontienen la siguiente información:

Si es o no visitante de fin de semana (weekend),Número de niños que le acompañan (num.cild),La distnacia desde su hogar al parque (ditance).Satisfacción general (overall),satisfacción con las atracciones(rides), juegos (games),tiempos de espera(wait) y limpieza (clean).

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 8 / 48

Page 9: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El ejemplo

sat.df <- read.csv("http://goo.gl/HKnl74")str(sat.df)

## 'data.frame': 500 obs. of 8 variables:## $ weekend : Factor w/ 2 levels "no","yes": 2 2 1 2 1 1 2 1 1 2 ...## $ num.child: int 0 2 1 0 4 5 1 0 0 3 ...## $ distance : num 114.6 27 63.3 25.9 54.7 ...## $ rides : int 87 87 85 88 84 81 77 82 90 88 ...## $ games : int 73 78 80 72 87 79 73 70 88 86 ...## $ wait : int 60 76 70 66 74 48 58 70 79 55 ...## $ clean : int 89 87 88 89 87 79 85 83 95 88 ...## $ overall : int 47 65 61 37 68 27 40 30 58 36 ...

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 9 / 48

Page 10: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El ejemplo (II)

A estos datos anteriores le vamos a añadir otra base de datos referente a la ventade pases de temporada. Los datos consisten en Adquirir sí o no el pase sobre labase de dos factores:

El canal utilizado para recibir la oferta: Correo Electrónico, postal o enpersona en el parque.O si fue alguna promoción de pase de temporada + otras cosas (parkinggratuito, etc.).

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 10 / 48

Page 11: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El Ejemplo (II)

pass.df <- read.csv("http://goo.gl/J8MH6A")pass.df$Promo <- factor(pass.df$Promo, levels=c("NoBundle", "Bundle"))summary(pass.df)

## Channel Promo Pass## Email: 633 NoBundle:1482 NoPass :1567## Mail :1328 Bundle :1674 YesPass:1589## Park :1195

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 11 / 48

Page 12: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El Ejemplo (II)

a<-table(pass.df$Channel,pass.df$Pass)kable(a, caption="Pases x tipo publicidad")

Table 1: Pases x tipo publicidad

NoPass YesPass

Email 568 65Mail 727 601Park 272 923

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 12 / 48

Page 13: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Introducción

El Ejemplo (II)

b<-table(pass.df$Promo,pass.df$Pass)kable(b,caption="Pases x Promoción (S/N)")

Table 2: Pases x Promoción (S/N)

NoPass YesPass

NoBundle 812 670Bundle 755 919

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 13 / 48

Page 14: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Modelización con respuesta Binaria

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 14 / 48

Page 15: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Ajustando el modelo logístico

Una regresión logística en R se ajusta mediante el comando glm(),Generalized Linear Model.La distribución apropiada para este tipode datos es la Binomial.La funció glm() tiene un argumento family= que especifica la distribuciónpara la variable “outcome”. Par ael caso binario: family=binomial.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 15 / 48

Page 16: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Ajustando el modelo logísticopass.m1 <- glm(Pass ~ Promo, data=pass.df, family=binomial)summary(pass.m1)

#### Call:## glm(formula = Pass ~ Promo, family = binomial, data = pass.df)#### Deviance Residuals:## Min 1Q Median 3Q Max## -1.262 -1.097 1.095 1.095 1.260#### Coefficients:## Estimate Std. Error z value Pr(>|z|)## (Intercept) -0.19222 0.05219 -3.683 0.000231 ***## PromoBundle 0.38879 0.07167 5.425 5.81e-08 ***## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1#### (Dispersion parameter for binomial family taken to be 1)#### Null deviance: 4375.0 on 3155 degrees of freedom## Residual deviance: 4345.4 on 3154 degrees of freedom## AIC: 4349.4#### Number of Fisher Scoring iterations: 3

Hay un coeficiente positivo que relaciona la tipo de promo con sacar el pase, y esteefecto es estadísticamente significativo.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 16 / 48

Page 17: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

interpretando los coeficientes¿Qué significa un coeficiente de 0.3888? Este valor se usa para calcular la asociaciónentre “el sacar el pase con el tipo de pack (S/N)”" examinando el cociente decomprar o no comprar el pase. A este cociente lo llamaremos Odds Ratio(OR).

# plogins= Density for the logistic distr.plogis(0.3888) / (1-plogis(0.3888)) # ratio of outcome

## [1] 1.475209

Este valor de OR=1.48 se interpreta como que un consumidor tiene 1.48 veces másde posibilidades de comprar el pase si lleva un pack que si no lo lleva.Una forma rápida de obtener todos los OR sería:

exp(coef(pass.m1))

## (Intercept) PromoBundle## 0.8251232 1.4751962

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 17 / 48

Page 18: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Ampliando el modelo

Una buena forma de visualizar las tablas de datos de varias categorías (>2), son losgráficos mosaic:

The Strucplot Framework: Visualizing Multi-way Contingency Tables with vcd

https://cran.r-project.org/web/packages/vcd/vignettes/strucplot.pdf

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 18 / 48

Page 19: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

ChannelPromo

EmailNoBundle Bundle

MailNoBundle Bundle

ParkNoBundleBundle

YesPass

NoPassPass

Los resultados muestran los posibles efectos entre los diferentes canales decomunicación utilizados, por lo que debería de incorporarse esta variable al modelo.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 19 / 48

Page 20: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Y viéndolo de forma numérica:

## Pass NoPass YesPass## Channel Promo## Email NoBundle 485 27## Bundle 83 38## Mail NoBundle 278 359## Bundle 449 242## Park NoBundle 49 284## Bundle 223 639

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 20 / 48

Page 21: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Channel

Pass

Pro

mo

Email

Bun

dle

NoPassYesPass

NoB

undl

e

Mail

NoPass YesPass

Park

NoPass YesPass

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 21 / 48

Page 22: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Ampliando el modeloPor tanto el nuevo modelo se ajustaría de la siguiente formapass.m2 <- glm(Pass ~ Promo + Channel, data=pass.df, family=binomial)

stargazer(pass.m2,title="Regression Results", no.space=TRUE,ci=TRUE, ci.level=0.95, single.row=TRUE, header=FALSE)

Table 3: Regression Results

Dependent variable:Pass

PromoBundle −0.560∗∗∗ (−0.737, −0.383)ChannelMail 2.176∗∗∗ (1.889, 2.463)ChannelPark 3.722∗∗∗ (3.409, 4.035)Constant −2.079∗∗∗ (−2.337, −1.821)Observations 3,156Log Likelihood −1,745.104Akaike Inf. Crit. 3,498.209

Note: ∗p<0.1; ∗∗p<0.05; ∗∗∗p<0.01

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 22 / 48

Page 23: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Modelización con respuesta Binaria

Ampliando el modelo

Ahora calculamos lo sOdds Ratio y sus intervalos de confianza.

cbind(exp(coef(pass.m2)),exp(confint(pass.m2)))

2.5 % 97.5 %

(Intercept) 0.1251054 0.0957757 0.1606189PromoBundle 0.5710846 0.4779397 0.6810148ChannelMail 8.8125066 6.6577055 11.8328173ChannelPark 41.3371206 30.4295927 56.9295369

En este modelo, la promoción se asociaa con un 32-53 % menos de probabilidad decomprar el pase de temporada. Por otro lado, si se le ofrece ala persona in-situ enel parque se asocia con un 30-56 veces más de probabilidades de que lo adquieran.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 23 / 48

Page 24: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Bondad de Ajuste

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 24 / 48

Page 25: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Test Chi-SquaredVamos a ver un test para poder analizar si incorporar uan variable al modelo es o nosignificativa. Una variable sea significativaen alguna de sus categorías, pero lapregunta es: ¿Es la variable en conjunto significativa?anova(pass.m1, pass.m2, test ="Chisq")

## Analysis of Deviance Table#### Model 1: Pass ~ Promo## Model 2: Pass ~ Promo + Channel## Resid. Df Resid. Dev Df Deviance Pr(>Chi)## 1 3154 4345.4## 2 3152 3490.2 2 855.22 < 2.2e-16 ***## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

library(lmtest)lrtest(pass.m1, pass.m2)

## Likelihood ratio test#### Model 1: Pass ~ Promo## Model 2: Pass ~ Promo + Channel## #Df LogLik Df Chisq Pr(>Chisq)## 1 2 -2172.7## 2 4 -1745.1 2 855.22 < 2.2e-16 ***## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 25 / 48

Page 26: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Pseudo Rˆ2En la Regresión Logística no existe un valor que nos indique la “variabilidadexplicada” como en los modelos lineales. Sin embargo, existe un valor llamadoMcFadden Pseudo-R2 la cual se define como 1− [ln(LM)/ln(L0)] donde ln(LM) isthe log-likelihood para el modelo ajustado y por otro lado ln(L0) es la log-likelihoodpara el modelo nulo (solo el intercept). El rango de esta medida va de 0 a 1, cuandomás cercano a 0 este el valor peor es el ajuste y peor es su capacidad predictiva.library(pscl)pR2(pass.m2)

llh -1745.1043921llhNull -2187.4958219G2 884.7828596McFadden 0.2022365r2ML 0.2444803r2CU 0.3259790

llh: The log-likelihood from the fitted model. llhNull: The log-likelihood from the intercept-onlyrestricted model. G2: Minus two times the difference in the log-likelihoods.McFadden:McFadden’s pseudo r-squared. r2ML: Maximum likelihood pseudo r-squared. r2CU:Cragg and Uhler’s pseudo r-squared.

Long, J. Scott. 1997. Regression Models for Categorical and Limited Dependent Variables. Sage.pp104-106.Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 26 / 48

Page 27: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Hosmer-Lemeshow TestOtra aproximación para determinar la bondad del ajuste es a través del estadísticode Homer-Lemeshow, el cual se calcula dividiendo las observaciones en dos gruposbasadas en valores similares de sus predicciones (probabilidades). Éste examina quelas proporciones de los eventos mediante una χ2. Pequeños valores con grandesp-valores indican un buen ajuste de los datos mientras que valores grandes yp-valores< 0.05 indican un ajuste probre. Este test está recomendado para modeloscon variables contínuas y categóricas.

library(MKmisc)HLgof.test(fit = fitted(pass.m2), obs = pass.df$Pass)#library(ResourceSelection)#hoslem.test(pass.df$Pass, fitted(pass.m2))

#### Hosmer-Lemeshow H statistic#### data: fitted(pass.m2) and pass.df$Pass## X-squared = 3156, df = 8, p-value < 2.2e-16

Tanto una opción como la otra, parece que nos indican poco “bondad de ajuste”.Es decir, no es el mejor modelo para explicar la venta del pase.Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 27 / 48

Page 28: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Test estadísticos para cada “X”

Se usa para evaluar la significación de cada uno de los coeficientes del modelo y secalcula tomando la ratio de los coeficientes al cuadrado en el modelo y el cuadradode lso errores estandar. La idea es testear la hipótesis que el coeficiente de unavariable inddependiente es estadisticamente significatico distinto de cero.

library(survey)regTermTest(pass.m2, "Channel")regTermTest(pass.m2, "Promo")

## Wald test for Channel## in glm(formula = Pass ~ Promo + Channel, family = binomial, data = pass.df)## F = 300.1816 on 2 and 3152 df: p= < 2.22e-16

## Wald test for Promo## in glm(formula = Pass ~ Promo + Channel, family = binomial, data = pass.df)## F = 38.47806 on 1 and 3152 df: p= 6.2588e-10

Una a una las variables si son significativas para el estudio de estudiar si un clientese saca o no el pase.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 28 / 48

Page 29: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Bondad de Ajuste

Variable ImportanceCon el fin de asegrar la importanci arelativa de los predictores de forma individualen el modelo, podemos mirar el valor absoluto del estadístico t-statistic paracada parámetro.

library(caret)varImp(pass.m2)

## Overall## PromoBundle 6.203069## ChannelMail 14.853534## ChannelPark 23.313457

OverallPromoBundle 6.203069ChannelMail 14.853534ChannelPark 23.313457

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 29 / 48

Page 30: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Estudiando la capacidad Predictiva

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 30 / 48

Page 31: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Medidas de Validación de la Prediccíon

En distintos campos tras un ajuste de un modelo logistico se quiere dar algún valorque nos ayude a saber si un modelo bondadoso va o no a predecir bien.

En concreto vamos a estudiar: - Sensibilidad - Especificidad - ValoresPredictivos Positivos - Valores Predictivos Negativos

pases<-factor(ifelse(pass.m2$fitted.values<0.5,"NoPass","YesPass"))predice<-table(pases,pass.df$Pass)

Table 7: Predicho vs. Observado

NoPass YesPassNoPass 1017 307YesPass 550 1282

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 31 / 48

Page 32: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Medidas de Validación de la Prediccíon

ObservadosNo Si

Predichos NO A BSi C D

A= Verdaderos NegativosB= Falsos NegativosC= Falsos PositivosD= Verdaderos Positivos

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 32 / 48

Page 33: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Medidas de Validación de la Prediccíon

Lo primero que debemos hacer es calcular los porcentajes de Buena y Malaclasificación.Sensibilidad= Probabilidad de que la Predicción sea positiva si la Observada está presente.

Sensibilidad =A

A + CEspecificidad= Probabilidad de que la predicción sea negativa en los individuos Positivos.

Especificidad =D

B + DValor predictivo positivo=Probabilidad que tiene una predicción de detectar negativos cuandotiene un resultado positivo.

VPP =A

A + BValor predictivo negativo=Probabilidad que tiene una predicción de detectar positivos cuando daun resultado negativo.

VPN =C

C + DRazón de verosimilitud positiva (RVP)= Cuanto mayor es la RVP (sobre 1) más importante esla contribución de un resultado positivo del modelo en la capacidad predictiva.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 33 / 48

Page 34: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Medidas de Validación de la PrediccíonconfusionMatrix(predice)

## Confusion Matrix and Statistics###### pases NoPass YesPass## NoPass 1017 307## YesPass 550 1282#### Accuracy : 0.7285## 95% CI : (0.7126, 0.7439)## No Information Rate : 0.5035## P-Value [Acc > NIR] : < 2.2e-16#### Kappa : 0.4563## Mcnemar's Test P-Value : < 2.2e-16#### Sensitivity : 0.6490## Specificity : 0.8068## Pos Pred Value : 0.7681## Neg Pred Value : 0.6998## Prevalence : 0.4965## Detection Rate : 0.3222## Detection Prevalence : 0.4195## Balanced Accuracy : 0.7279#### 'Positive' Class : NoPass##Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 34 / 48

Page 35: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Curvas ROC

Receiver Operating Characteristic(ROC) resume el rendimiento del modelomediante la evaluación de las soluciones entre tasa de verdaderos positivos(sensibilidad) y la tasa de falsos positivos (1- especificidad).Otra interpretación de este gráfico es la representación de la razón o ratio deverdaderos positivos (VPR = Razón de Verdaderos Positivos) frente a la razóno ratio de falsos positivos (FPR = Razón de Falsos Positivos) también segúnse varía el umbral de discriminación (valor a partir del cual decidimos que uncaso es un positivo).Como medida de discriminación se utiliza el área bajo la curva ROC querepresenta para todos los pares posibles de individuos formados por unindividuo en el que ocurrió el evento y otro en el que no, la proporción de losque el modelo predice una mayor probabilidad para el que tuvo el evento. Apartir de un área de 0,7 la discriminación del modelo se considera aceptable.

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 35 / 48

Page 36: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Curvas ROC

library(ROCR)predict <- predict(pass.m2, type = 'response')ROCRpred <- prediction(predict, pass.df$Pass)ROCRperf <- performance(ROCRpred, 'tpr','fpr')plot(ROCRperf, colorize = TRUE, text.adj = c(-0.2,1.7))

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 36 / 48

Page 37: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

False positive rate

True

pos

itive

rat

e

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.6

0.07

0.62

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 37 / 48

Page 38: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Curvas ROC

library(pROC)## Intervalo de Confianza para el Umbralplot.roc(pass.df$Pass,predict,

main="Venta de Pases",percent=TRUE, ci=TRUE, of="thresholds", # compute AUC (of threshold)thresholds="best", # select the (best) threshold

print.thres="best", xlab="Especificidad", ylab="Sensibilidad") # also highlight this threshold on the plot

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 38 / 48

Page 39: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Venta de Pases

Especificidad

Sen

sibi

lidad

200 100 0 −100

020

6010

0

0.5 (64.9%, 80.7%)

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 39 / 48

Page 40: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Curvas ROC

Veamos los resultados gráficos:

roc1 <- roc(pass.df$Pass,predict,percent=TRUE,ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE,plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,print.auc=TRUE, show.thres=TRUE)

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 40 / 48

Page 41: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Specificity (%)

Sen

sitiv

ity (

%)

200 100 0 −100

020

6010

0

AUC: 78.5% (76.9%...80.0%)AUC: 78.5% (76.9%...80.0%)

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 41 / 48

Page 42: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Curvas ROCY ahora los resultados numéricos:roc1ci.thresholds(roc1)

#### Call:## roc.default(response = pass.df$Pass, predictor = predict, percent = TRUE, ci = TRUE, plot = TRUE, boot.n = 100, ci.alpha = 0.9, stratified = FALSE, auc.polygon = TRUE, max.auc.polygon = TRUE, grid = TRUE, print.auc = TRUE, show.thres = TRUE)#### Data: predict in 1567 controls (pass.df$Pass NoPass) < 1589 cases (pass.df$Pass YesPass).## Area under the curve: 78.47%## 95% CI: 76.92%-80.03% (DeLong)

thresholds sp.low sp.median sp.high se.low se.median se.high

-Inf 0.000 0.000 0.000 100.000 100.000 100.0000.0889380097453924 4.212 5.297 6.319 96.790 97.609 98.3020.248776484931383 34.014 36.184 38.481 94.840 95.909 96.8530.455366276407176 62.412 64.837 67.262 78.853 80.680 82.6310.635712350391374 80.728 82.642 84.558 55.758 58.087 60.5410.792507747208379 95.980 96.873 97.703 15.922 17.873 19.887Inf 100.000 100.000 100.000 0.000 0.000 0.000

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 42 / 48

Page 43: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Validación cruzada

Una delas técnicas más utilizadas para estudiar la capacidad predictiva de unmodelo, es la Validación Cruzada.Existen diferentes técnicas para realizar esto pero la más fácil es ajustarnuestro modelo sin la i-ésima observación, ver el valor predicho y compararlocon el real. Si hacemos esto para todos los datos obtendremos el error quecomete nuestro modelo al predecir.

-Otro posibilidad es guardarnos datos del conjunto de datos y meterlos en el modelopara comparar la respuest areal con la predicción.

Particion <- createDataPartition(pass.df$Pass, p=0.7, list=FALSE)ajuste <- pass.df[ Particion, ]valida <- pass.df[ -Particion, ]ctrl<-trainControl(method = "repeatedcv", number = 10, savePredictions = TRUE)mod_fit<-train(Pass~Channel+Promo, data=ajuste,

method="glm", family="binomial",trControl=ctrl, tuneLength=5)

pred = predict(mod_fit, newdata=valida)confusionMatrix(data=pred, valida$Pass)

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 43 / 48

Page 44: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Validación cruzada

## Confusion Matrix and Statistics#### Reference## Prediction NoPass YesPass## NoPass 308 96## YesPass 162 380#### Accuracy : 0.7273## 95% CI : (0.6977, 0.7554)## No Information Rate : 0.5032## P-Value [Acc > NIR] : < 2.2e-16#### Kappa : 0.454## Mcnemar's Test P-Value : 5.194e-05#### Sensitivity : 0.6553## Specificity : 0.7983## Pos Pred Value : 0.7624## Neg Pred Value : 0.7011## Prevalence : 0.4968## Detection Rate : 0.3256## Detection Prevalence : 0.4271## Balanced Accuracy : 0.7268#### 'Positive' Class : NoPass##

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 44 / 48

Page 45: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Validación cruzada

Una forma más artesanal sería:

error<-(rep(NA,length(pass.df$Pass)))for(i in 1:length(pass.df$Pass)){fit1<- glm(Pass ~ Promo+Channel, data=pass.df[-i,], family=binomial)error[i]<-ifelse(predict(fit1,newdata=pass.df[i,])<0.5,"NoPass","YesPass")

}kable(table(error,pass.df$Pass))

NoPass YesPass

NoPass 1295 666YesPass 272 923

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 45 / 48

Page 46: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Estudiando la capacidad Predictiva

Validación cruzada

print(confusionMatrix(error,pass.df$Pass))

## Confusion Matrix and Statistics#### Reference## Prediction NoPass YesPass## NoPass 1295 666## YesPass 272 923#### Accuracy : 0.7028## 95% CI : (0.6865, 0.7187)## No Information Rate : 0.5035## P-Value [Acc > NIR] : < 2.2e-16#### Kappa : 0.4066## Mcnemar's Test P-Value : < 2.2e-16#### Sensitivity : 0.8264## Specificity : 0.5809## Pos Pred Value : 0.6604## Neg Pred Value : 0.7724## Prevalence : 0.4965## Detection Rate : 0.4103## Detection Prevalence : 0.6214## Balanced Accuracy : 0.7036#### 'Positive' Class : NoPass##

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 46 / 48

Page 47: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Ejercicio

Ejercicio

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 47 / 48

Page 48: Vender o no vender ese es el problema (I) - Regresión ...umh1480.edu.umh.es/wp-content/uploads/sites/44/... · Introducción LasBasesdelModeloLogístico Lafórmulaesnecesariaparaconocerelfuncionamientodelmodelo:

Ejercicio

Modelo LogísticoTenemos los datos de una encuesta a los visitantes de Terra Mítica. Los datoscontienen la siguiente información:

Si es o no visitante de fin de semana (weekend),Número de niños que le acompañan (num.cild),La distnacia desde su hogar al parque (ditance).Satisfacción general (overall),satisfacción con las atracciones(rides), juegos (games),tiempos de espera(wait) y limpieza (clean).

sat.df <- read.csv("http://goo.gl/HKnl74")str(sat.df)

## 'data.frame': 500 obs. of 8 variables:## $ weekend : Factor w/ 2 levels "no","yes": 2 2 1 2 1 1 2 1 1 2 ...## $ num.child: int 0 2 1 0 4 5 1 0 0 3 ...## $ distance : num 114.6 27 63.3 25.9 54.7 ...## $ rides : int 87 87 85 88 84 81 77 82 90 88 ...## $ games : int 73 78 80 72 87 79 73 70 88 86 ...## $ wait : int 60 76 70 66 74 48 58 70 79 55 ...## $ clean : int 89 87 88 89 87 79 85 83 95 88 ...## $ overall : int 47 65 61 37 68 27 40 30 58 36 ...

Xavi Babrer (@umh1480 @XaviBarberUMH) Vender o no vender ese es el problema (I) 48 / 48