miércoles, 27 de marzo de 2013

The Lending Club - Parte II

Para comenzar a trabajar con este ejemplo


La data con la que se trabajará para este ejemplo está disponible para su descarga desde este enlace. Una vez descargado ese archivo, colóquelo en su directorio de trabajo de R, que usualmente será "Mis Documentos" en el caso de Windows. Para trabajar con este ejemplo, también debe tener la librería "estUNA" en su directorio de trabajo (consulte esta página si tiene dudas sobre cómo descargar estUNA y colocarla en su directorio de trabajo).

Sobre la data del problema del "Lending Club"

El archivo identificado arriba "lending_club.Rda" contiene un data frame identificado como loandata.  A continuación se detallan las variables contenidas en loandata como columnas.

Identificador de variable Descripción
Ar (Amount Requested) Monto solicitador por el prestatario para financiamiento.
Af (Amount Funded) Monto financiado.
Ir (Interest Rate) Tasa de Interés del financiamiento. Esta es la variable dependiente.
Ld (Loan Duration) Variable categórica correspondiente a la duración del préstamo (36 o 60 meses).
Lp (Loan Purpose) Variable categórica correspondiente al propósito del préstamo.
DtIR (Debt-to-income Ratio) Coeficiente de deuda sobre ingresos.
St (State) Código de dos letras correspondiente al estado de residencia del prestatario.
Ho (Home ownership) Tipo de propiedad sobre la casa: "NONE" es ninguna casa, "MORTGAGE" indica hipoteca sobre la casa, "OWN" indica que la casa es propia y "RENT" indica que la casa es alquilada.
I (Income) Ingreso mensual.
Fi (FICO) Puntuación FICO del solicitante.
Ocl (Open Credit Lines) Cantidad de líneas de crédito abiertas del solicitante.
Rcb (Rotating credit balance) Balance rotativo de credito.
Inq (Inquiries) Número de veces que algún comercio ha solicitado un reporte crediticio certificado.
Ed (Employment duration) Tiempo en el actual empleo.

En todo informe de análisis de datos, es importante indicar el tamaño de la muestra empleada en el estudio.  El data frame loandata consta de 2492 observaciones (o renglones) y 14 variables (o columnas).

Análisis exploratorio de los datos


Antes de emprender el planteamiento de los modelos de regresión para inferir cuales variables, en definitiva, inciden sobre la fijación de la tasa de interés de un préstamo, es conveniente realizar un análisis exploratorio de los datos. En un análisis exploratorio se utilizan técnicas de la estadística descriptiva para "descubrir" el comportamiento de las variables, su variabilidad inherente y la variabilidad conjunta entre las mismas.El análisis exploratorio nos debe conducir a plantear uno o varios modelos de regresión viables y a entender cómo o donde estos pueden fallar.

A continuación damos el script en R que realiza los distintos pasos del análisis exploratorio. Si va a experimentar con este script en su computadora, recuerde que debe tener el archivo de la librería estUNA y el archivo de data lending_club.Rda en su directorio de trabajo. Seguidamente iremos interpretando los resultados.

load("estUNA")
load("lending_club.Rda")
attach(loandata)
options(width=60)
png("exploratorio%02d.png")
#Imprime un resúmen del data frame
summary(loandata)
#Matriz de correlación entre las variables cuantitativas
cor(loandata[,c("Ar","Af","Fi","I","Ocl","Rcb","Inq","Ir")])
#La primera gráfica es un histograma de Ir
graficar(Ir)
#A continuación unas graficas de dispersión
#Grafica la tasa de intereses (eje Y) versus:
graficar.dispersion(Ar,Ir,cex=0.2,pch=19)
#Monto solicitado
graficar.dispersion(Af,Ir,cex=0.2,pch=19)
#Monto financiado
graficar.dispersion(Fi,Ir,cex=0.2,pch=19)
#Puntuación FICO
graficar.dispersion(I,Ir,cex=0.2,pch=19)
#Ingreso mensual
graficar.dispersion(Ocl,Ir,cex=0.2,pch=19)
#Lin. credito abiertas
graficar.dispersion(DtIR,Ir,cex=0.2,pch=19)
#Deuda/Ingresos
graficar.dispersion(Rcb,Ir,cex=0.2,pch=19)
#Balance crédito rotativo
graficar.dispersion(Inq,Ir,cex=0.2,pch=19)
#Cantidad de indagaciones
#Diagramas de caja comparativos
#Grafica la relación entre la tasa de interés
#y las siguientes variables categóricas:
caja(Ir,Ho)   #Propiedad de la vivienda
caja(Ir,Ed)   #Tiempo en el empleo actual
caja(Ir,Ld)   #Plazo de financiamiento (36 o 60 meses)
#Para las siguientes dos variables, la visualización
#más adecuada es una tabla.
#Estudia la variabilidad de las tasas de interés según:
#1) El propósito del prestamo (Lp)
lp_mat <- t(sapply(levels(Lp),
            function(s)
               c(sum(Lp==s), median(Ir[Lp==s]),
                 wilcox.test(Ir~Lp==s)\(\$\)p.value)
              )
            )
colnames(lp_mat) <- c("frec","mediana","p_valor")
lp_mat <- as.data.frame(lp_mat)
lp_mat <- lp_mat[order(lp_mat\(\$\)frec,decreasing=TRUE),]
lp_mat
#2) El estado de residencia del prestatario:
st_mat <- t(sapply(levels(St),
            function(s)
               c(sum(St==s), median(Ir[St==s]),
                 wilcox.test(Ir~St==s)\(\$\)p.value)
              )
            )
colnames(st_mat) <- c("frec","mediana","p_valor")
st_mat <- as.data.frame(st_mat)
st_mat <- st_mat[order(st_mat\(\$\)frec,decreasing=TRUE),]
st_mat
Como primer paso del análisis exploratorio, se genera un resumen con las principales estadísticas del data frame. Esto lo hace la instrucción summary(loandata), tras lo cual se imprime lo siguiente:
       Ar              Af              Ir          Ld
Min.   : 1000   Min.   :  200   Min.   :0.0542   36:1944
1st Qu.: 6000   1st Qu.: 6000   1st Qu.:0.1016   60: 548
Median :10000   Median :10000   Median :0.1311
Mean   :12431   Mean   :12038   Mean   :0.1308
3rd Qu.:17000   3rd Qu.:16000   3rd Qu.:0.1580
Max.   :35000   Max.   :35000   Max.   :0.2489

                  Lp            DtIR              St
debt_consolidation:1306   Min.   :0.0000   CA     : 432
credit_card       : 442   1st Qu.:0.0975   NY     : 253
other             : 197   Median :0.1533   TX     : 174
home_improvement  : 152   Mean   :0.1540   FL     : 169
major_purchase    : 101   3rd Qu.:0.2068   IL     : 101
small_business    :  87   Max.   :0.3491   GA     :  97
(Other)           : 207                    (Other):1266

        Ho             I                  Fi      
MORTGAGE:1146   Min.   :   588.5   Min.   :642.5
NONE    :   0   1st Qu.:  3500.0   1st Qu.:682.5
OTHER   :   5   Median :  5000.0   Median :702.5
OWN     : 200   Mean   :  5687.6   Mean   :708.4
RENT    :1141   3rd Qu.:  6800.0   3rd Qu.:727.5
                 Max.   :102750.0   Max.   :832.5

      Ocl             Rcb              Inq
Min.   : 2.00   Min.   :     0   Min.   :0.0000
1st Qu.: 7.00   1st Qu.:  5612   1st Qu.:0.0000
Median : 9.00   Median : 10978   Median :0.0000
Mean   :10.07   Mean   : 15263   Mean   :0.9013
3rd Qu.:13.00   3rd Qu.: 18900   3rd Qu.:1.0000
Max.   :38.00   Max.   :270800   Max.   :9.0000

       Ed    
10+    :653
< 1    :247
2      :244
3      :234
5      :201
4      :192
(Other):721

Para las variables cuantitativas, la instrucción summary(...) devuelve una tabla con las principales medidas de posición (mínimo, 1er cuartíl, mediana y media, 3er cuartíl, máximo). Para las variables categóricas (o variables tipo "factor", como se les conoce en R), summary(...) devuelve una tabla de frecuencias para algunos niveles de la variable (los más frecuentes). Estos resultados permiten apreciar rápidamente cuál rango de valores asume cada variable.  Por ejemplo, podemos observar que la distribución de la variable Ar, en términos de los estadísticos de posición más importantes, es bastante similar a la de la variable Af. Esto tiene bastante sentido, pues esperaríamos que el monto solicitado y el monto financiado sean muy parecidos, una vez aprobado el préstamo.  Nótese el uso de la instrucción attach(...) al principio del script para referirse fácilmente a las variables de loandata en lo sucesivo.

Otra tabla bastante útil en un análisis exploratorio es la tabla de las correlaciones entre las variables.  Esto por cierto sería muy útil para estudiar la colinealidad o multicolinealidad de las variables, según se exige para el trabajo de este semestre.  La instrucción cor(...) en R genera una matriz cuadrada de correlaciones entre todas las variables.  Como cada variable está perfectamente correlacionada consigo misma, los elementos de la diagonal son todos "1".  De hecho,  una correlación de "1" o "-1" indica una colinealidad perfecta entre dos variables.  Puede consultar más sobre esto en el artículo de wikipedia sobre correlación lineal.  La matriz de correlación sólo tiene sentido para variables cuantitativas del data frame, lo cual en este caso se determina por medio de la instrucción cor(loandata[,c("Ar","Af","Fi","I","Ocl","Rcb","Inq","Ir")]) :

              Ar          Af           Fi           I
Ar    1.00000000  0.97022602  0.083040383  0.39109060
Af    0.97022602  1.00000000  0.073791988  0.37468574
Fi    0.08304038  0.07379199  1.000000000  0.12355539
I     0.39109060  0.37468574  0.123555388  1.00000000
Ocl   0.19680145  0.18779714 -0.090039520  0.17180076
Rcb   0.29277055  0.26116166  0.003217914  0.35936379
Inq  -0.02721561 -0.06224654 -0.092828774  0.03398569
Ir    0.33141077  0.33627376 -0.709911785  0.01231114
DtIR  0.07985656  0.09177385 -0.217596139 -0.16376264
             Ocl         Rcb         Inq          Ir
Ar    0.19680145 0.292770550 -0.02721561  0.33141077
Af    0.18779714 0.261161657 -0.06224654  0.33627376
Fi   -0.09003952 0.003217914 -0.09282877 -0.70991178
I     0.17180076 0.359363787  0.03398569  0.01231114
Ocl   1.00000000 0.290582979  0.10790657  0.09109025
Rcb   0.29058298 1.000000000  0.01285580  0.06042262
Inq   0.10790657 0.012855801  1.00000000  0.16846322
Ir    0.09109025 0.060422621  0.16846322  1.00000000
DtIR  0.37172725 0.188286897  0.01126195  0.17143913
            DtIR
Ar    0.07985656
Af    0.09177385
Fi   -0.21759614
I    -0.16376264
Ocl   0.37172725
Rcb   0.18828690
Inq   0.01126195
Ir    0.17143913
DtIR  1.00000000

Por razones tipográficas de espacio, la matriz de correlación de arriba se dividió en tres segmentos: el primero con las primeras cuatro columnas de la matriz, el segundo en el renglón de abajo con las siguientes cuatro columnas de la matriz y la última columna de la matriz en el tercer renglón. Nótese que la correlación de cada variable consigo misma es "1". También se puede observar que las variables Ar y Af están muy correlacionadas (correlación mayor a 97%). Esto implica que incluir ambas variables en un mismo modelo de regresión lineal puede generar un problema de colinealidad o multicolinealidad (para más detalles, puede consultar la sección 14.4 del libro "Probabilidad y Estadística" de G. Canavos). Ya se había comentado anteriormente sobre la relación (semántica) entre ambas variables- en lo sucesivo consideraremos solamente a la variable Ar, porque el monto solicitado del financiamiento es la información previa necesaria para decidir el monto a financiar y la tasa de interés del crédito.  También podemos notar que la puntuación FICO (Fi) y la tasa de interés (Ir) tienen bastante correlación (-0.71).  Esto indica que la variable Fi es una buena candidata para incluirse en un modelo de regresión lineal con la tasa de interés como variable dependiente.  Además, el signo negativo de la correlación indica que el coeficiente de regresión para la variable Fi en el modelo lineal también debería ser negativo.

La puntuación FICO del solicitante está muy correlacionada con la tasa de interés del préstamo. Pero a su vez, como vimos en la primera parte de esta serie (The Lending Club - Parte I), muchas de las variables en este data frame son tomadas en cuenta para el cálculo de la calificación FICO. Entonces, por una parte esperaríamos cierta correlación entre esas variables y la calificación FICO.  Si esas variables se incluyen en el modelo lineal, pudiésemos estar ante un problema de variables de confusión (confounder variables).  Las variables de confusión son aquellas que están correlacionadas con la variable dependiente y con alguna o algunas de las otras variables independientes del modelo.  El problema que generan las variables de confusión es que a veces, sus efectos sobre la variable dependiente pueden ser exagerados. También puede ocurrir lo que se llama un efecto supresor. Puede consultar más sobre estos temas en este blog. Por nuestra parte, algunos de estos conceptos saldrán a relucir a medida que iremos ensayando distintos modelos de regresión lineal.

A continuación podemos observar algunas gráficas.  La primera (Fig. 1) es un histograma de las tasas de interés:

 Fig. 1 - Histograma de las tasas de interés
 Esta variable tiene una distribución casi acampanada ... ¡Un momento! ¿Qué es ese segundo pico que se observa a la izquierda, en el intervalo [0,06 - 0,08)?  Bueno, una variable así difícilmente sea normalmente distribuida, lo cual no es un problema en sí.  Sin embargo, llama la atención que exista un grupo tan significativo de prestamos con tasas de interés en ese rango.  Quizás, alguna de las variables independientes pueda explicar ese comportamiento...

Seguimos con la parte más ilustrativa de nuestro análisis exploratorio, que son las gráficas de dispersión entre la tasa de interés y las otras variables cuantitativas (Fig. 2):


Fig. 2 - Gráficas de dispersión de las variables independientes cuantitativas respecto a la variable dependiente Ir.

 (a) Ar / Ir
 (b) Fi / Ir
(c) I / Ir
(d) Ocl / Ir
(e) DtIR / Ir
(f) Rcb / Ir
(g) Inq/ Ir

 Los diagramas de dispersión de la Figura 2 confirman que, entre todas las variables independientes, la calificación FICO (Fi) es la más fuertemente asociada a la tasa de interés (Ir).  Esto era de esperarse, pero el diagrama de dispersión de la Figura 2.b. revela más detalles sobre esta asociación: la curva lowess (la línea verde oscura) tiene la misma pendiente hasta una puntuación FICO de 750 (aproximadamente, o a pepa de ojo).  A partir de 750 puntos en la calificación FICO, la pendiente de la curva lowess se hace más horizontal.  Esto implica que a mayor puntuación FICO, menor tasa de interés del préstamo, pero a partir de 750 puntos FICO, la diferencia no es tan grande.  Dado la magnitud de la asociación entre estas dos variables, la recta lineal quizás no sea el tipo de asociación más idónea entre estas variables.

Otro patron marcado según la curva lowess se puede observar (ver Figura 2.a) en la asociación del monto solicitado para el financiamiento (Ar) y la tasa de interés (Ir), aunque esta asociación no es tan marcada como la asociación Fi-Ir, cuyos puntos en el diagrama de dispersión son menos dispersos respecto a la curva lowess. También se observa una relación creciente entre la cantidad de líneas de crédito abiertas y la tasa de interés (Figura 2.d).   Esta asociación podría no ser no-lineal, dado la convexidad de la curva lowess que se observa en la gráfica.

La variable DtIr (relación Deuda-Ingresos) también tiene una asociación creciente con la tasa de interés (ver Figura 2.e).  Sin embargo, dada la baja correlación entre estas variables (de apenas 0.17 según la matriz de correlación de arriba) y el alto grado de dispersión de los puntos, es posible que esta variable no sea significativa en un modelo de regresión.  La Figura 2.g revela un patrón interesante: para 0 indagaciones (solicitudes de reportes de historial crediticio), las tasas de interés son más bajas.  Para 1 o más indagaciones, las tasas de interés no difieren significativamente.  Esto indica que posiblemente sea conveniente transformar la variable Inq a una variable indicadora según sea Inq=0 o no.

Las otras dos variables, ingresos mensuales (I) y balance rotativo de crédito (Rcb) contienen muchos datos atípicos hacia el extremo derecho para ser útiles.  Estos datos atípicos (en forma de ingresos mensuales astronomicamente altos por ejemplo) podrían afectar la regresión en formas no deseadas, por lo cual su inclusión en un modelo de regresión quizás no sea una buena idea.

Para explorar la asociación entre la tasa de interés y otras variables categóricas, lo más conveniente es usar diagramas de caja comparativos. Así se hizo para las variables Ho, Ed y Ld, como se muestra en la Figura 3:

(a) Ir ~ Ho
(b) Ir ~ Ed
(c) Ir ~ Ld

Las primeras dos gráficas de caja (Figuras 3.a y 3.b) no revelan asociaciones significativas entre la tasa de interés y las respectivas variables. En contraste, La Figura 3.c indica que si hay una relación significativa entre la tasa de interés y la duración del préstamo: los prestamos de 36 meses tienen tasas de interés signficativamente más bajas.

Para las otras dos variables cualitativas - el estado de residencia (St) y el propósito del préstamo (Lp) - no se hicieron diagramas de caja comparativos porque estas variables tienen demasiados niveles (46 estados y 14 propósitos de préstamo diferentes).  Para cada una de estas variables, se optó por generar tablas indicando la frecuencia de cada nivel, la tasa de interés mediana y el p-valor del contraste Wilcoxon de diferencia entre medianas (consultar el artículo en Wikipedia). La idea es verificar si para algún nivel determinado de estas variables, las tasas de interés difieren significativamente de aquellas asociadas a los otros niveles. Para la variable estado (St):

   frec mediana    p_valor
CA  432 0.13110 0.69246237
NY  253 0.13110 0.82515314
TX  174 0.13110 0.30747046
FL  169 0.13110 0.88525055
IL  101 0.12530 0.22145716
GA   97 0.12180 0.27619025
PA   96 0.13045 0.23581778
NJ   92 0.12120 0.38675613
VA   78 0.12550 0.78497883
MA   73 0.12120 0.38183801
OH   71 0.12230 0.10542538
MD   68 0.13790 0.62463807
NC   64 0.12405 0.34075690
CO   61 0.13110 0.92712927
WA   58 0.13110 0.89902872
CT   50 0.13140 0.29789052
AZ   46 0.13110 0.86390489
MI   45 0.14090 0.01538049
MN   38 0.13545 0.34930242
:    :     :         :
:    :     :         :
Esta tabla (dada aquí de forma parcial) enumera los 46 estados en orden descendente por frecuencia de observaciones. Podemos observar que para el estado MI (Michigan), la tasa de interés mediana es significativamente distinta de la de los otros estados (con un p-valor de 1% en el contraste de Wilcoxon). Esto implica que los prestamos de los solicitantes de ese estado tienen una tasa de interés más alta, por alguna razón. Sin embargo, como solo 45 de las 2492 observaciones son de ese estado, incluir la variable St en un modelo de regresión lineal solamente para ajustar mejor a un grupo que representa menos del 2% de las observaciones sería un despropósito. Seguidamente tenemos una tabla similar para el propósito del prestamo: 

                   frec mediana      p_valor debt_consolidation 1306 0.13490 6.704956e-11 credit_card         442 0.13110 9.769974e-01 other               197 0.13060 6.911076e-01 home_improvement    152 0.11130 2.162582e-06 major_purchase      101 0.11120 2.559098e-08 small_business       87 0.12840 6.169896e-01 car                  50 0.10475 9.231269e-04 wedding              39 0.12210 2.223396e-01 medical              30 0.13110 8.066417e-02 moving               29 0.13110 6.110691e-01 vacation             21 0.12120 3.160609e-01 house                20 0.13085 8.177116e-01 educational          14 0.09755 4.628680e-02 renewable_energy      4 0.09130 1.336665e-01
Para esta variable, si se observa un subgrupo grande (con 1306 observaciones), cuya tasa de interés difiere significativamente de la de otros grupos (p-valor casi nulo).  Este grupo es el grupo de prestatarios que solicitaron un préstamo para consolidación de deudas (debt consolidation).  Existen otros grupos con tasas de interés significativamente distintas, pero son muy pequeños en relación con el número total de observaciones.  Por cierto, la tasa de interés mediana de los prestamos solicitados para consolidación de deudas (13,49%) es mayor a la tasa de interés mediana general (13,11%).  De esto se deduce que sería conveniente incluir una variable indicadora en el modelo de regresión según sea el propósito del préstamo la consolidación de deudas o no.


Análisis exploratorio de datos - algunas conclusiones

Tras realizar el ejercicio anterior, podemos concluir sobre la importancia de explorar los datos antes de construir los modelos de regresión. Las observaciones realizadas tras este estudio exploratorio se pueden aunar al conocimiento o a las ideas previas que tenemos sobre la temática que estamos estudiando (en este caso, los prestamos personales en EEUU). Esto ayudará a plantear posibles hipótesis sobre las relaciones de las variables en forma de modelos de regresión lineal. Es importante destacar que un análisis exploratorio no es inferencial. Todo lo que observamos hasta este punto queda en forma de conjetura y no es generalizable a la población. Cuando, tras realizar el ajuste por mínimos cuadrados de un modelo de regresión lineal, tenemos los p-valores de la prueba F, los estadísticos T-Student de significatividad de los coeficientes poblacionales y cuando finalmente realicemos un análisis de residuos para validar el modelo, si tendremos los elementos estadísticos requeridos para un estudio inferencial. El análisis exploratorio sirve para guiar al análisis de regresión, el cual haremos en la tercera y última parte de estas entradas del blog...

Si te gustó o te pareció útil este contenido, compártelo en las redes sociales y dale tu voto positivo en el botón "me gusta" de G+, para que otros puedan encontrar el contenido también.