TAREA 1 - MODELOS LINEALES 1

Caso: Banco Atlántida

Se tiene datos sobre una entidad bancaria. El gerente del banco desea saber qué estrategias aplicar para que no solo los clientes adquieran sus servicios de tarjetas de crédito adicionales, sino que también no abandonen este servicio. Para tal fin se ha recolectado datos de 252 clientes que cuentan con el servicio, el conjunto de datos ha sido segmentada en grupos según la Categoría de ingresos que tienen los clientes (Income_Category). (Link del conjunto de datos)

A continuación, se presenta la descripción de las variables en estudio:

  • Customer_Age: Edad del cliente (en años).

  • Gender: Género del cliente (F/M).

  • Education_Level: Nivel de educación del cliente (College/Doctorate/Graduate/High School/Post- Graduate/Uneducated).

  • Marital_Status: Estado civil del cliente (Divorced/Married/Single/Unknown).

  • Income_Category: Categoría de ingresos anuales de los clientes (Less than $40K/$40K - $60K/$60K - $80K).

  • Card_Category: Categoría de tarjeta de crédito del cliente (Blue/Gold/Silver).

  • Months_on_book: Periodo de relación con el banco.

  • Total_Relationship_Count: Número total de productos en poder del cliente.

  • Credit_Limit: Línea de crédito abierta para comprar (promedio de los últimos 12 meses en miles de dólares).

  • Total_Revolving_Bal: Saldo rotatorio total en la tarjeta de crédito (en miles de dólares).

  • Avg_Open_To_Buy: Crédito abierto promedio para comprar (en miles de dólares).

  • Total_Trans_Ct: Recuento total de transacciones (últimos 12 meses).

CreditCard <- read.csv("BankChurners.csv", sep= ";",header=T, stringsAsFactors = T)
str(CreditCard)
## 'data.frame':    252 obs. of  12 variables:
##  $ Customer_Age            : int  39 40 46 56 50 62 41 50 38 49 ...
##  $ Gender                  : Factor w/ 2 levels "F","M": 1 2 1 1 1 1 1 1 1 1 ...
##  $ Education_Level         : Factor w/ 7 levels "College","Doctorate",..: 3 3 4 6 3 7 3 3 7 3 ...
##  $ Marital_Status          : Factor w/ 4 levels "Divorced","Married",..: 3 3 3 3 2 3 2 2 2 1 ...
##  $ Income_Category         : Factor w/ 3 levels "$40K - $60K",..: 3 1 3 3 3 3 3 3 1 1 ...
##  $ Card_Category           : Factor w/ 3 levels "Blue","Gold",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Months_on_book          : int  26 36 36 46 38 55 36 40 36 30 ...
##  $ Total_Relationship_Count: int  3 3 1 4 2 6 2 3 3 1 ...
##  $ Credit_Limit            : num  1876 6033 3759 2258 9546 ...
##  $ Total_Revolving_Bal     : int  1536 0 0 0 960 2517 0 2065 0 1648 ...
##  $ Avg_Open_To_Buy         : num  340 6033 3759 2258 8586 ...
##  $ Total_Trans_Ct          : int  47 74 106 72 111 63 78 47 85 71 ...

Prueba para el vector de medias con matriz de varianza-covarianza conocida

Prueba de Hipótesis

\(H_0\) : \(\mu\) = \(\mu_0\)

\(H_1\): \(\mu\) \(\neq\) \(\mu_0\)

Estadístico de Prueba

\(T = n( \bar{x} - \mu_0)'\Sigma^{-1}(\bar{x} - \mu_0) \sim X^2_p\)

Se rechaza \(H_0\) si \(T> X^2_{1- \alpha ,p}\) , por lo tanto el p-value = 1 - \(P(X^2_p,T)\)


Consideramos de la data: CreditCard Las variables:

  • Months_on_book: Periodo de relación con el banco.
  • Total_Trans_Ct: Recuento total de transacciones (últimos 12 meses).
mu0 <- c(35.0, 60.1)
n <- nrow(CreditCard) 
sigma <- matrix(c(63, 1.1, 1.1, 550),nrow=2) ; sigma
##      [,1]  [,2]
## [1,] 63.0   1.1
## [2,]  1.1 550.0
meanx <- colMeans(CreditCard[c(7,12)]) ; meanx
## Months_on_book Total_Trans_Ct 
##       36.08333       64.68651
# Aplicando la Prueba de matriz de varianza-covarianza:
T <- n*t(meanx-mu0)%*%solve(sigma)%*%(meanx-mu0) ; T
##          [,1]
## [1,] 14.25378
# Valor critico:
qchisq(1 - 0.05,2)  ## Si T > Tcrit ----> RHo
## [1] 5.991465
# Formato Sistematico:
pvalor= 1-pchisq(T,2) 
pvalor              ## Si pvalor <= alpha = 0.01 (**)  ----> RHo
##              [,1]
## [1,] 0.0008032132

Prueba para el vector de medias con matriz de varianza-covarianza desconocida

Si la matriz de covarianza es desconocida el estadístico de prueba es:

\(T = \frac{n-p}{p}( \bar{x} - \mu_0)'\Sigma^{-1}(\bar{x} - \mu_0) \sim F_{p,n-p}\)

Se rechaza \(H_0\) si \(T > F_{1- \alpha ,p,n-p}\) , por lo tanto el p-value = 1 - \(P(F_{p,n-p},T)\)

Una variante es

\(T^2 = n( \bar{x} - \mu_0)'\Sigma^{-1}(\bar{x} - \mu_0) \sim \left ( \frac{n-p}{p} \right )F_{p,n-p}\)

Se rechaza \(H_0\) si \(T^2 > \left ( \frac{n-p}{p} \right )F_{p,n-p}\)


Consideramos de la data: CreditCard Las variables:

  • Total_Relationship_Count: Número total de productos en poder del cliente.
  • Total_Revolving_Bal: Saldo rotatorio total en la tarjeta de crédito (en miles de dólares).
  • Total_Trans_Ct: Recuento total de transacciones (últimos 12 meses).
mu0<-c(3.3,1120.5,62.8)
CreditCard1<-CreditCard[c(8,10,12)]

La prueba de Hotellings

HotellingsT2(CreditCard1,mu=mu0,test="chi")
## 
##  Hotelling's one sample T2-test
## 
## data:  CreditCard1
## T.2 = 17.663, df = 3, p-value = 0.0005162
## alternative hypothesis: true location is not equal to c(3.3,1120.5,62.8)

Conclusión: Dado que el p-value (0.0005162) es menor que 0.05, se concluye que hay suficiente evidencia para rechazar la hipótesis nula a favor de la alternativa. Es decir, a un nivel de significancia del 0.05, la media poblacional no es igual a \(\mu_0\). En otras palabras el promedio de Productos en poder del cliente no es igual a 3.3, el Saldo rotatorio promedio en la tarjeta de crédito (en miles de dólares) no es igual a 1120.5 y el Recuento promedio de transacciones no es igual a 62.8.

Prueba de Hotelling: Comparar dos categorías de ingresos anuales de clientes

Prueba de Hipótesis

\(H_0\) : \(\mu_1\) = \(\mu_2\)

\(H_1\): \(\mu_1\) \(\neq\) \(\mu_2\)


La gerencia desea probar si la media de: la Edad del cliente, el Periodo de relación con el banco, el Número total de productos en poder del cliente, Saldo rotatorio total en la tarjeta de crédito y el Recuento total de transacciones de los clientes con es diferente al de los clientes con , con un nivel de significación de 0.05.

#1 *Customer_Age:* Edad del cliente (en años)
#7 *Months_on_book:* Periodo de relación con el banco.
#8 *Total_Relationship_Count:* Número total de productos en poder del cliente.
#10 *Total_Revolving_Bal:* Saldo rotatorio total en la tarjeta de crédito.
#12 *Total_Trans_Ct:* Recuento total de transacciones (últimos 12 meses).



CreditCard[CreditCard$Income_Category =='$40K - $60K',c(1,7,8,10,12)]-> 
  CreditCard40and60
CreditCard[CreditCard$Income_Category =='$60K - $80K',c(1,7,8,10,12)]-> 
  CreditCard60and80
print(hotelling.test(CreditCard40and60,CreditCard60and80))
## Test stat:  7.5223 
## Numerator df:  5 
## Denominator df:  114 
## P-value:  0.2107
# 2da forma:
print(hotelling.test(CreditCard$Customer_Age + 
                       CreditCard$Months_on_book +
                       CreditCard$Total_Relationship_Count + 
                       CreditCard$Total_Revolving_Bal+
                       CreditCard$Total_Trans_Ct ~ CreditCard$Income_Category, 
                     data = CreditCard, perm = F))
## Test stat:  7.5223 
## Numerator df:  5 
## Denominator df:  114 
## P-value:  0.2107

Como el p-value = 0.2107 > \(\alpha\) = 0.05, entonces No se rechaza H0.

Existe suficiente evidencia estadística estadística para No rechazar H0 cuando el nivel de significación es 0.05. Por lo tanto No se puede afirmar que el promedio de: Edad del cliente, el Periodo de relación con el banco, el Número total de productos en poder del cliente, Saldo rotatorio total en la tarjeta de crédito y el Recuento total de transacciones de los clientes con ingresos menores a $40K - $60K es diferente al de los clientes con ingresos de $60K - $80K

Normalidad Multivariada

Prueba de Mardia: Para las Categoría de ingresos anuales de los clientes

mvn(CreditCard40and60,subset = NULL,mvn = "mardia", 
    covariance = FALSE,showOutliers = FALSE)$multivariateNormality
##              Test        Statistic            p value Result
## 1 Mardia Skewness 30.6135466362625  0.679853814680942    YES
## 2 Mardia Kurtosis -2.4797995787475 0.0131456249526376     NO
## 3             MVN             <NA>               <NA>     NO
mvn(CreditCard60and80,subset = NULL,mvn = "mardia", 
    covariance = FALSE,showOutliers = FALSE)$multivariateNormality
##              Test         Statistic            p value Result
## 1 Mardia Skewness  39.4459215621318  0.277795298090789    YES
## 2 Mardia Kurtosis -1.77106194730371 0.0765504009664704    YES
## 3             MVN              <NA>               <NA>    YES
mardia <- mvn(data = CreditCard[c(1,7,8,10,12, 5)], subset="Income_Category", 
              mvnTest = "mardia", multivariatePlot = "qq", 
              multivariateOutlierMethod = "adj", 
              showOutliers = T, showNewData = T) 



Nueva base de datos:

CreditCard2 = CreditCard[c(1,7,8,10,12)] 
head(CreditCard2)
##   Customer_Age Months_on_book Total_Relationship_Count Total_Revolving_Bal
## 1           39             26                        3                1536
## 2           40             36                        3                   0
## 3           46             36                        1                   0
## 4           56             46                        4                   0
## 5           50             38                        2                 960
## 6           62             55                        6                2517
##   Total_Trans_Ct
## 1             47
## 2             74
## 3            106
## 4             72
## 5            111
## 6             63

Prueba de Mardia

mardia2 <- mvn(data = CreditCard2, mvnTest = "mardia")
mardia2$multivariateNormality
##              Test         Statistic            p value Result
## 1 Mardia Skewness  29.9979653129258  0.708223396052756    YES
## 2 Mardia Kurtosis -2.12175903044568 0.0338579786923245     NO
## 3             MVN              <NA>               <NA>     NO

Prueba de Henze-Zirkler

library(MVN)
hz <- mvn(data =CreditCard2, mvnTest = "hz") 
hz$multivariateNormality
##            Test       HZ      p value MVN
## 1 Henze-Zirkler 1.284676 1.833521e-07  NO

Prueba de Royston’s

royston <- mvn(data = CreditCard2, mvnTest = "royston")
royston$multivariateNormality
##      Test        H      p value MVN
## 1 Royston 114.2999 3.091191e-23  NO

Prueba de Energy

energy <- mvn(data = CreditCard2, mvnTest = "energy")
energy$multivariateNormality
##          Test Statistic p value MVN
## 1 E-statistic  1.493643   0.002  NO

Prueba de Shapiro Wilk Generalizada

\(H_0:\) Los datos siguen una distribución normal p-variada

\(H_1:\) Los datos no siguen una distribución normal p-variada

library(mvShapiroTest)
mvShapiro.Test(as.matrix(CreditCard2))
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  as.matrix(CreditCard2)
## MVW = 0.96603, p-value < 2.2e-16

Decisión: Pvalue (2.2e-16) <= alfa (0.05), se rechaza la hipótesis nula.

Conclusión: Existe suficiente evidencia estadística para rechazar la hipótesis nula. La prueba aplicada para probar normalidad multivariante indica que no se cumple que las variables siguen una distribución normal pentavariada.


  1. Universidad Nacional Agraria La Molina, ↩︎