Paquetes utilizados:

library(readxl)
library(ggplot2)
library(dplyr)

Base de datos:

data <- read_excel('C:/Users/matir/OneDrive/Escritorio/Mati/Universidad/2022/Segundo Trimestre/Analitica aplicada a Negocios-Finanzas/Examen/data_ex1.xlsx')

Head de la base:

head(data)
## # A tibble: 6 × 31
##   CHK_ACCT DURATION HISTORY NEW_CAR USED_CAR FURNITURE `RADIO/TV` EDUCATION
##      <dbl>    <dbl>   <dbl>   <dbl>    <dbl>     <dbl>      <dbl>     <dbl>
## 1        0        6       4       0        0         0          1         0
## 2        1       48       2       0        0         0          1         0
## 3        3       12       4       0        0         0          0         1
## 4        0       42       2       0        0         1          0         0
## 5        0       24       3       1        0         0          0         0
## 6        3       36       2       0        0         0          0         1
## # … with 23 more variables: RETRAINING <dbl>, AMOUNT <dbl>, SAV_ACCT <dbl>,
## #   EMPLOYMENT <dbl>, INSTALL_RATE <dbl>, MALE_DIV <dbl>, MALE_SINGLE <dbl>,
## #   MALE_MAR_or_WID <dbl>, `CO-APPLICANT` <dbl>, GUARANTOR <dbl>,
## #   PRESENT_RESIDENT <dbl>, REAL_ESTATE <dbl>, PROP_UNKN_NONE <dbl>, AGE <dbl>,
## #   OTHER_INSTALL <dbl>, RENT <dbl>, OWN_RES <dbl>, NUM_CREDITS <dbl>,
## #   JOB <dbl>, NUM_DEPENDENTS <dbl>, TELEPHONE <dbl>, FOREIGN <dbl>,
## #   RESPONSE <dbl>

A- Análisis Exploratorio de Datos (5 puntos)

1- Concéntrese primero en las variables DURATION y AMOUNT. Explore estas variables en el conjunto de datos: ¿Hay valores atípicos y/o faltantes? Si encuentra valores atípicos, elimínelos.

Primero es necesario hacer una tabla de resumen con estadisticos basicos para identificar posibles outliers y NA´s (datos faltantes).

-Primero con la variable “DURATION”:

summary(data$DURATION)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     4.0    12.0    18.0    20.9    24.0    72.0
print(paste("cantidad de NA´s: ", sum(is.na(data$DURATION))))
## [1] "cantidad de NA´s:  0"

Representación gáfica de la distribucion de datos:

plot1 <- ggplot(data, aes(x=DURATION)) + 
  geom_density(color="darkblue", fill="lightblue",alpha=0.7)

plot1+ geom_vline(aes(xintercept=mean(DURATION)),
            color="blue", linetype="dashed", size=1) + theme_classic()

Un boxplot para visualizar posibles outliers:

ggplot(data, aes(x=DURATION)) + geom_boxplot(outlier.colour="red", outlier.shape=8,
                outlier.size=3, dotsize=3, fill='#A4A4A4', color="black") + theme_classic()

Suposicion: Asumiremos que un outlier corresponderá a una observación que se encuentre sobre los 60 meses de duración. Si usamos otro criterio, la base tenderá a reducirse demasiado.

dim(data)
## [1] 1000   31
data <- subset(data, DURATION < 60)

dim(data)
## [1] 986  31

Visualizamos nuevamente el boxplot y distribuciónr:

ggplot(data, aes(x=DURATION)) + geom_boxplot(outlier.colour="red", outlier.shape=8,
                outlier.size=3, dotsize=3, fill='#A4A4A4', color="black") + theme_classic()

ggplot(data, aes(x=DURATION)) + 
  geom_density(color="darkblue", fill="lightblue",alpha=0.7)+ geom_vline(aes(xintercept=mean(DURATION)),
            color="blue", linetype="dashed", size=1) + theme_classic()

-Ahora, con la variable “AMOUNT.”:

summary(data$AMOUNT)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     250    1360    2290    3181    3911   18424
print(paste("cantidad de NA´s: ", sum(is.na(data$AMOUNT))))
## [1] "cantidad de NA´s:  0"

Representación gáfica de la distribucion de datos:

plot1 <- ggplot(data, aes(x=AMOUNT)) + 
  geom_density(color="darkblue", fill="lightblue",alpha=0.7)

plot1+ geom_vline(aes(xintercept=mean(AMOUNT)),
            color="blue", linetype="dashed", size=1) + theme_classic()

Un boxplot para visualizar posibles outliers:

ggplot(data, aes(x=AMOUNT)) + geom_boxplot(outlier.colour="red", outlier.shape=8,
                outlier.size=3, dotsize=3, fill='#A4A4A4', color="black") + theme_classic()

Como vemos nuevamente que existen outliers, haremos lo mismo que con la variable anterior:

Consideraremos outliers a montos sobre los 15.000. Si usamos un criterio mas acotado tenderemos a eliminar demasiadas observaciones en la base.

dim(data)
## [1] 986  31
data <- subset(data, AMOUNT < 15000)

dim(data)
## [1] 982  31

Visualizamos nuevamente el boxplot y distribuciónr:

ggplot(data, aes(x=AMOUNT)) + geom_boxplot(outlier.colour="red", outlier.shape=8,
                outlier.size=3, dotsize=3, fill='#A4A4A4', color="black") + theme_classic()

ggplot(data, aes(x=AMOUNT)) + 
  geom_density(color="darkblue", fill="lightblue",alpha=0.7)+ geom_vline(aes(xintercept=mean(AMOUNT)),
            color="blue", linetype="dashed", size=1) + theme_classic()