En este documento se desarrollará un análisis descriptivo donde se clasificará y analizará la información extraída de una muestra de 100 clientes de un banco que contiene su información de sus cuentas de créditos. La muestra será tomada de la base de datos que ofrece R “datos_credito” usando una semilla compuesta por los últimos dígitos de los documentos de identidad de los integrantes del grupo.
Teniendo en cuenta que se hará un análisis estadístico de tipo descriptivo haremos uso de las definiciones, más adelante explicadas, de variable cuantitativa y cualitativa; con el fin de dividir el análisis de manera que su comprensión sea más sencilla.
Un análisis descriptivo de datos hace referencia a la clasificación, tabulación, ordenamiento y visualización de los datos de una muestra. Las variables estudiadas se pueden dividir entre: cualitativas y cuantitativas.
Se planto una semilla con el ultimo dígito del documento de identidad de cada integrante
set.seed(1810)
Se utiliza como base de datos: datos_credito con una muestra de cien datos elegidos a partir de la semilla plantada
datos.c <- data.frame(datos_credito)
muestra2 <- datos.c[sample(nrow(datos.c),size=100),0:14]
View(datos_credito)
View(muestra2)
attach(muestra2)
Son aquellas variables que no se pueden definir en una escala númerica y se refieren a las cualidades que se le pueden atribuir a un objeto. En este caso tendremos 5 variables que cumplen con esto (Estad, Vivienda, Estado civil, Registros y Trabajo).
Condición que define el situación de los creditos de las cien personas seleccionadas
frec_estado <- table(muestra2$Estado)
frec_estado
##
## malo bueno
## 31 69
Esta tabla nos permite observar qué cantidad de personas estan clasificados en cada uno de los estados posibles de los creditos; pudiendo variar entre ellos desde el estado ‘Bueno’ hasta el estado ‘Malo’. De esta manera sabemos que para el grupo del estado ‘Bueno’ existen 69 personas en dicha condición, mientras que para el estado ‘Malo’ hay 31 personas. Ahora, como la mejor situación en los creditos es ‘Bueno’ lo ideal es que la mayoria de las personas se encuentren en dicho porcentaje, favoreciendo de tal manera su vida crediticia; este estado puede tambien relacionarse con sus ingresos y activos.
count2 <-c(" Malo 31%","Bueno 69%")
torta2 <- pie3D(frec_estado, labels= count2,radius = 1.5,
explode=0.5, height=0.3,labelcex = 2.,theta=pi/5,
main="Diagrama de tarta frecuencia de variable Estado")
Define los tipos de vivienda presentadas en la muestra2 por las cien personas entrevistadas
frec_vivienda <- table(muestra2$Vivienda)
frec_vivienda
##
## ignorar otra propietario padres privado alquila
## 0 4 48 21 6 21
Esta tabla representa la cantidad de personas que se encuentran en las posibles viviendas. En este caso 48 personas son propietarias de vivienda segun la muestra. Consiguiente a esto, 21 personas viven con sus padres y el mismo numero alquila o arrienda vivienda, 6 son privados y 4 corresponden a otro tipo de vivienda.
class(muestra2$Vivienda);
## [1] "factor"
levels(muestra2$Vivienda);
## [1] "ignorar" "otra" "propietario" "padres" "privado"
## [6] "alquila"
str(muestra2$Vivienda);
## Factor w/ 6 levels "ignorar","otra",..: 4 3 3 6 3 4 3 2 3 3 ...
mlv(muestra2$Vivienda);
## [1] propietario
## Levels: ignorar otra propietario padres privado alquila
table(muestra2$Vivienda);
##
## ignorar otra propietario padres privado alquila
## 0 4 48 21 6 21
tabla_vivienda = table(muestra2$Vivienda)
tabla_vivienda = tabla_vivienda[-which(names(tabla_vivienda) == "ignorar")]
ggplot(data = data.frame(Categoria = names(tabla_vivienda),
Frecuencia = as.numeric(tabla_vivienda)),
aes(x = Categoria, y = Frecuencia, fill = Categoria)) +
geom_bar(stat = "identity", color = "black") +
labs(title = "Vivienda",
x = "Categoría",
y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 0.7, color = "black",
size = 10),
plot.title = element_text(hjust = 0.5))
Explica los tipos de compromisos y relaciones interpersonales que poseen las cien personas (casado, soltero, viudo, etc).
frec_estadocivil <- table(muestra2$EstadoCivil)
frec_estadocivil
##
## divorciado casado separado soltero viudo
## 1 73 1 25 0
Las personas entrevistadas estan divididas en soltero casado divorciado y viudo. En términos porcentuales se sabe que: solteros y viudos representan cada uno un 1% de la muestra. Por otro lado, las personas casadas son un 74% de la muestra lo que significa que es el estado civil más frecuente. Por último los divorciados representan el 21% de la muestra.
class(EstadoCivil)
## [1] "factor"
levels(EstadoCivil)
## [1] "divorciado" "casado" "separado" "soltero" "viudo"
str(EstadoCivil)
## Factor w/ 5 levels "divorciado","casado",..: 1 2 2 2 2 4 2 4 2 2 ...
mlv(EstadoCivil)
## [1] casado
## Levels: divorciado casado separado soltero viudo
table(EstadoCivil)
## EstadoCivil
## divorciado casado separado soltero viudo
## 1 73 1 25 0
ggplot(muestra2, aes(x = EstadoCivil)) + geom_bar(fill = "orchid3")+
labs(title = "Grafica de Estado Civil", x= "EstadoCivil", y= "N°Personas")
Esta variable indica si las personas ya tenian información antes en la base de datos.
frec_registros <- table(muestra2$Registros)
frec_registros
##
## no sí
## 85 15
La tendencia de los registros fue hacia el “no” siendo la moda con una frecuencia absoluta de 85 votos y el “si” con 15 de las 100 muestras que se tomaron respectivamente. Entendiendose entonces que la mayoría de los clientes son nuevos o anteriormente no tenian registros en la base de datos de los creditos.
class(muestra2$Registros);
## [1] "factor"
levels(muestra2$Registros);
## [1] "no" "sí"
str(muestra2$Registros);
## Factor w/ 2 levels "no","sí": 1 1 1 1 1 1 1 2 1 1 ...
mlv(muestra2$Registros);
## [1] no
## Levels: no sí
table(muestra2$Registros);
##
## no sí
## 85 15
tabla_registros = table(muestra2$Registros)
ggplot(data = data.frame(Categoria = names(tabla_registros),
Frecuencia = as.numeric(tabla_registros)),
aes(x = Categoria, y = Frecuencia, fill = Categoria)) +
geom_bar(stat = "identity", color = "black") +
labs(title = "Registros",
x = "Categoría",
y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 0.1, size = 11,
color = "black"),
axis.text.y = element_text(size = 10),
plot.title = element_text(hjust = 0.5))
Esta variable define los tipos de trabajo que tienen las personas entrevistados (Fijo, Freelance, Otros)
frec_trabajo <- table(muestra2$Trabajo)
frec_trabajo
##
## fijo freelance otros tiempo parcial
## 62 22 2 14
Esta tabla explica la ccantidad de personas en cada modalidad de empleo; En el tipo de trabajo fijo existen 62 personas, siendo más del cincuenta porcienta de las personas; Freelance con 22 siendo el siguiente porcentaje más alto; las personas con trabajo parcial 14 y con otros tiempo solo 2, siendo la minoria de la muestra.
is.data.frame(frec_trabajo)
## [1] FALSE
dt <- as.data.frame(frec_trabajo)
is.data.frame(dt)
## [1] TRUE
dt
## Var1 Freq
## 1 fijo 62
## 2 freelance 22
## 3 otros 2
## 4 tiempo parcial 14
attach(dt)
dt <- rename(dt, clase = Var1, valor= Freq)
diag_barra <- ggplot(dt, aes(x = clase, y=valor)) +
geom_col()
count<-c(62,22,2,14)
diag_barra <- ggplot(dt, aes(x = clase, y = valor, fill = clase)) +
geom_bar(stat = 'identity') +
scale_fill_manual(values = c("#FF6A6A","#CD6090","#B22222","#EE7600"))+
geom_text(aes(label = count), vjust = -1, colour = "black") +
ylim(c(0,70))
diag_barra
Son aquellos datos que son cuantificables en una escala numérica. En este caso tendremos 9 variables con estas características.
Define el tiempo que ha estado la persona dentro de la base de datos escogida.
#Tabla de frecuencia Antiguedad
A_tab.frecuencia <- ds_freq_table(muestra2, Antiguedad, bins=5)
A_tab.frecuencia
## Variable: Antiguedad
## |-----------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-----------------------------------------------------------------------|
## | 0 - 7.8 | 66 | 66 | 66 | 66 |
## |-----------------------------------------------------------------------|
## | 7.8 - 15.6 | 22 | 88 | 22 | 88 |
## |-----------------------------------------------------------------------|
## | 15.6 - 23.4 | 7 | 95 | 7 | 95 |
## |-----------------------------------------------------------------------|
## | 23.4 - 31.2 | 4 | 99 | 4 | 99 |
## |-----------------------------------------------------------------------|
## | 31.2 - 39 | 1 | 100 | 1 | 100 |
## |-----------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-----------------------------------------------------------------------|
El promedio de la antigüedad de los clientes en la muestra obtenida es de 7.48. El percentil de 50%( la mitad) está desde los 12 años hacia abajo. Los clientes con una antigüedad de dos años son los más frecuentes. El 25% de los clientes de la muestra tiene una Antigüedad de 2 años para abajo. Mientras el 75% se encuentra con una antigüedad de 12 años para abajo. Y el 100% está por debajo de 30 años. El coeficiente de varianza se encuentra en 0.933 lo que significa que la antigüedad tiene una distribución heterogénea. Los datos están desviados de la media un 6.97.
mean(Antiguedad)
## [1] 6.76
cat("La media de Antiguedad es", mean(Antiguedad))
## La media de Antiguedad es 6.76
median(Antiguedad)
## [1] 3
cat("La mediana de Antiguedad es", median(Antiguedad))
## La mediana de Antiguedad es 3
mlv(Antiguedad)
## [1] 1
cat("La moda de Antiguedad es", mlv(Antiguedad))
## La moda de Antiguedad es 1
max(Antiguedad)
## [1] 39
cat("El máximo de Antiguedad es", max(Antiguedad))
## El máximo de Antiguedad es 39
kurtosis(Antiguedad)
## [1] 2.685133
## attr(,"method")
## [1] "excess"
cat("La cantidad de valores atípicos en Antiguedad es:",kurtosis(Antiguedad))
## La cantidad de valores atípicos en Antiguedad es: 2.685133
cat("Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.")
## Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.
ggplot(data = muestra2 ,
mapping =aes(x=Antiguedad))+
geom_histogram(bins = 15 , fill= "aquamarine2" , col ="#080808") +
labs(title = "Histograma de Antiguedad",
x = "Años", y = "N°Personas")+
theme_minimal() +
theme(axis.text.x = element_text( hjust = 0.7, color = "black",
size = 10),
plot.title = element_text(hjust = 0.5))
boxplot(Antiguedad, main = "Diagrama de Caja de Dispersion: Curtosis de Antiguedad", col = 'darkorchid', horizontal = TRUE,
pars = list(boxwex = 1,4, staplewex = 0.8, outwex = 0.8))
Esto significa la cantidad de tiempo a la que se han diferido los creditos de las personas
#Tabla de frecuencia Plazo
P_tab.freq <- ds_freq_table(muestra2, Plazo, bins=4)
P_tab.freq
## Variable: Plazo
## |-------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-------------------------------------------------------------------|
## | 12 - 24 | 15 | 15 | 15 | 15 |
## |-------------------------------------------------------------------|
## | 24 - 36 | 30 | 45 | 30 | 45 |
## |-------------------------------------------------------------------|
## | 36 - 48 | 37 | 82 | 37 | 82 |
## |-------------------------------------------------------------------|
## | 48 - 60 | 63 | 145 | 63 | 145 |
## |-------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-------------------------------------------------------------------|
El promedio de las Plazos de créditos en meses de los clientes es 44.52 meses. El dato central, o percentil 50, es 48 meses de plazo de crédito. La el plazo de crédito que se encuentra con más frecuencia en la muestra es 60 meses . El 25% de los plazos de la muestra son menores a 36 meses. El 75%de los plazos son menores a 48 meses . El 100% de los plazos están debajo de los 60 meses. El coeficiente de variación (0.37) indica que las edades tienden a tener una distribución más homogénea. Los datos están desviados de la media con un valor de 16.47, por lo que seguramente hay varios datos atípicos . La distribución de los datos es negativa (-0. 7) con respecto a la media; es decir, tiene más datos hacia la izquierda de la distribución.
#medidas de tendencia central
P_barx <- round(mean(Plazo), 2)
P_barx
## [1] 46.74
cat("La media de Plazo es", round(mean(Plazo), 2))
## La media de Plazo es 46.74
P_Md <- round(ds_mode(Plazo),2)
P_Md
## [1] 60
cat("La moda de Plazo es", round(ds_mode(Plazo), 2))
## La moda de Plazo es 60
P_Med <- round(median(Plazo),2)
P_Med
## [1] 48
cat("La mediana de Plazo es", round(median(Plazo), 2))
## La mediana de Plazo es 48
#medidas de localización
Plazo.sort <- sort(Plazo)
Plazo.sort
## [1] 12 12 12 12 12 18 18 24 24 24 24 24 24 24 24 36 36 36 36 36 36 36 36 36 36
## [26] 36 36 36 36 36 36 36 36 36 36 36 36 48 48 48 48 48 48 48 48 48 48 48 48 48
## [51] 48 48 54 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
## [76] 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60
P_Min <- round(min(Plazo.sort),2)
P_Min
## [1] 12
cat("El mínimo de Plazo es", round(min(Plazo.sort),2))
## El mínimo de Plazo es 12
P_Max <- round(max(Plazo.sort),2)
P_Max
## [1] 60
cat("El máximo de Plazo es", round(max(Plazo.sort),2))
## El máximo de Plazo es 60
P_Q1 <- round(quantile(x=Plazo.sort, probs = 0.25, type=6), 2)
P_Q1
## 25%
## 36
cat("El cuartil 1 (25%) de Plazo es", round(quantile(x=Plazo.sort, probs = 0.25, type=6), 2))
## El cuartil 1 (25%) de Plazo es 36
P_Q2 <- round(quantile(x=Plazo.sort, probs = 0.5, type=6), 2)
P_Q2
## 50%
## 48
cat("El cuartil 2 (50%) de Plazo es", round(quantile(x=Plazo.sort, probs = 0.5, type=6), 2))
## El cuartil 2 (50%) de Plazo es 48
P_Q3 <- round(quantile(x=Plazo.sort, probs = 0.75, type=6), 2)
P_Q3
## 75%
## 60
cat("El cuartil 3 (75%) de Plazo es", round(quantile(x=Plazo.sort, probs = 0.75, type=6), 2))
## El cuartil 3 (75%) de Plazo es 60
P_RIQ <- round(P_Q3-P_Q1)
P_RIQ
## 75%
## 24
cat("El rango intercartílico de Plazo es", round(P_Q3-P_Q1))
## El rango intercartílico de Plazo es 24
Plazo.rango <- ds_range(Plazo)
Plazo.rango
## [1] 48
cat("El rango de los datos de Plazo es", ds_range(Plazo))
## El rango de los datos de Plazo es 48
P_tab.localizacion <- cbind(P_Min, P_Max, P_Q1, P_Q2, P_Q3, P_RIQ, Plazo.rango)
P_tab.localizacion
## P_Min P_Max P_Q1 P_Q2 P_Q3 P_RIQ Plazo.rango
## 25% 12 60 36 48 60 24 48
cat("Tabla organizada de medidas de localización de Plazo")
## Tabla organizada de medidas de localización de Plazo
#Medidas de variabilidad
P_Var <- round(var(Plazo),2)
P_Var
## [1] 229.31
P_DS <- round(sd(Plazo),2)
P_DS
## [1] 15.14
P_Cv <- round(ds_cvar(Plazo),2)
P_Cv
## [1] 32.4
P_tab.variabilidad <- cbind.data.frame(P_Var, P_DS, P_Cv)
P_tab.variabilidad
## P_Var P_DS P_Cv
## 1 229.31 15.14 32.4
cat("Tabla organizada de medidas de variabilidad de Plazo:Varianza, Desviación Estandar y Coeficiente de variación")
## Tabla organizada de medidas de variabilidad de Plazo:Varianza, Desviación Estandar y Coeficiente de variación
#Medidas de forma
P_CA <- ds_skewness(Plazo)
P_CA
## [1] -0.7968433
P_CC <- kurtosis(Plazo)
P_CC
## [1] -0.616076
## attr(,"method")
## [1] "excess"
P_tab.forma <- cbind.data.frame(P_CA, P_CC)
P_tab.forma
## P_CA P_CC
## 1 -0.7968433 -0.616076
table(Plazo)
## Plazo
## 12 18 24 36 48 54 60
## 5 2 8 22 15 1 47
cat("Tabla organizada de medidas de forma de Plazo")
## Tabla organizada de medidas de forma de Plazo
DF.PLAZO <- tibble(Plazo)
DF.PLAZO
## # A tibble: 100 × 1
## Plazo
## <int>
## 1 54
## 2 60
## 3 60
## 4 60
## 5 60
## 6 24
## 7 36
## 8 24
## 9 48
## 10 12
## # ℹ 90 more rows
DF.PLAZO$Plazo <- factor(DF.PLAZO$Plazo)
ggplot(DF.PLAZO, aes(x=Plazo))+
geom_bar( color="black", fill="skyblue", alpha=0.3, position = "identity")+
labs(title = "Diagrama de barras de plazos de clientes", subtitle = "Fig. 2",
x="Plazos", y="n")+
geom_text(aes(label=..count..), stat="count", vjust= -1, color="black")
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
theme(panel.background = element_rect(fill="snow"),
panel.border = element_rect(fill = "transparent",
color="snow2", linewidth = 1))
## List of 2
## $ panel.background:List of 5
## ..$ fill : chr "snow"
## ..$ colour : NULL
## ..$ linewidth : NULL
## ..$ linetype : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_rect" "element"
## $ panel.border :List of 5
## ..$ fill : chr "transparent"
## ..$ colour : chr "snow2"
## ..$ linewidth : num 1
## ..$ linetype : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_rect" "element"
## - attr(*, "class")= chr [1:2] "theme" "gg"
## - attr(*, "complete")= logi FALSE
## - attr(*, "validate")= logi TRUE
#Diagrama de barras de los plazos de los clientes expresados en meses
Explica las edades de los clientes entrevistados para la muestra elegida
#Tabla de frecuencia Edad
E_tab.frecuencia <- ds_freq_table(muestra2, Edad, bins=4)
E_tab.frecuencia
## Variable: Edad
## |-------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-------------------------------------------------------------------|
## | 19 - 30 | 39 | 39 | 39 | 39 |
## |-------------------------------------------------------------------|
## | 30 - 41 | 39 | 78 | 39 | 78 |
## |-------------------------------------------------------------------|
## | 41 - 52 | 19 | 97 | 19 | 97 |
## |-------------------------------------------------------------------|
## | 52 - 63 | 9 | 106 | 9 | 106 |
## |-------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-------------------------------------------------------------------|
El promedio de las edades de los clientes es 36 años
El dato central, o percentil 50, es 34 años de edad
La edad que tiene se encuentra con más frecuencia en la muestra es 39 años
El 25% de las edades de la muestra son menores a 27 años
El 75%de las edades son menores a 34 años
El 100% de las edades están debajo de los 43 años
El coeficiente de variación (0.29) indica que las edades tienden a tener una distribución homogénea
Los datos están desviados de la media con un valor de 10.57
La distribución de los datos es positiva (0.53) con respecto a la media; es decir, tiene más datos hacia la derecha de la distribución.
DF.EDAD <- tibble(Edad)
DF.EDAD
## # A tibble: 100 × 1
## Edad
## <int>
## 1 38
## 2 38
## 3 24
## 4 24
## 5 55
## 6 23
## 7 32
## 8 23
## 9 32
## 10 56
## # ℹ 90 more rows
#medidas de tendencia central
barx <- round(mean(Edad), 2)
barx
## [1] 35.29
cat("La media de Edad es", round(mean(Edad), 2))
## La media de Edad es 35.29
Md <- round(ds_mode(Edad),2)
Md
## [1] 24
cat("La moda de Edad es", round(ds_mode(Edad), 2))
## La moda de Edad es 24
Med <- round(median(Edad),2)
Med
## [1] 34
cat("La mediana de Edad es", round(median(Edad), 2))
## La mediana de Edad es 34
tab.tendencia <- cbind.data.frame(barx, Md, Med)
tab.tendencia
## barx Md Med
## 1 35.29 24 34
cat("Tabla organizada de medidas de tendencia central de Edad")
## Tabla organizada de medidas de tendencia central de Edad
#medidas de localización
Edad.sort <- sort(Edad)
Edad.sort
## [1] 19 20 20 21 21 22 22 22 23 23 23 23 23 23 24 24 24 24 24 24 24 24 26 26 27
## [26] 27 27 27 28 28 28 28 28 28 29 29 29 30 30 31 31 32 32 32 32 34 34 34 34 34
## [51] 34 34 34 35 35 35 35 35 36 36 37 37 37 37 37 38 38 38 38 38 40 40 41 41 41
## [76] 41 42 42 44 45 45 46 47 47 47 47 49 50 50 51 51 55 55 56 58 58 60 60 61 63
Min <- round(min(Edad.sort),2)
Min
## [1] 19
cat("El mínimo de Edad es", round(min(Edad.sort),2))
## El mínimo de Edad es 19
Max <- round(max(Edad.sort),2)
Max
## [1] 63
cat("El máximo de Edad es", round(max(Edad.sort),2))
## El máximo de Edad es 63
Q1 <- round(quantile(x=Edad.sort, probs = 0.25, type=6), 2)
Q1
## 25%
## 27
cat("El cuartil 1 (25%) de Edad es", round(quantile(x=Edad.sort, probs = 0.25, type=6), 2))
## El cuartil 1 (25%) de Edad es 27
Q2 <- round(quantile(x=Edad.sort, probs = 0.5, type=6), 2)
Q2
## 50%
## 34
cat("El cuartil 2 (50%) de Edad es", round(quantile(x=Edad.sort, probs = 0.5, type=6), 2))
## El cuartil 2 (50%) de Edad es 34
Q3 <- round(quantile(x=Edad.sort, probs = 0.75, type=6), 2)
Q3
## 75%
## 41
cat("El cuartil 3 (75%) de Edad es", round(quantile(x=Edad.sort, probs = 0.75, type=6), 2))
## El cuartil 3 (75%) de Edad es 41
RIQ <- round(Q3-Q1)
RIQ
## 75%
## 14
cat("El rango intercartílico de Edad es", round(Q3-Q1))
## El rango intercartílico de Edad es 14
Edad.rango <- ds_range(Edad)
Edad.rango
## [1] 44
cat("El rango de los datos de Edad es", ds_range(Edad))
## El rango de los datos de Edad es 44
tab.localizacion <- cbind(Min, Max, Q1, Q2, Q3, RIQ, Edad.rango)
tab.localizacion
## Min Max Q1 Q2 Q3 RIQ Edad.rango
## 25% 19 63 27 34 41 14 44
cat("Tabla organizada de medidas de localización de Edad")
## Tabla organizada de medidas de localización de Edad
#Medidas de variabilidad
Var <- round(var(Edad),2)
Var
## [1] 119.99
DS <- round(sd(Edad),2)
DS
## [1] 10.95
Cv <- round(ds_cvar(Edad),2)
Cv
## [1] 31.04
tab.variabilidad <- cbind.data.frame(Var, DS, Cv)
tab.variabilidad
## Var DS Cv
## 1 119.99 10.95 31.04
cat("Tabla organizada de medidas de variabilidad de Edad: Varianza, Desviación Estandar y Coeficiente de variación")
## Tabla organizada de medidas de variabilidad de Edad: Varianza, Desviación Estandar y Coeficiente de variación
#Medidas de forma
CA <- ds_skewness(Edad)
CA
## [1] 0.7059979
CC <- kurtosis(Edad)
CC
## [1] -0.3299438
## attr(,"method")
## [1] "excess"
tab.forma <- cbind.data.frame(CA, CC)
tab.forma
## CA CC
## 1 0.7059979 -0.3299438
cat("Tabla organizada de medidas de forma de Edad")
## Tabla organizada de medidas de forma de Edad
n <- rnorm(100, mean=barx, sd=DS)
ggplot(DF.EDAD, aes(x=n, y=Edad))+
stat_boxplot(geom = "errorbar", width=0.1, color="darkblue", lwd=1)+
geom_boxplot(outlier.shape = NA, color="darkblue", fill="skyblue2",
alpha=0.5, outlier.color="skyblue2", lwd=0.7)+
labs(title = "Boxplot de edades de clientes", subtitle = "Fig. 1",
x="Edades", y="número de individuos")+
geom_jitter( width = 0.4, shape=4, fill="black")+
theme(panel.background = element_rect(fill="snow"),
panel.border = element_rect(fill="transparent", color="snow3"))
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
Explica los gastos de las personas implicadas en la base de datos
#Tabla de frecuencia Gastos
G_tab.frecuencia <- ds_freq_table(muestra2, Gastos, bins=5)
G_tab.frecuencia
## Variable: Gastos
## |-------------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-------------------------------------------------------------------------|
## | 35 - 53.2 | 51 | 51 | 51 | 51 |
## |-------------------------------------------------------------------------|
## | 53.2 - 71.4 | 27 | 78 | 27 | 78 |
## |-------------------------------------------------------------------------|
## | 71.4 - 89.6 | 13 | 91 | 13 | 91 |
## |-------------------------------------------------------------------------|
## | 89.6 - 107.8 | 7 | 98 | 7 | 98 |
## |-------------------------------------------------------------------------|
## | 107.8 - 126 | 2 | 100 | 2 | 100 |
## |-------------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-------------------------------------------------------------------------|
El promedio de los gastos de los clientes en la muestra es de $57.05
El percentil de 50% ( la mitad) es $60 así abajo
Se gasta con más frecuencia $35
El 25% de los clientes de la muestra tiene un gasto igual o menor a $35
Y el 75% de los clientes tiene un gasto igual o menor a $74.25
El 100% de los clientes presenta un gasto igual o menor a $135
El coeficiente de varianza es de 0.38 lo que significa que los gastos tiene una distribución homogénea
Los datos están desviados de la media unos $21.69
mean(Gastos)
## [1] 55.23
cat("La media de Gastos es", mean(Gastos))
## La media de Gastos es 55.23
median(Gastos)
## [1] 52.5
cat("La mediana de Gastos es", median(Gastos))
## La mediana de Gastos es 52.5
mlv(Gastos)
## [1] 35
cat("La moda de Gastos es", mlv(Gastos))
## La moda de Gastos es 35
kurtosis(Gastos)
## [1] 0.9937888
## attr(,"method")
## [1] "excess"
cat("La cantidad de valores atípicos en Gastos es:",kurtosis(Gastos))
## La cantidad de valores atípicos en Gastos es: 0.9937888
cat("Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.")
## Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.
skewness(Gastos)
## [1] 1.066804
## attr(,"method")
## [1] "moment"
cat("El coeficiente de asimetría es:",skewness(Gastos))
## El coeficiente de asimetría es: 1.066804
ggplot(data = muestra2 ,
mapping =aes(x=Gastos))+
geom_histogram(bins = 10 , fill= "darkolivegreen2" , col ="darkslategray") +
labs(title = "Histograma de Gastos",
x = "Gastos", y = "Cantidad")+
theme_minimal() +
theme(axis.text.x = element_text( hjust = 0.7, color = "black",
size = 10),
plot.title = element_text(hjust = 0.5))
boxplot(Gastos, main = "Diagrama de Caja de Dispersion", col = 'olivedrab', horizontal = TRUE,
pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5))
Muestra los ingresos de cada cliente presente
#Tabla de frecuencia Ingresos
I_tab.frecuencia <- ds_freq_table(muestra2, Ingresos, bins=5)
I_tab.frecuencia
## Variable: Ingresos
## |-------------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-------------------------------------------------------------------------|
## | 25 - 105.2 | 32 | 32 | 34.41 | 34.41 |
## |-------------------------------------------------------------------------|
## | 105.2 - 185.4 | 40 | 72 | 43.01 | 77.42 |
## |-------------------------------------------------------------------------|
## | 185.4 - 265.6 | 18 | 90 | 19.35 | 96.77 |
## |-------------------------------------------------------------------------|
## | 265.6 - 345.8 | 0 | 90 | 0 | 96.77 |
## |-------------------------------------------------------------------------|
## | 345.8 - 426 | 3 | 93 | 3.23 | 100 |
## |-------------------------------------------------------------------------|
## | Missing | 7 | - | 7.00 | - |
## |-------------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-------------------------------------------------------------------------|
Esta variable tiene 7 datos perdidos (N/A), los cuales se omitieron a la hora de calcular las medidas.
El promedio de los ingresos de los clientes es $128.1
El dato central, o percentil 50, de los ingresos es $120
El dato de ingresos que se encuentra con más frecuencia en la muestra es $100
El 25% de los ingresos de la muestra son menores a $90
El 75%de los ingresos de la muestra son menores a $120
El 100% de los ingresos están debajo de $155
El coeficiente de variación (0.42) indica que los ingresos tienden a tener una distribución no definida (ni homogénea ni heterogénea) pues es cercana a 0.5
Los datos están desviados de la media con un valor de $53.45
La distribución de los datos es positiva (1.0) con respecto a la media; es decir, tiene más datos atípicos hacia la derecha de la distribución.
ingresos.v<- na.omit(Ingresos)
ingresos <- data.frame("n"=c(1:93), ingresos.v)
ingresos
## n ingresos.v
## 1 1 53
## 2 2 90
## 3 3 199
## 4 4 56
## 5 5 93
## 6 6 135
## 7 7 139
## 8 8 60
## 9 9 115
## 10 10 225
## 11 11 219
## 12 12 250
## 13 13 250
## 14 14 95
## 15 15 117
## 16 16 60
## 17 17 150
## 18 18 108
## 19 19 53
## 20 20 113
## 21 21 149
## 22 22 125
## 23 23 180
## 24 24 90
## 25 25 116
## 26 26 65
## 27 27 170
## 28 28 120
## 29 29 225
## 30 30 53
## 31 31 116
## 32 32 135
## 33 33 70
## 34 34 140
## 35 35 90
## 36 36 148
## 37 37 92
## 38 38 200
## 39 39 100
## 40 40 140
## 41 41 165
## 42 42 190
## 43 43 112
## 44 44 162
## 45 45 128
## 46 46 250
## 47 47 134
## 48 48 352
## 49 49 98
## 50 50 359
## 51 51 140
## 52 52 211
## 53 53 200
## 54 54 225
## 55 55 200
## 56 56 25
## 57 57 121
## 58 58 142
## 59 59 195
## 60 60 40
## 61 61 45
## 62 62 81
## 63 63 208
## 64 64 172
## 65 65 121
## 66 66 91
## 67 67 124
## 68 68 179
## 69 69 45
## 70 70 100
## 71 71 90
## 72 72 250
## 73 73 155
## 74 74 200
## 75 75 78
## 76 76 125
## 77 77 147
## 78 78 126
## 79 79 113
## 80 80 65
## 81 81 106
## 82 82 165
## 83 83 167
## 84 84 245
## 85 85 101
## 86 86 426
## 87 87 80
## 88 88 70
## 89 89 70
## 90 90 155
## 91 91 60
## 92 92 124
## 93 93 97
#medidas de tendencia central
I_barx <- round(mean(ingresos.v), 2)
I_barx
## [1] 139.08
cat("La media de Ingresos es", round(mean(ingresos.v), 2))
## La media de Ingresos es 139.08
I_Md <- round(ds_mode(ingresos.v),2)
I_Md
## [1] 90
cat("La moda de Ingresos es", round(ds_mode(ingresos.v), 2))
## La moda de Ingresos es 90
I_Med <- round(median(ingresos.v),2)
I_Med
## [1] 125
cat("La mediaba de Ingresos es", round(median(ingresos.v), 2))
## La mediaba de Ingresos es 125
I_tab.tendencia <- cbind.data.frame(I_barx, I_Md, I_Med)
I_tab.tendencia
## I_barx I_Md I_Med
## 1 139.08 90 125
cat("Tabla organizada de medidas de tendencia central de Ingresos")
## Tabla organizada de medidas de tendencia central de Ingresos
#medidas de localización
ingresos.v.sort <- sort(ingresos.v)
ingresos.v.sort
## [1] 25 40 45 45 53 53 53 56 60 60 60 65 65 70 70 70 78 80 81
## [20] 90 90 90 90 91 92 93 95 97 98 100 100 101 106 108 112 113 113 115
## [39] 116 116 117 120 121 121 124 124 125 125 126 128 134 135 135 139 140 140 140
## [58] 142 147 148 149 150 155 155 162 165 165 167 170 172 179 180 190 195 199 200
## [77] 200 200 200 208 211 219 225 225 225 245 250 250 250 250 352 359 426
I_Min <- round(min(ingresos.v.sort),2)
I_Min
## [1] 25
cat("El mínimo de Ingresos es", round(min(ingresos.v.sort),2))
## El mínimo de Ingresos es 25
I_Max <- round(max(ingresos.v.sort),2)
I_Max
## [1] 426
cat("El máximo de Ingresos es", round(max(ingresos.v.sort),2))
## El máximo de Ingresos es 426
I_Q1 <- round(quantile(x=ingresos.v.sort, probs = 0.25, type=6), 2)
I_Q1
## 25%
## 90.5
cat("El cuartil 1 (25%) de Ingresos es", round(quantile(x=ingresos.v.sort, probs = 0.25, type=6), 2))
## El cuartil 1 (25%) de Ingresos es 90.5
I_Q2 <- round(quantile(x=ingresos.v.sort, probs = 0.5, type=6), 2)
I_Q2
## 50%
## 125
cat("El cuartil 2 (50%) de Ingresos es", round(quantile(x=ingresos.v.sort, probs = 0.5, type=6), 2))
## El cuartil 2 (50%) de Ingresos es 125
I_Q3 <- round(quantile(x=ingresos.v.sort, probs = 0.75, type=6), 2)
I_Q3
## 75%
## 175.5
cat("El cuartil 3 (75%) de Ingresos es", round(quantile(x=ingresos.v.sort, probs = 0.75, type=6), 2))
## El cuartil 3 (75%) de Ingresos es 175.5
I_RIQ <- round(I_Q3-I_Q1)
I_RIQ
## 75%
## 85
cat("El rango intercartílico de Ingresos es", round(I_Q3-I_Q1))
## El rango intercartílico de Ingresos es 85
ingresos.v.rango <- ds_range(ingresos.v)
ingresos.v.rango
## [1] 401
cat("El rango de los datos de Ingresos es", ds_range(ingresos.v))
## El rango de los datos de Ingresos es 401
I_tab.localizacion <- cbind(I_Min, I_Max, I_Q1, I_Q2, I_Q3, I_RIQ, ingresos.v.rango)
I_tab.localizacion
## I_Min I_Max I_Q1 I_Q2 I_Q3 I_RIQ ingresos.v.rango
## 25% 25 426 90.5 125 175.5 85 401
cat("Tabla organizada de medidas de localización de Ingresos")
## Tabla organizada de medidas de localización de Ingresos
#Medidas de variabilidad
I_Var <- round(var(ingresos.v),2)
I_Var
## [1] 5075.16
I_DS <- round(sd(ingresos.v),2)
I_DS
## [1] 71.24
I_Cv <- round(ds_cvar(ingresos.v),2)
I_Cv
## [1] 51.22
I_tab.variabilidad <- cbind.data.frame(I_Var, I_DS, I_Cv)
I_tab.variabilidad
## I_Var I_DS I_Cv
## 1 5075.16 71.24 51.22
cat("Tabla organizada de medidas de variabilidad de Ingresos: Varianza, Desviación Estandar y Coeficiente de variación")
## Tabla organizada de medidas de variabilidad de Ingresos: Varianza, Desviación Estandar y Coeficiente de variación
#Medidas de forma
I_CA <- ds_skewness(ingresos.v)
I_CA
## [1] 1.335207
I_CC <-kurtosis(ingresos.v)
I_CC
## [1] 2.522655
## attr(,"method")
## [1] "excess"
I_tab.forma <- cbind.data.frame(I_CA, I_CC)
I_tab.forma
## I_CA I_CC
## 1 1.335207 2.522655
cat("Tabla organizada de medidas de forma de Ingresos")
## Tabla organizada de medidas de forma de Ingresos
table(ingresos.v)
## ingresos.v
## 25 40 45 53 56 60 65 70 78 80 81 90 91 92 93 95 97 98 100 101
## 1 1 2 3 1 3 2 3 1 1 1 4 1 1 1 1 1 1 2 1
## 106 108 112 113 115 116 117 120 121 124 125 126 128 134 135 139 140 142 147 148
## 1 1 1 2 1 2 1 1 2 2 2 1 1 1 2 1 3 1 1 1
## 149 150 155 162 165 167 170 172 179 180 190 195 199 200 208 211 219 225 245 250
## 1 1 2 1 2 1 1 1 1 1 1 1 1 4 1 1 1 3 1 4
## 352 359 426
## 1 1 1
ggplot(ingresos, aes(x=ingresos.v))+
geom_histogram(aes(y=..density..), color="darkblue", fill="lightblue2", alpha=0.4,
bins=20, binwidth = 40, lwd=0.6)+
geom_density(lwd=0.6, color="darkblue", fill="dodgerblue", alpha=0.2)+
labs(title = "Histograma densidad de ingresos de clientes", subtitle = "Fig. 3",
x="ingresos", y="densidad")+
theme(panel.background = element_rect(fill="snow"),
panel.border = element_rect(fill = "transparent",
color="snow2", linewidth = 1))
Muestra los activos dentro de la base de datos de lo clientes
#Tabla de frecuencia Activos
AC_tab.frecuencia <- ds_freq_table(muestra2, Activos, bins=5)
AC_tab.frecuencia
## Variable: Activos
## |-------------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-------------------------------------------------------------------------|
## | 0 - 6000 | 75 | 75 | 75.76 | 75.76 |
## |-------------------------------------------------------------------------|
## | 6000 - 12000 | 16 | 91 | 16.16 | 91.92 |
## |-------------------------------------------------------------------------|
## | 12000 - 18000 | 7 | 98 | 7.07 | 98.99 |
## |-------------------------------------------------------------------------|
## | 18000 - 24000 | 2 | 100 | 2.02 | 101.01 |
## |-------------------------------------------------------------------------|
## | 24000 - 30000 | 3 | 103 | 3.03 | 104.04 |
## |-------------------------------------------------------------------------|
## | Missing | 1 | - | 1.00 | - |
## |-------------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-------------------------------------------------------------------------|
Valor máximo (Max): El valor máximo de los activos en la muestra es 30,000.
Valor mínimo (Min): El valor mínimo de los activos en la muestra es 0.
Media (Promedio): La media de los activos en la muestra es aproximadamente 4,697.727.
Mediana: La mediana de los activos en la muestra es 3,500. Esto significa que el 50% de los activos tienen un valor igual o inferior a 3,500, y el 50% restante tiene un valor igual o superior a 3,500.
Kurtosis: La kurtosis de los activos en la muestra es aproximadamente 6.789883. Este valor indica que la distribución de los activos tiene colas más pesadas en comparación con una distribución normal. Puede ser una señal de presencia de valores atípicos o una distribución no normal.
Asimetría (Skewness): La asimetría de los activos en la muestra es aproximadamente 1.90354. Un valor positivo de asimetría indica una distribución sesgada hacia la derecha, lo que significa que hay una cola larga hacia los valores más altos.
Cuartiles (Percentiles): Los cuartiles dividen los datos en cuatro partes iguales. En este caso, se proporcionan los valores de los percentiles 0%, 25%, 50%, 75% y 100%:
El percentil 0% (mínimo) es 0.
El percentil 25% es 0.
El percentil 50% (mediana) es 3,500.
El percentil 75% es 6,000.
El percentil 100% (máximo) es 30,000.
Varianza: La varianza de los activos en la muestra es aproximadamente 37,665,409. La varianza mide la dispersión de los datos con respecto a la media.
Desviación estándar (SD): La desviación estándar de los activos en la muestra es aproximadamente 6,137.215. La desviación estándar es una medida de la dispersión que indica cuánto varían los valores respecto a la media.
La alta kurtosis y la asimetría positiva sugieren una distribución con colas pesadas hacia valores altos y la posible presencia de valores atípicos en los activos.
activos = muestra2$Activos
summary(activos)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 3500 4698 6000 30000 1
max(activos, na.rm = TRUE);
## [1] 30000
min(activos, na.rm = TRUE);
## [1] 0
media = mean(activos, na.rm = TRUE)
media
## [1] 4697.727
mediana = median(activos, na.rm = TRUE)
mediana
## [1] 3500
kurtosis(activos, na.rm = TRUE);
## [1] 3.653406
## attr(,"method")
## [1] "excess"
skewness(activos, na.rm = TRUE);
## [1] 1.874772
## attr(,"method")
## [1] "moment"
quantile(activos, na.rm = TRUE);
## 0% 25% 50% 75% 100%
## 0 0 3500 6000 30000
var(activos, na.rm = TRUE);
## [1] 37665409
sd(activos, na.rm = TRUE);
## [1] 6137.215
hist(activos, main = "Histograma de Variable Cuantitativa", xlab = "Valor",
ylab = "Frecuencia", col = "dodgerblue", breaks = 30, border = "black",
cex.axis = 1.2, cex.main = 1.4,)
grid()
abline(v = media, col = "red", lwd = 2)
text(x = media + 5, y = 35, labels = "Media", col = "red",
pos = 4, font = 2)
hist(activos, main = "Histograma de Variable Cuantitativa", xlab = "Valor",
ylab = "Frecuencia", col = "dodgerblue", breaks = 30, border = "black",
cex.axis = 1.2, cex.main = 1.4,)
grid()
abline(v = mediana, col = "red", lwd = 2)
text(x = mediana + 5, y = 30, labels = "Mediana", col = "red",
pos = 4, font = 2)
ggplot(data = muestra2, aes(y = activos)) +
geom_boxplot(fill = "skyblue", color = "darkblue", alpha = 0.8, width = 0.2) +
labs(title = "Activos",
y = "Valor", x = "Frecuencia") +
coord_flip() +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10),
axis.title.y = element_text(size = 12))
## Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).
Muestra la cantidad de articulos de cada persona en la base crediticia
#Tabla de frecuencia Cantidad
C_tab.frecuencia <- ds_freq_table(muestra2, Cantidad, bins=5)
C_tab.frecuencia
## Variable: Cantidad
## |-----------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-----------------------------------------------------------------------|
## | 100 - 880 | 35 | 35 | 35 | 35 |
## |-----------------------------------------------------------------------|
## | 880 - 1660 | 61 | 96 | 61 | 96 |
## |-----------------------------------------------------------------------|
## | 1660 - 2440 | 3 | 99 | 3 | 99 |
## |-----------------------------------------------------------------------|
## | 2440 - 3220 | 0 | 99 | 0 | 99 |
## |-----------------------------------------------------------------------|
## | 3220 - 4000 | 1 | 100 | 1 | 100 |
## |-----------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-----------------------------------------------------------------------|
La cantidad promedio del crédito de los clientes de la muestra en de 1056.16
El percentil del 50% (la mitad) es de 1000
La cantidad de crédito con más frecuencia entre los clientes de de 1000
El 0% de los clientes tiene un crédito por debajo de 200, lo que significa que en la muestra la cantidad de crédito es de 200 en adelante.
el 25% de los clientes tiene una cantidad de crédito igual o menor 737.5 sin bajar más de 200
Mientras que el 75% tiene una cantidad de crédito igual o menor a 1300
Y el 100% tiene una cantidad de crédito que es igual o menor a 2300
El coeficiente de varianza es de 0.4 lo que significa que la cantidad de crédito tiene una distribución homogénea
Los datos están desviados de la media un 428.7
cat("La media de Cantidad es:",mean(Cantidad))
## La media de Cantidad es: 1027.56
cat("La mediana de Cantidad es:",median(Cantidad))
## La mediana de Cantidad es: 1000
cat("La moda de Cantidad es:",mlv(Cantidad))
## La moda de Cantidad es: 1000
cat("La cantidad de valores atípicos en Gastos es:",kurtosis(Cantidad))
## La cantidad de valores atípicos en Gastos es: 8.268083
cat("Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.")
## Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.
cat("La medida de dispersión de los datos es:",skewness(Cantidad))
## La medida de dispersión de los datos es: 1.559782
ggplot(data = muestra2 ,
mapping =aes(x=Gastos))+
geom_histogram(bins = 10 , fill= "slateblue" , col ="#8B0000") +
labs(title = "Histograma de Gastos",
x = "Gastos", y = "Cantidad")+
theme_minimal() +
theme(axis.text.x = element_text( hjust = 0.7, color = "black",
size = 10),
plot.title = element_text(hjust = 0.5))
boxplot(Cantidad, main = "Diagrama de Caja de Dispersion", col = '#EEC900', horizontal = TRUE,
pars = list(boxwex = 1.5, staplewex = 1, outwex = 0.5))
Explica el precio que pagan los clientes de la muestra2
#Tabla de frecuencia Precio
PR_tab.frecuencia <- ds_freq_table(muestra2, Precio, bins=5)
PR_tab.frecuencia
## Variable: Precio
## |-----------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-----------------------------------------------------------------------|
## | 250 - 1100 | 24 | 24 | 24 | 24 |
## |-----------------------------------------------------------------------|
## | 1100 - 1950 | 67 | 91 | 67 | 91 |
## |-----------------------------------------------------------------------|
## | 1950 - 2800 | 9 | 100 | 9 | 100 |
## |-----------------------------------------------------------------------|
## | 2800 - 3650 | 1 | 101 | 1 | 101 |
## |-----------------------------------------------------------------------|
## | 3650 - 4500 | 1 | 102 | 1 | 102 |
## |-----------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-----------------------------------------------------------------------|
Valor máximo (Max): El valor máximo del precio en la muestra es 4,500.
Valor mínimo (Min): El valor mínimo del precio en la muestra es 250.
Media (Promedio): La media del precio en la muestra es aproximadamente 1,442.08.
Mediana: La mediana del precio en la muestra es 1,473. Esto significa que el 50% de los precios tienen un valor igual o inferior a 1,473, y el 50% restante tiene un valor igual o superior a 1,473.
Kurtosis: La kurtosis de los precios en la muestra es aproximadamente 10.63287. Este valor indica que la distribución de los precios tiene colas pesadas en comparación con una distribución normal. Puede ser una señal de presencia de valores atípicos o una distribución no normal.
Asimetría (Skewness): La asimetría de los precios en la muestra es aproximadamente 1.563437. Un valor positivo de asimetría indica una distribución sesgada hacia la derecha, lo que significa que hay una cola larga hacia los valores más altos.
Cuartiles (Percentiles): Los cuartiles dividen los datos en cuatro partes iguales. En este caso, se proporcionan los valores de los percentiles 0%, 25%, 50%, 75% y 100%:
El percentil 0% (mínimo) es 250.
El percentil 25% es 1,117.75.
El percentil 50% (mediana) es 1,473.
El percentil 75% es 1,694.50.
El percentil 100% (máximo) es 4,500.
Varianza: La varianza de los precios en la muestra es aproximadamente 320,218.5. La varianza mide la dispersión de los datos con respecto a la media.
Se debe tener en cuenta la alta kurtosis y la asimetría positiva, esto sugieren una distribución con colas pesadas hacia valores altos y la posible presencia de valores atípicos en los precios.
precio = muestra2$Precio
summary(precio)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 250 1118 1473 1442 1694 4500
cat("El máximo de Precios es:",max(precio))
## El máximo de Precios es: 4500
cat("El mínimo de Precios es:",min(precio))
## El mínimo de Precios es: 250
media2 = mean(precio)
cat("La media de Precios es:",media2)
## La media de Precios es: 1442.08
mediana2 = median(precio)
cat("La mediana de Precios es:",mediana2)
## La mediana de Precios es: 1473
cat("La cantidad de valores atípicos en Gastos es:",kurtosis(precio))
## La cantidad de valores atípicos en Gastos es: 7.42128
cat("Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.")
## Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.
cat("La medida de dispersión de los datos es:",skewness(precio))
## La medida de dispersión de los datos es: 1.540044
cat("El cuartil de Precio es:",quantile(precio))
## El cuartil de Precio es: 250 1117.75 1473 1694.5 4500
cat("La varianza de Precios es:",var(precio))
## La varianza de Precios es: 320218.5
sd(precio)
## [1] 565.8785
hist(precio, main = "Histograma de Variable Cuantitativa", xlab = "Valor",
ylab = "Frecuencia", col = "dodgerblue", breaks = 20, border = "black",
cex.axis = 1.2, cex.main = 1.4,)
grid()
abline(v = media2, col = "red", lwd = 2)
text(x = media2 + 5, y = 20, labels = "Media", col = "red",
pos = 4, font = 2)
hist(precio, main = "Histograma de Variable Cuantitativa", xlab = "Valor",
ylab = "Frecuencia", col = "dodgerblue", breaks = 20, border = "black",
cex.axis = 1.2, cex.main = 1.4,)
grid()
abline(v = mediana2, col = "red", lwd = 2)
text(x = mediana2 + 5, y = 21, labels = "Mediana", col = "red",
pos = 4, font = 2)
ggplot(data = muestra2, aes(y = precio)) +
geom_boxplot(fill = "skyblue", color = "darkblue", alpha = 0.8, width = 0.2) +
labs(title = "Activos",
y = "Valor", x = "Frecuencia") +
coord_flip() +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10),
axis.title.y = element_text(size = 12))
Muestra las deudas de los clientes en la base de datos
#Tabla de frecuencia Deuda
D_tab.frecuencia <- ds_freq_table(muestra2, Deuda, bins=5)
D_tab.frecuencia
## Variable: Deuda
## |-----------------------------------------------------------------------|
## | Bins | Frequency | Cum Frequency | Percent | Cum Percent |
## |-----------------------------------------------------------------------|
## | 0 - 1400 | 89 | 89 | 89 | 89 |
## |-----------------------------------------------------------------------|
## | 1400 - 2800 | 7 | 96 | 7 | 96 |
## |-----------------------------------------------------------------------|
## | 2800 - 4200 | 3 | 99 | 3 | 99 |
## |-----------------------------------------------------------------------|
## | 4200 - 5600 | 0 | 99 | 0 | 99 |
## |-----------------------------------------------------------------------|
## | 5600 - 7000 | 1 | 100 | 1 | 100 |
## |-----------------------------------------------------------------------|
## | Total | 100 | - | 100.00 | - |
## |-----------------------------------------------------------------------|
El promedio de la deuda de los clientes en la muestra obtenida es de 373.95. El percentil de 75 está en el dato cero. Los clientes con una deuda de cero son los mas frecuentes.Más del 70% de los clientes no tienen ninguna deuda. Mientras el 30% restantes tienen deudas pero de muy pequeños valores. La desviación de los datos es de 1044.85 , lo que significa que las deudas de los clientes son extremadamente variadas entre si
####MEDIDAS DE TENDENCIA CENTRAL####
deuda<- muestra2$Deuda
summary(deuda)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 0.0 0.0 373.9 0.0 7000.0
maximo = max(deuda, na.rm = TRUE)
cat("El máximo de Deuda es:",maximo)
## El máximo de Deuda es: 7000
minimo = min(deuda, na.rm = TRUE)
cat("El mínimo de Deuda es:",minimo)
## El mínimo de Deuda es: 0
#media
media = mean(deuda, na.rm = TRUE)
cat("La media de Deuda es", media)
## La media de Deuda es 373.95
hist(deuda, main = "Histograma de la media de Deudas", xlab = "Valor",
ylab = "Frecuencia", col = "darkorchid", breaks = 20, border = "black",
cex.axis = 1.0, cex.main = 1.5,)
grid()
abline(v = media, col = "springgreen2", lwd = 2)
text(x = media + 5, y = 30, labels = "Media", col = "springgreen2",
pos = 4, font = 2)
#mediana
mediana = median(deuda, na.rm = TRUE)
cat("La mediana de Deuda es", mediana)
## La mediana de Deuda es 0
hist(deuda, main = "Histograma de la mediana de Deudas", xlab = "Valor",
ylab = "Frecuencia", col = "deeppink2", breaks = 20, border = "black",
cex.axis = 1.0, cex.main = 1.4,)
grid()
abline(v = mediana, col = "cyan2", lwd = 3)
text(x = media + 5, y = 35, labels = "Mediana", col = "cyan2",
pos = 4, font = 2)
#moda
moda_deuda <- ds_mode(deuda); moda_deuda
## [1] 0
cat("La moda de Deuda es", moda_deuda)
## La moda de Deuda es 0
hist(deuda, main = "Histograma de la moda de Deudas", xlab = "Valor",
ylab = "Frecuencia", col = "aquamarine2", breaks = 20, border = "black",
cex.axis = 1.0, cex.main = 1.4,)
grid()
abline(v = moda_deuda, col = "coral2", lwd = 3)
text(x = media + 5, y = 35, labels = "Moda", col = "coral2",
pos = 4, font = 2)
#####MEDIDAS DE LOCALIZACIÓN####
#Cuartiles
Deuda<- sort(deuda)
q1_deuda <- quantile(x=Deuda, probs = 0.25, type = 6); q1_deuda # percentil 25
## 25%
## 0
q2_deuda <- quantile(x=Deuda, probs = 0.50, type = 6); q2_deuda # percentil 50
## 50%
## 0
q3_deuda <- quantile(x=Deuda, probs = 0.75, type = 6); q3_deuda # percentil 75
## 75%
## 0
q4_deuda <- quantile(x=Deuda, probs = 1.0, type = 6); q4_deuda # percentil 100
## 100%
## 7000
cuartil_deuda <- quantile(x = Deuda,probs = c(0.25,0.5,0.75,1),type = 6);cuartil_deuda
## 25% 50% 75% 100%
## 0 0 0 7000
# Rango intercuartilico
ri_deuda <- quantile(Deuda,0.75,type = 6)-quantile(Deuda,0.25,type = 6);ri_deuda
## 75%
## 0
li_deuda <- quantile(x = Deuda,probs = 0.25,type = 6) - 1.5*(ri_deuda);li_deuda
## 25%
## 0
ls_deuda <- quantile(x = Deuda,probs = 0.75,type = 6) + 1.5*(ri_deuda);ls_deuda
## 75%
## 0
cajbig_deuda <- boxplot(muestra2$Deuda,id=list(method="y"),col= "hotpink2",horizontal = TRUE,
main="Diagrama de caja para Deuda")
cat("El diagrama de caja de Deuda demuestra una nula dispersión de los datos ya que mas del 70% de los datos son cero")
## El diagrama de caja de Deuda demuestra una nula dispersión de los datos ya que mas del 70% de los datos son cero
#Percentiles
#Percentil 75
75*(100+1)/100 # posicion del dato
## [1] 75.75
sort(muestra2$Deuda)[75]
## [1] 0
sort(muestra2$Deuda)[76]
## [1] 0
Deuda[75] + 0.75*(sort(muestra2$Deuda)[51]-sort(muestra2$Deuda)[75])
## [1] 0
#Posicion del percentil 85
85*(100+1)/100
## [1] 85.85
sort((muestra2$Deuda))[85]+0.85*(sort((muestra2$Deuda))[86]-sort((muestra2$Deuda))[85])
## [1] 752
quantile(Deuda,0.85,type = 6)
## 85%
## 752
#Medidas de variabilidad#
#Rango <- Dato mayor - Dato menos
rango_deuda <- max(Deuda) - min(Deuda); rango_deuda
## [1] 7000
cat("El rango de Deuda es", rango_deuda)
## El rango de Deuda es 7000
#Varianza
varianza_deuda <- round(var(Deuda),3); varianza_deuda
## [1] 1091805
cat(' La varianza de los Deuda es:',varianza_deuda)
## La varianza de los Deuda es: 1091805
#Desviación estandar
desvestandar_deuda <- round(sd(Deuda),3);desvestandar_deuda
## [1] 1044.895
cat('La desviacion estandar de Deuda es:',desvestandar_deuda)
## La desviacion estandar de Deuda es: 1044.895
#Medidas de forma#
#Curtosis
k_deuda1 <- kurtosis(Deuda);k_deuda1
## [1] 16.81272
## attr(,"method")
## [1] "excess"
k_deuda <- ds_kurtosis(Deuda); k_deuda
## [1] 18.17029
sesgo_deuda <- ds_skewness(Deuda);sesgo_deuda
## [1] 3.880946
hist(Deuda, main = "Histograma de la curtosis de Deudas", xlab = "Valor",
ylab = "Frecuencia", col = "violetred3", breaks = 20, border = "black",
cex.axis = 1.0, cex.main = 1.4,)
grid()
abline(v = k_deuda1, col = "yellow1", lwd = 3)
text(x = k_deuda1 + 5, y = 35, labels = "Curtosis", col = "yellow1",
pos = 4, font = 2)
cat("Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.")
## Como la curtosis > 0 graficamente se puede interpretar que esta distribución es mas apuntada que la distribución de la normal.
Edad VS Antiguedad
edad <- rnorm(100)
antiguedad <- rnorm(100, mean = 0.266)
x <- c(edad,antiguedad)
x
## [1] -0.630244683 -0.382028370 -0.597641064 -0.811172303 0.756666130
## [6] 0.373632287 -1.567726096 -0.803557186 0.612537526 0.654575903
## [11] -0.658847898 -0.395680330 -0.670714487 -0.102579284 -0.414719405
## [16] -0.941202979 1.358445188 -0.461329880 -0.953090028 0.411838255
## [21] 0.029349995 0.471321612 -0.605661712 0.201278284 1.474498286
## [26] -1.058167654 1.655748084 -0.496023409 -0.496200240 0.056056685
## [31] 0.782040245 -0.949751656 -0.254907788 -0.127466918 1.431031195
## [36] 0.581015075 -0.179307516 -1.537961610 1.148093428 0.111877816
## [41] -0.088351984 -1.059230384 0.090323977 1.902485349 -0.314883918
## [46] -0.487237078 1.431721359 -0.478144699 -0.264096234 -0.400112588
## [51] 0.978364087 2.745896594 0.815382368 -0.473643604 -0.303596461
## [56] -0.029443810 -1.070400055 1.985189150 -0.660486661 -0.992742957
## [61] 0.869778947 0.749138613 -1.077266566 1.152795589 -0.766639053
## [66] 0.496038573 1.634070935 0.897616203 1.201787886 -0.183346296
## [71] -0.687737508 -0.158241800 -0.948919661 -0.146175820 -0.411881156
## [76] 0.100590695 -0.163612866 0.303714604 -0.404919413 -2.017175050
## [81] -1.889279213 1.089839766 1.862759284 -0.122835266 0.234733683
## [86] 1.044438798 0.385254823 -0.336070612 -0.674362764 0.869280354
## [91] -0.382358398 -0.275853045 0.372132332 -1.764794058 1.975536296
## [96] -2.966625165 -0.514966214 -0.234588339 -0.365499193 -1.504997602
## [101] 1.158402360 -0.082846315 -0.489086853 -1.420904614 -0.216261561
## [106] 1.895208804 -0.543652155 1.630519471 -0.157498324 0.532171172
## [111] -0.542495935 1.384537105 3.011926017 0.202435505 1.922294421
## [116] -0.588304209 0.014766378 0.780099027 -0.275374391 0.544608425
## [121] -0.977594136 0.631825717 -0.011948826 -0.643904341 0.980182253
## [126] 0.418727133 0.169893091 -0.320828029 -1.239821670 -0.853789903
## [131] -0.762316841 1.450400257 1.005149633 0.351800165 1.446057799
## [136] -0.055935806 0.308266180 1.865007534 0.569194403 -0.003483711
## [141] 0.664898032 1.291680730 -0.313429907 2.152732383 -1.206636180
## [146] 1.358675364 -0.705913961 -0.838231384 -0.054147407 2.059178413
## [151] -1.211127887 -0.531076216 0.502294204 1.435194217 0.175275082
## [156] 0.154101858 0.943144269 -0.264539792 0.049256539 -0.491095835
## [161] 0.552058302 0.223131778 0.436791596 -0.580425970 0.861044254
## [166] -1.156958791 0.406206953 -1.237999658 1.035798010 -1.281923883
## [171] 0.351183900 -0.998164876 1.176474111 -0.851145919 0.677931176
## [176] 0.209666606 -0.929463273 0.887357675 -1.479012888 2.808846832
## [181] 0.059652451 0.061296948 0.627971252 1.471065461 0.153270020
## [186] 0.913499215 0.463129314 0.533858048 2.144578570 1.525738077
## [191] -1.626912252 0.404446139 0.777960741 1.001385100 -0.289206957
## [196] -0.920331958 0.974138694 1.515909577 -0.390698064 -0.815388423
grupo <- c(rep("Edad", 100), rep("Antigüedad", 100))
df.histcomp <- data.frame(x, group=grupo)
ggplot(df.histcomp, aes(x=x, fill= grupo, color=grupo))+
geom_histogram( alpha=0.5, position = "identity", color="grey40",
lwd=0.3, bins=30)+
scale_fill_manual(values = c("tomato", "slateblue1"))+
guides(fill=guide_legend(title = "Variables"))+
labs(title = "Histograma comparativo de edad y antiguedad",
x="tiempo (años)", y="frecuencia")+
theme(panel.background = element_rect(fill="snow"),
panel.border = element_rect(fill = "transparent",
color="snow2", linewidth = 1))
Gastos VS Ingresos
Ingresos <- rnorm(100)
muestra2$Gastos <- rnorm(100, mean = 57.05)
datos_credito <- c(Ingresos, muestra2$Gastos)
Grupos <- c(rep("Ingresos", 100), rep("Gastos", 100))
datos.c = data.frame(muestra2 , group = Grupos)
## Warning in data.frame(muestra2, group = Grupos): row names were found from a
## short variable and have been discarded
ggplot(datos.c, aes( x= x, fill = Grupos, colour = Grupos)) +
geom_histogram(alpha = 0.5, position = "identity",colour= "black") +
scale_fill_manual(values = c("#9A32CD", "#EEEE00")) +
labs(title = "Histograma de Gastos vs Ingresos",
x = "Comparativa de histogrmas", y = "Cantidad")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Estado Civil VS Vivienda
class(muestra2$EstadoCivil)
## [1] "factor"
muestra2$EstadoCivil <- as.numeric(muestra2$EstadoCivil)
class(muestra2$Vivienda)
## [1] "factor"
muestra2$Vivienda <- as.numeric(muestra2$Vivienda)
hist(muestra2$EstadoCivil, col = "blue",
main = "Histograma de Estado Civil vs Vivienda",
xlab = " ", ylab = "Frecuencia")
hist(muestra2$Vivienda, col = rgb(1, 0, 0, alpha = 0.5), add = TRUE)
grid()
legend("topright", legend = c("Estado Civil", "Vivienda"),
fill = c("blue", rgb(1, 0, 0, alpha = 0.5)))