Modelo logistico y multinomial con aplicaciones en R
Fernando Calvo B61341 introduccioneconomia6@[Link] ([Link]
7/7/2021
library(aod)
## Warning: package 'aod' was built under R version 4.0.5
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.5
require(foreign)
## Loading required package: foreign
require(nnet)
## Loading required package: nnet
require(ggplot2)
require(reshape2)
## Loading required package: reshape2
## Warning: package 'reshape2' was built under R version 4.0.5
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.5
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.2 v dplyr 1.0.7
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## v purrr 0.3.4
## Warning: package 'tibble' was built under R version 4.0.5
## Warning: package 'tidyr' was built under R version 4.0.5
## Warning: package 'readr' was built under R version 4.0.5
## Warning: package 'purrr' was built under R version 4.0.5
## Warning: package 'dplyr' was built under R version 4.0.5
## Warning: package 'stringr' was built under R version 4.0.5
## Warning: package 'forcats' was built under R version 4.0.5
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
Resumen
El uso de las regresiones ha sido ampliamente empleado gracias a su efectividad en la prediccion de variables. Es de mucha utilidad en
situaciones de la vida cotidiana, ya que permite modelar muchos problemas en los que se busca un pronostico futuro de la variable resultado ante
ciertos escenarios de las variables predictoras. En esta investigacion se muestran los modelos y se explica su funcionamiento, se plantean dos
escenarios en los que se utilizan la regresion logistica y la logistica multinomial, y se calculan los errores de aproximacion de estas variables,
mediante las pruebas de hipotesis y el analisis discriminante fue posible probar la eficiencia de los mismos con resultados positivos, todo
ejecutado mediante codigo en R.
Palabras clave: Logística, Multinomial, R
##Introduccion
La regresión logística es un procedimiento cuantitativo de gran utilidad para problemas donde la variable dependiente toma valores en un conjunto
finito. Su uso se impone de manera creciente desde la década de los 80 debido a las facilidades computacionales con que se cuenta desde
entonces. La regresión logística multinomial (Hosmer y Stanley, 2001) es utilizada en modelos con variable dependiente de tipo nominal con más
dedos categorías (politómica) y es una extensión mul-tivariante de la regresión logística binaria clásica. Las variables independientes pueden ser
tanto continuas (regresores) como categóricas (factores).Tradicionalmente las variables dependientes politómicas han sido modeladas mediante
análisis discriminante pero, gracias al creciente desarrollo de las técnicas de cálculo, cada vez es más habitual el uso de modelos de regresión
logística multinomial, ya implementados en paquetes estadísticos como R.
El objetivo general de esta investigacion es: Analizar el comportamiento de los modelos de regresión logística y multinomial y sus aplicaciones en
predicción de variables. Como objetivos especificos tenemos: Definir y explicar modelos de regresión logística y multinomial mediante el análisis
de ejemplos y descripción de los métodos empleados, bases de de datos, programa informático R y librerías empleadas. Comparar los resultados
obtenidos de la aplicación del modelo de regresión logística y multinomial con las variables de estudio respecto al tipo de análisis empleado.
Visualizar los resultados mediante graficos y contrastar los parametros calculados en las regresiones mediante pruebas de hipotesis.
Los modelos de regresión logística son aquellos que permiten determinar si una variable binomial depende o no, de otras variables. si una
variable binomial de parámetro p es independiente de otra variable X, se cumple p = p|X|, por consiguiente, un modelo de regresión es una
función de p en X que a través del coeficiente de X permite investigar la relación anterior. La regresión logística es muy usada en areas como:las
ciencias médicas y sociales ya que se ajusta mas al tipo de variables utilizadas que en muchas ocasiones son categoricas y continuas. El modelo
multinomial se trata de un modelo que se utiliza para predecir las probabilidades de los diferentes resultados posibles de una distribución
categórica como variable dependiente, dado un conjunto de variables independientes (que pueden ser de valor real, valor binario, categórico-
valorado, etc.) en general, los requisitos y etapas de la regresión logística son los que se muestran a continuación, posteriormente detallaremos
esas etapas: (Hosmer y Stanley, 2001)
recodificar las variables independientes categóricas u ordinales en variables ficticias o simuladas y la variable dependiente.
Evaluar efectos de confusión y de interacción del modelo explicativo.
Evaluar la bondad de ajuste de los modelos.
Analizar la fuerza, sentido y significación de los coeficientes, sus exponenciales y estadísticos de prueba
Algunos ejemplos donde se utiliza la regresion multinomial son:
¿Qué puede estudiar una persona en la universidad, teniendo en cuenta sus calificaciones, sus gustos, la carrera que estudiaron sus
padres, etc?
¿Qué tipo de sangre tiene una persona, teniendo en cuenta los resultados de varias pruebas, el tipo de sangre en su familia?
¿Por cual candidato votara una persona, teniendo en cuenta la zona donde vive, la tradicion familiar, entre otras?
Justificacion. Entre las ventajas del modelo de regresion logistica podemos destacar el bajo consumo de recursos de la computadora al hacer uso
de ciertos tipos de software como R, su fácil interpretación, su eficiencia y su [Link] se puede aplicar dentro de campos como el
marketing en ecommerce y nos puede decir si un cliente le interesa un producto o no a través de una oferta. Ventajas del modelo multinomial: su
gran capacidad para afrontar situaciones en las que se vulneran las hipótesis de independencia de alternativas irrelevantes (IAI) y de
homoscedasticidad propias de estos últimos (en el modelo logit anidado se considera una partición disjunta de las alternativas en grupos de tal
forma que intra-grupos se satisface la hipótesis deIAI y de homoscedasticidad, pero no inter-grupos). Posee un listado de conteos pronosticados y
residuales por subpoblaciones, correccion de las estimaciones y varianzas para la dispersion excesiva, matriz de covarianza de la estimciones de
parametros ademas de de especificacion explicita de modelos anidados.
##Métodos
La bases de datos utilizadas son simuladas asi como tambien las situaciones planteadas son hipoteticas, sin embargo, ambos tanto datos como
problemas son muy apegados a las situaciones de la vida cotidiana, por lo que son perfectamente replicables con el uso de datos reales y el
planteamiento de situaciones o problemas comunes, corresponden a los datos del sistema de un banco tanto del core banking como CRM.
La base de datos se adjunta al trabajo
banco <- read_csv("[Link]")
##
## -- Column specification --------------------------------------------------------
## cols(
## .default = col_double(),
## FechaNacimientoCliente = col_character(),
## FrecuenciaViajesCliente = col_character(),
## NivelEducacionCliente = col_character(),
## EspecialidadEducacionCliente = col_character(),
## NivelSatisfaccionCliente = col_character(),
## GeneroCliente = col_character(),
## NivelSatisfaccionCallCenter = col_character(),
## CargoActualCliente = col_character(),
## EstadoCivilCliente = col_character(),
## EsMayorEdadCliente = col_character()
## )
## i Use `spec()` for the full column specifications.
Las siguientes definiciones se pueden consultar en (Hosmer y Stanley, 2001)
Modelo logistico. Supongamos que la variable dependiente Y representa la ocurrencia o no de un suceso. Podemos decir que la variable
dependiente Y toma valor 1 si ocurre el suceso, y valor 0 si no ocurre el suceso. Por otra parte nos interesa estudiar la relación entre una o más
variables independientes o explicativas: X1 , X2 , ⋯ , Xp y la variable Y . El modelo logístico establece la siguiente relación entre la probabilidad
de que ocurra el suceso, dado que el individuo presenta los valores X1 = x 1 , X2 = x 2 , ⋯ , Xp = x p :
1
P (Y = 1|x 1 , ⋯ , x p ) =
1 + exp(−α − β 1 x 1 − β 2 x 2 − ⋯ β p x p )
Otra forma de mostrar esta relacion es
P(Y = 1|x 1 , ⋯ , x p )
log( ) = α + β1 x1 + ⋯ + βp xp
1 − P(Y = 1|x 1 , ⋯ , x p )
Un problema importante es estimar los parámetros α, β i′ s, a partir de un conjunto de observaciones. El procedimiento de estimación de estos
parámetros se basa en el método de máxima verosimilitud, mediante la maximizacion de la funcion de verosimilitud
n
L(y, β) = ∑ yi ln(pi ) + (1 − yi ) ln(1 − pi )
i=1
Donde n es el numero de observaciones y pi = P(Y = yi |x i ). Una vez que se calculan los estimadores de maxima verosimilitud de β i′ s se
pueden calcular los intervalos de confianza de los parametros, con una confianza del 100(1 − α)% pueden calcularse como
− −−−−
^ ^
β i ± z 1−α/2 √ varβ i
^
β
Tambien se puede contrastar la hipotesis nula H0 mediante el estadistico Z .
i
: βi = 0 =
√var ^
βi
Regresion logistica multinomial. En este metodo se modelan tantas ecuaciones como alternativas tenga Y . Para cada variable se estiman tantos
parametros como alternativas de Y menos una. Ademas es necesario seleccionar una categoria de referencia.
Las ecuaciones se pueden expresar mediante
1
P(Y i = 0) = para j = 0
j−1 ^
β kj X ki
1 + ∑ e
j=1
^
β X ki
e kj
P(Y i = j) = para j ≥ 1
j−1 ^
β X ki
1 + ∑ e kj
j=1
Resultados
Al aplicar los modelos de regresion logistica y modelo logistico multinomial, a las bases de datos descritas en los apartados anteriores.
Mostraremos como se deben transformar los datos para poderlos utilizar en los modelos respectivos, empleando el uso de R para su apropiada
ejecucion y posteriormente mostrar los resultados en graficos.
Modelo de regresion logistica multinomial. Considere la siguiente situacion hipotetica, pero que es aplicable a la vida real:
El nivel de educación de los clientes de un banco puede ser modelado por la cantidad de patrimonio y cantidad de ingresos de los clientes.
Cargamos la base de datos que contiene informacion sobre 1249 clientes, con 43 variables que contienen informacion sobre ellos, entre las
cuales vamos a destacar las principales:
“Patrimonio” que indica el Monto del patrimonio del cliente esta es una variable núemrica continua con valores entre 0 y 1,380,699.00
“IngresosCliente” que es una variable numerica continua e indica los ingresos que ha reportado el cliente a la entidad bancaria.
“NivelEducacionCliente” que es una variable categorica que indica el Nivel de educación que posee el cliente
“Patrimonio” y “IngresosCliente” representan las variables predictoras, es decir, las que se utilizaran para predecir a la variable
“NivelEducacionCliente”
with(banco, [Link](rbind, tapply(Patrimonio,NivelEducacionCliente, function(x) c(M = mean(x), SD = sd(x)))))
## M SD
## Bachelor 89511.77 118828.3
## Below_College 77090.42 106163.1
## College 94662.56 140153.5
## Doctor 172582.37 301135.2
## Master 86517.70 143983.7
En la tabla anterior podemos ver la media de la cantidad y la desviación estándar de patrimonio correspondiente a cada grado educativo En la
tabla anterior podemos ver la cantidad de ingresos reportados al banco por los clientes según su nivel educativo. El nivel más alto de educación
corresponde al nivel más alto patrimonio.
with(banco, [Link](rbind, tapply(IngresosCliente,NivelEducacionCliente, function(x) c(M = mean(x), SD = sd(x)))))
## M SD
## Bachelor 6533.782 4984.946
## Below_College 6794.561 5586.965
## College 6569.272 4891.957
## Doctor 7517.953 5345.705
## Master 6680.347 4639.784
En la tabla anterior podemos ver la cantidad de ingresos reportados al banco por los clientes según su nivel educativo. El nivel más alto de
educación corresponde al nivel más alto de ingresos.
test <- multinom(NivelEducacionCliente ~ IngresosCliente + Patrimonio, data = banco)
## # weights: 20 (12 variable)
## initial value 2010.187953
## iter 10 value 1802.452390
## iter 20 value 1744.111059
## final value 1744.111025
## converged
summary(test)
## Call:
## multinom(formula = NivelEducacionCliente ~ IngresosCliente +
## Patrimonio, data = banco)
##
## Coefficients:
## (Intercept) IngresosCliente Patrimonio
## Below_College -1.2606651 1.036937e-05 -8.240135e-07
## College -0.6806629 1.541534e-06 2.741437e-07
## Doctor -2.9607893 3.575271e-05 2.287837e-06
## Master -0.4503375 5.987861e-06 -1.738473e-07
##
## Std. Errors:
## (Intercept) IngresosCliente Patrimonio
## Below_College 1.046712e-09 1.279838e-05 7.632643e-07
## College 8.938122e-10 1.049558e-05 5.157798e-07
## Doctor 1.499403e-09 1.964335e-05 6.662148e-07
## Master 8.205992e-10 9.708985e-06 5.117845e-07
##
## Residual Deviance: 3488.222
## AIC: 3512.222
En las intrucciones anteriores, usamos la función (multinom) para esto es necesario el paquete (nnet) con el cual estimamos bajo un modelo de
regresión logística multinomial. La ventaja de esta funcion sobre muchas otras es que no requiere que los datos se modifiquen. Luego,
ejecutamos el modelo usando multinom. El paquete multinom no incluye el cálculo del valor p para los coeficientes de regresión, entonces
posteriormente los calculamos usando las pruebas de Wald (o pruebas z).
z <- summary(test)$coefficients/summary(test)$[Link]
## (Intercept) IngresosCliente Patrimonio
## Below_College -1204404998 0.8102098 -1.0795913
## College -761527896 0.1468746 0.5315130
## Doctor -1974645764 1.8200922 3.4340841
## Master -548791082 0.6167340 -0.3396885
p <- (1 - pnorm(abs(z), 0, 1)) * 2
## (Intercept) IngresosCliente Patrimonio
## Below_College 0 0.41781959 0.2803242035
## College 0 0.88323104 0.5950633213
## Doctor 0 0.06874496 0.0005945597
## Master 0 0.53741018 0.7340911167
El valor de p obtenido para 2 colas,
Primero vemos que en el resumen de la prueba se genera un resultado al ejecutar el modelo, esto es el resultado de aplicar varias iteraciones e
incluye la probabilidad logarítmica negativa final de 1744.111025 que es la obtenida. Este valor multiplicado por dos se ve en el resumen del
modelo como la Desviación residual. La desviacion residual se puede usar en comparaciones de modelos.
El resumen de resultados del modelo, tiene un bloque de coeficientes y un bloque de errores estándar. Cada uno de estos bloques tiene una fila
de valores correspondientes a una ecuación modelo. Centrándonos en el bloque de coeficientes, podemos ver la primera fila comparando
NivelEducacionCliente = Below_College con nuestro programa de referencia NivelEducacionCliente = Bachellor y de esta misma forma para cada
fila corresponde la comparación del Nivel de ecuación con el nivel referencial. Si consideramos que los coeficientes de la primera fila son b1 y que
los coeficientes de la segunda fila son b2 , y así sucesivamente podemos escribir las ecuanciones de la manera analoga a la priemra,variando el
Nivel de Educación y los indicadores de filas.
P (N ivelEducacionC liente = BelowC ollege)
ln( ) = b10 + b11 I ngresosC liente + b13 P atrimonio
P (N ivelEducacionC liente = Bachellor)
Donde los parametros indicados se pueden describir de la siguiente forma (ver conjuntamente la tabla resultado de la prueba para
identificarlos):Cada fila representa una regresión,donde cada columna es el coeficiente de cada varaible del modelo.
El cociente de la probabilidad de elegir una de las categorías de resultados sobre la probabilidad de elegir la categoría base es el riesgo relativo.
El riesgo relativo es la ecuación lineal del lado derecho exponenciado, por lo que entonces los coeficientes de regresión exponenciados son
cocientes de riesgo relativo para un cambio de unidad en la variable predictora. Los coeficientes del modelo se pueden exponenciar para ver
estos índices de riesgo. Como se muestra en el siguiente codigo R:
exp(coef(test))
## (Intercept) IngresosCliente Patrimonio
## Below_College 0.28346544 1.000010 0.9999992
## College 0.50628125 1.000002 1.0000003
## Doctor 0.05177803 1.000036 1.0000023
## Master 0.63741298 1.000006 0.9999998
Estos datos se pueden interpretar como: El cociente de riesgo relativo para un aumento de una unidad en la variable puntuacion en Puntuación es
0.9999 para tener nivel de educación menro de licenciatura en comparacion con un grado de licenciatura.
Las variables que fueron pronosticadas se pueden usar para comprender el modelo. Podemos comenzar generando las probabilidades
pronosticadas para las observaciones en el conjunto de datos. De la siguiente forma en R (se muestran las primeras filas solamente):
head(pp <- fitted(test))
## Bachelor Below_College College Doctor Master
## 1 0.3954521 0.11822143 0.2017995 0.02459767 0.2599293
## 2 0.3998152 0.10202877 0.2126866 0.03343908 0.2520304
## 3 0.3990579 0.09610286 0.2165872 0.03960513 0.2486469
## 4 0.3929163 0.07658738 0.2283441 0.06836883 0.2337834
## 5 0.4005580 0.10701676 0.2093490 0.02858948 0.2544868
## 6 0.3969203 0.11751302 0.2022564 0.02387561 0.2594347
Para analizar los cambios en la probabilidad pronosticada asociados con una de las dos variables, se pueden crear pequeños conjuntos de datos
que varíen una variable mientras se mantiene la otra constante.
dIng <- [Link](IngresosCliente = rep(seq(from = 0, to = 20000, [Link] = 20)), Patrimonio = mean(banco$Patrimonio))
predict(test, newdata = dIng, "probs")
## Bachelor Below_College College Doctor Master
## 1 0.4043316 0.1063093 0.2098928 0.02579768 0.2536686
## 2 0.4026803 0.1070371 0.2093750 0.02667766 0.2542300
## 3 0.4010179 0.1077651 0.2088493 0.02758644 0.2547813
## 4 0.3993443 0.1084931 0.2083154 0.02852488 0.2553222
## 5 0.3976593 0.1092210 0.2077733 0.02949388 0.2558525
## 6 0.3959626 0.1099486 0.2072228 0.03049434 0.2563717
## 7 0.3942540 0.1106756 0.2066637 0.03152722 0.2568794
## 8 0.3925333 0.1114019 0.2060959 0.03259346 0.2573754
## 9 0.3908002 0.1121273 0.2055192 0.03369405 0.2578593
## 10 0.3890545 0.1128515 0.2049334 0.03482999 0.2583306
## 11 0.3872960 0.1135744 0.2043384 0.03600230 0.2587889
## 12 0.3855244 0.1142956 0.2037340 0.03721205 0.2592339
## 13 0.3837394 0.1150150 0.2031201 0.03846029 0.2596652
## 14 0.3819409 0.1157323 0.2024964 0.03974813 0.2600823
## 15 0.3801285 0.1164472 0.2018628 0.04107668 0.2604849
## 16 0.3783019 0.1171596 0.2012191 0.04244709 0.2608723
## 17 0.3764611 0.1178690 0.2005651 0.04386053 0.2612443
## 18 0.3746055 0.1185753 0.1999006 0.04531818 0.2616004
## 19 0.3727351 0.1192781 0.1992255 0.04682125 0.2619400
## 20 0.3708495 0.1199771 0.1985396 0.04837097 0.2622628
Otra forma de entender el modelo usando las probabilidades pronosticadas es mirar las probabilidades pronosticadas promediadas para
diferentes valores de la puntuacion de escritura de la variable predictora continua dentro de cada nivel socioeconomico ses. En R podemos
hacerlo mediante:
dPat <- [Link](IngresosCliente = c(0, 2774, 4497, 6220, 7943, 9666, 11389, 13112, 14835, 16558, 18281,20000), Patrimonio
= c(0,125519,251038,376557,502076,627595, 753114,878633,1004152,1129671,1255190,1380712))
[Link] <- cbind(dPat, predict(test, newdata = dPat, type = "probs", se = TRUE))
by([Link][,3:5], [Link]$Patrimonio, colMeans)
## [Link]$Patrimonio: 0
## Bachelor Below_College College
## 0.4033986 0.1143496 0.2042331
## ------------------------------------------------------------
## [Link]$Patrimonio: 125519
## Bachelor Below_College College
## 0.4000610 0.1052446 0.2105326
## ------------------------------------------------------------
## [Link]$Patrimonio: 251038
## Bachelor Below_College College
## 0.39643784 0.09573908 0.21650401
## ------------------------------------------------------------
## [Link]$Patrimonio: 376557
## Bachelor Below_College College
## 0.39044493 0.08655944 0.22128314
## ------------------------------------------------------------
## [Link]$Patrimonio: 502076
## Bachelor Below_College College
## 0.38150602 0.07764197 0.22438180
## ------------------------------------------------------------
## [Link]$Patrimonio: 627595
## Bachelor Below_College College
## 0.36897133 0.06893317 0.22520423
## ------------------------------------------------------------
## [Link]$Patrimonio: 753114
## Bachelor Below_College College
## 0.35219282 0.06040274 0.22308076
## ------------------------------------------------------------
## [Link]$Patrimonio: 878633
## Bachelor Below_College College
## 0.33066329 0.05205981 0.21735282
## ------------------------------------------------------------
## [Link]$Patrimonio: 1004152
## Bachelor Below_College College
## 0.30421715 0.04396841 0.20752035
## ------------------------------------------------------------
## [Link]$Patrimonio: 1129671
## Bachelor Below_College College
## 0.27324874 0.03625399 0.19343402
## ------------------------------------------------------------
## [Link]$Patrimonio: 1255190
## Bachelor Below_College College
## 0.23885199 0.02909156 0.17546934
## ------------------------------------------------------------
## [Link]$Patrimonio: 1380712
## Bachelor Below_College College
## 0.2027815 0.0226719 0.1545952
Usando las predicciones que generamos para el objeto “[Link]” anterior, podemos graficar las probabilidades pronosticadas contra elPatrimonio
por los ingresos del cliente para diferentes niveles de la variable objetivo.
lpp <- melt([Link], [Link] = c("IngresosCliente", "Patrimonio"), [Link] = "probability")
head(lpp) # se muestran las primeras filas
IngresosCliente Patrimonio variable probability
<dbl> <dbl> <fct> <dbl>
1 0 0 Bachelor 0.4033986
2 2774 125519 Bachelor 0.4000610
3 4497 251038 Bachelor 0.3964378
4 6220 376557 Bachelor 0.3904449
5 7943 502076 Bachelor 0.3815060
6 9666 627595 Bachelor 0.3689713
6 rows
ggplot(lpp, aes(x = Patrimonio, y = probability, colour = IngresosCliente)) + geom_line() + facet_grid(variable ~
., scales = "free")
Regresion Logistica. Para evaluar este modelo considere la siguiente situacion hipotetica: El banco busca cocnocer la influencia de la deudad por
prestamos personales y total de depositos en la elección de los clientes en tener deuda con su tarjeta de credito.
Este conjunto de datos tiene una variable de respuesta binaria (resultado, dependiente) llamada “TieneTrabajoExtraCliente” que indicar si se el
cliente tiene trabajo extra o no (0 para no 1 para si). Hay tres variables predictoras: IngresosCliente, Patrimonio y NivelEducacionCliente.
Trataremos las variables como continuas las dos primeras. Y la variable NivelEducacionCliente como ordinal. En resumen:
summary(banco$MontoPrestamoPersonal)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 1712 4833 5959
summary(banco$TotalDepositos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 4639 32821 24003 38011 49357
summary(banco$Tiene_deuda_tarjeta)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.0000 1.0000 0.6709 1.0000 1.0000
xtabs(~Tiene_deuda_tarjeta + NivelSatisfaccionCallCenter, data = banco)
## NivelSatisfaccionCallCenter
## Tiene_deuda_tarjeta High Low Medium Very_High
## 0 243 31 100 37
## 1 508 42 212 76
El código siguiente estima un modelo de regresión logística utilizando la función glm (modelo lineal generalizado). Primero, convertimos el nivel de
educación en un factor para indicar que el rango debe tratarse como una variable categórica.
mylogit <- glm(Tiene_deuda_tarjeta ~ MontoPrestamoPersonal+ TotalDepositos , data = banco, family = "binomial")
summary(mylogit)
##
## Call:
## glm(formula = Tiene_deuda_tarjeta ~ MontoPrestamoPersonal + TotalDepositos,
## family = "binomial", data = banco)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.1060 -1.1028 0.6284 0.7926 1.2981
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.793e-01 1.021e-01 -2.734 0.006248 **
## MontoPrestamoPersonal 1.027e-04 3.020e-05 3.399 0.000675 ***
## TotalDepositos 3.779e-05 3.993e-06 9.465 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1582.5 on 1248 degrees of freedom
## Residual deviance: 1439.7 on 1246 degrees of freedom
## AIC: 1445.7
##
## Number of Fisher Scoring iterations: 4
En la salida anterior, lo primero que vemos es la llamada, eque indica cuál era el modelo que ejecutamos, qué opciones especificamos entre
otros. Vemos luego la desviación de los residuos, que son una medida del ajuste del modelo. Esta parte de la salida muestra la distribución de la
desviación de los residuos para casos individuales usados en el modelo. La siguiente parte del resultado muestra los coeficientes, sus errores
estándar, el estadístico z (a veces llamado estadístico z de Wald) y los valores p asociados. Las dos varailbes predictoras son estadísticamente
significativas.
La funcion “confint” sirve para obtener intervalos de confianza para las estimaciones de los coeficientes.
#intervalos utilizando la funcion logaritmica de verosimilitud
confint(mylogit)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -4.800143e-01 -7.937793e-02
## MontoPrestamoPersonal 4.390722e-05 1.624059e-04
## TotalDepositos 3.002077e-05 4.568039e-05
#intervalos utilizando errores estandar
[Link](mylogit)
## 2.5 % 97.5 %
## (Intercept) -4.794887e-01 -7.910767e-02
## MontoPrestamoPersonal 4.347006e-05 1.618431e-04
## TotalDepositos 2.996797e-05 4.561962e-05
Podemos probar el efecto general del rango usando la “función [Link]”. El orden en el que se dan los coeficientes en la tabla de coeficientes es
el mismo que el orden de los términos en el modelo. Esto es importante porque la función [Link] se refiere a los coeficientes por su orden en el
modelo. Usamos la función [Link]. b proporciona los coeficientes, mientras que S igma proporciona la matriz de covarianza de varianza de los
términos de error, finalmente Términos le dice a R qué términos del modelo se van a probar; en este caso, los términos 4, 5 y 6 son los tres
términos para los niveles de rango.
exp(coef(mylogit))
## (Intercept) MontoPrestamoPersonal TotalDepositos
## 0.7563143 1.0001027 1.0000378
#intervalos de confianza exponenciados
exp(cbind(OR = coef(mylogit), confint(mylogit)))
## Waiting for profiling to be done...
## OR 2.5 % 97.5 %
## (Intercept) 0.7563143 0.6187745 0.9236908
## MontoPrestamoPersonal 1.0001027 1.0000439 1.0001624
## TotalDepositos 1.0000378 1.0000300 1.0000457
Se puede decir que para un aumento 1000 doalres en los prestamos personales, las probabilidades de tener deuda con la tarjeta de crpedito (en
lugar de no tenerla) aumentan en un factor de 0.1. También puede usar probabilidades pronosticadas para ayudarlo a comprender el modelo. Las
probabilidades pronosticadas se pueden calcular para variables predictoras tanto categóricas como continuas. Para crear probabilidades
pronosticadas, primero necesitamos crear un nuevo marco de datos con los valores que queremos que adopten las variables independientes para
crear las predicciones.
newdata1 <- with(banco, [Link](MontoPrestamoPersonal = mean(MontoPrestamoPersonal), TotalDepositos = c(4487,8974,13461,1
7948,22435,26922,31409,35896,40383,44870,49357)))
newdata1
MontoPrestamoPersonal TotalDepositos
<dbl> <dbl>
1711.641 4487
1711.641 8974
1711.641 13461
1711.641 17948
1711.641 22435
1711.641 26922
1711.641 31409
1711.641 35896
1711.641 40383
1711.641 44870
1-10 of 11 rows Previous 1 2 Next
Estos objetos deben tener los mismos nombres que las variables en su regresión logística anterior. Ahora que tenemos el marco de datos que
queremos usar para calcular las probabilidades pronosticadas, podemos decirle a R que cree las probabilidades pronosticadas, esto se hace con
los siguientes comandos:
newdata1$rankP <- predict(mylogit, newdata = newdata1, type = "response")
newdata1
MontoPrestamoPersonal TotalDepositos rankP
<dbl> <dbl> <dbl>
1711.641 4487 0.5164925
1711.641 8974 0.5586228
1711.641 13461 0.5999257
1711.641 17948 0.6398553
1711.641 22435 0.6779391
1711.641 26922 0.7137971
1711.641 31409 0.7471517
1711.641 35896 0.7778290
1711.641 40383 0.8057519
1711.641 44870 0.8309283
1-10 of 11 rows Previous 1 2 Next
En el resultado anterior, vemos que la probabilidad pronsoticada.
newdata2 <- with(banco, [Link](MontoPrestamoPersonal = c(4633,5165,5697), each =4, TotalDepositos = c(0,4487,8974,13461,
17948,22435,26922,31409,35896,40383,44870,49357)))
newdata3 <- cbind(newdata2, predict(mylogit, newdata = newdata2, type = "link",
se = TRUE))
newdata3 <- within(newdata3, {
PredictedProb <- plogis(fit)
LL <- plogis(fit - (1.96 * [Link]))
UL <- plogis(fit + (1.96 * [Link]))
})
## se muestran las primeras lineas
head(newdata3)
MontoPrestamoPersonal each TotalDepositos fit [Link] [Link] UL
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4633 4 0 0.1963097 0.1590926 1 0.6243683
2 5165 4 4487 0.4205038 0.1604451 1 0.6758963
3 5697 4 8974 0.6446978 0.1643254 1 0.7244763
4 4633 4 13461 0.7050520 0.1280063 1 0.7223091
5 5165 4 17948 0.9292461 0.1350870 1 0.7674587
6 5697 4 22435 1.1534401 0.1447046 1 0.8079991
6 rows | 1-8 of 10 columns
El código para generar las probabilidades pronosticadas es el mismo que antes, excepto que también vamos a pedir que genere los errores
estándar para poder trazar un intervalo de confianza. Obtenemos las estimaciones en la escala del enlace y transformamos en forma inversa
tanto los valores pronosticados como los límites de confianza en probabilidades.
newdata3 <- cbind(newdata2, predict(mylogit, newdata = newdata2, type = "link",
se = TRUE))
newdata3 <- within(newdata3, {
PredictedProb <- plogis(fit)
LL <- plogis(fit - (1.96 * [Link]))
UL <- plogis(fit + (1.96 * [Link]))
})
## se muestra un resumen de las primeras filas
head(newdata3)
MontoPrestamoPersonal each TotalDepositos fit [Link] [Link] UL
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4633 4 0 0.1963097 0.1590926 1 0.6243683
2 5165 4 4487 0.4205038 0.1604451 1 0.6758963
3 5697 4 8974 0.6446978 0.1643254 1 0.7244763
4 4633 4 13461 0.7050520 0.1280063 1 0.7223091
5 5165 4 17948 0.9292461 0.1350870 1 0.7674587
6 5697 4 22435 1.1534401 0.1447046 1 0.8079991
6 rows | 1-8 of 10 columns
También puede ser útil utilizar gráficos de probabilidades pronosticadas para comprender y / o presentar el modelo. La siguiente es una gráfica
con las probabilidades pronosticadas y los intervalos de confianza del 95%.
ggplot(newdata3, aes(x = TotalDepositos, y = PredictedProb)) + geom_ribbon(aes(ymin = LL,
ymax = UL), alpha = 0.2)+ geom_line(aes(color = MontoPrestamoPersonal),
size = 1)
## Conclusiones
Al trabajar con la regresion logistica multinomial, se considera el supuesto de independencia de alternativas irrelevantes, que significa que agregar
o eliminar categorías de resultados alternativas no afecta las probabilidades entre los resultados restantes. Este es un supuesto fuerte y muchas
veces restrictivo, entonces se pueden considerar otros métodos de modelado alternativos, como el modelo probit multinomial o el modelo logit
anidado para relajar el supuesto. Diagnóstico y ajuste del modelo: a diferencia de la regresión logística, donde hay muchas estadísticas para
realizar diagnósticos de modelo, no es tan sencillo realizar diagnósticos con modelos de regresión logística multinomial. Con el fin de detectar
valores atípicos o puntos de datos influyentes, se pueden ejecutar modelos logit separados y utilizar las herramientas de diagnóstico en cada
modelo. El tamaño de la muestra: la regresión multinomial utiliza un método de estimación de máxima verosimilitud, requiere un tamaño de
muestra grande. También usa múltiples ecuaciones. Esto implica que requiere un tamaño de muestra aún mayor que la regresión logística ordinal
o binaria. Separación completa o cuasi-completa: la separación completa significa que la variable de resultado separa una variable predictora
completamente, liderando la predicción perfecta por la variable predictora. La predicción perfecta significa que solo un valor de una variable
predictora está asociado con un solo valor de la variable de respuesta. Celdas vacías o celdas pequeñas: debe verificar las celdas vacías o
pequeñas haciendo una tabulación cruzada entre los predictores categóricos y la variable de resultado. Si una celda tiene muy pocos casos (una
celda pequeña), el modelo puede volverse inestable o puede que ni siquiera se ejecute.
En el caso de la regresion logistica podemos concluir que durante la aplicacion del modelo, es importante considerar los siguientes puntos. Las
celdas vacías o celdas pequeñas: debe verificar las celdas vacías o pequeñas haciendo una tabla de referencias cruzadas entre los predictores
categóricos y la variable de resultado. Si una celda tiene muy pocos casos (una celda pequeña), el modelo puede volverse inestable o puede que
no se ejecute en absoluto. Tamaño de la muestra: los modelos logit y probit requieren más casos que la regresión OLS porque utilizan técnicas de
estimación de máxima verosimilitud. A veces es posible estimar modelos para resultados binarios en conjuntos de datos con solo un pequeño
número de casos usando regresión logística exacta. También es importante tener en cuenta que cuando el resultado es poco común, incluso si el
conjunto de datos general es grande, puede ser difícil estimar un modelo logit. Diagnósticos: los diagnósticos de la regresión logística son
diferentes de los de la regresión OLS.
Los modelos logisticos, son mejores que los modelos lineales, ya que Si una variable cualitativa con dos niveles se codifica como 1 y 0,
matemáticamente es posible ajustar un modelo de regresión lineal por mínimos cuadrados β0+β1x. El problema de esta aproximación es que, al
tratarse de una recta, para valores extremos del predictor, se obtienen valores de Y menores que 0 o mayores que 1, lo que entra en
contradicción con el hecho de que las probabilidades siempre están dentro del rango [0,1].
La implementacion de los modelos en R permiten que los calculos muchas veces tediosos de estos metodos, se pueda resolver de manera
sencilla utilizacion codigo en R, con pocas lineas fue posible ejecutar el modelo y producir los pronosticos. Esto muestra la gran importancia e
influencia que tienen las computadores en una implemtacion eficiente de los modelos logisticos.
Bibliografia
1. Hosmer D., Stanley L., (2001). Applied Logistic Regression. 2ed. Wiley Series in probability and statistics.
2. UCLA, (2021) Multinomial Logistic Regression | R Data Analysis Examples. Institute for digital research & education.
3. UCLA, (2021) Logit Regression | R Data Analysis Examples. Institute for digital research & education.
4. Fernandez, P., (2004). Regresion logistica multinomial. Revista de ciencias forestales CS.