08 de septiembre de 2023El objetivo de este trabajo es realizar un análisis descriptivo de la base de datos ‘datos_crédito’. Principalmente, de cada una de las variables con sus respectivas medidas. Posteriormente a esto, se harán gráficos ilustrativos de cada variable y así con estos poder concluir o reforzar análisis estadístico. Al finalizar se busca comprender de mejor manera la muestra tomada de la base de datos, se concluirán tendencias, sesgos y cosas más generales acerca de la base de datos. Aclarándose que la media tomada para el análisis es la media aritmetica. Además, sabiéndose que el conjunto de datos tienen un contexto netamente asociado a créditos de consumo de personas.
A continuación será presentada la base de datos (‘Datos de crédito’) de estudio a modo de data.frame que puede ser encontrada en el paquete gratuito de R como “datos”. En dónde, se tienen 14 columnas (cada una es una variable de tipo cualitativo o cuantitativo) y 100 filas (vistas individualmente como un crédito), estas tomadas de forma aleatoria dentro de la base de datos inicial que se encuentra en el paquete mencionado anteriormente. Se usarán diferentes paquetes durante la elaboración estadística de cada variable los cuales pueden verse reflejados en las líneas de código respectivas.
library(datos)
library(openxlsx)
set.seed(6813)
datos.c <- data.frame(datos_credito)
muestra2 <- datos.c[sample(nrow(datos.c),size=100),0:14]
muestra2Ahora, se hará el análisis correspondiente de cada una de las siguientes variables, ya sean cualitativas o cuantitativas. Cada una variable está asociada al contexto que tiene dentro del conjunto de datos:
Al estado de crédito al momento de observarlo en la tabla se clasifica como una variable cualitativa con dos caracterizaciones (bueno y malo) por lo cual, al realizarse estadísticas descriptivas se obtiene
##
## malo bueno
## 35 65
## malo bueno
## 35 100
##
## malo bueno
## 0.35 0.65
## malo bueno
## 0.35 1.00
Se organizan todas las pruebas de la estadística descriptiva en una tabla de frecuencias,
info_estado <- data.frame(fabs_estado, fabs_acum_estado, frel_estado, frel_acum_estado)
colnames(info_estado) <- c("1", "fabs_estado", "fabs_acum_estado", "","frel_estado", "frel_acum_estado")
info_estado <- info_estado[, -c(1)]
info_estado <- info_estado[, -c(3)]
attr(info_estado, "caption") <- "Tabla de frecuencias: Estado"
print(info_estado)## fabs_estado fabs_acum_estado frel_estado frel_acum_estado
## malo 35 35 0.35 0.35
## bueno 65 100 0.65 1.00
Así, se reorganiza la información descriptiva en un diagrama de pie donde se evidencia que la mayoría de personas tienen un estado bueno de crédito
library(ggplot2)
Estado <- c("Categoría 1", "Categoría 2")
porcentaje <- c(65, 35)
categoria <- c("Bueno", "Malo")
color <- c("#FFF8DC", "#EE2C2C")
# Crear un dataframe con los datos
data <- data.frame(categoria, porcentaje)
# Crear el gráfico de pastel con ggplot2
pie_chart <- ggplot(data, aes(x = factor(1), y = porcentaje, fill = categoria)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_manual(values = color) +
geom_text(aes(label = paste(categoria, porcentaje, "%")), position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Diagrama de Pastel estado")
pie_chartAnalizando la variable cuantitativa discreta “Antigüedad”, tenemos que hacer un sondeo completo por las medidas estadísticas descriptiva. En donde, entre ellas están las medidas de tendencia central, dispersión y forma, acompañadas de gráficos ilustrativos. Sabiéndose que esta variable hace referencia a la antigüedad laboral que tiene cada cliente al momento de tener créditos de consumo.
Para la antigüedad se va a hallar la media aritmética, mediana y moda. Luego, se hará un análisis detallado de sus características y posibles conclusiones.
Antiguedad <- (muestra2[,2])
Antiguedad_1 <- as.matrix(Antiguedad)
colnames(Antiguedad_1) <- c("Antiguedad")
View(Antiguedad_1)Donde, su media aritmética esta situada en
## [1] 7.47
Lo cual nos indica que en promedio cada cliente al momento de tener créditos de consumo lleva casi 7 años y medio de antigüedad laboral. Además, tenemos que su mediana esta situada en:
## [1] 4
Donde, se concluye que en la variable, los clientes tienen de valor medio 4 años de antigüedad laboral cuando tienen créditos de consumo. Finalmente, la antigüedad laboral que mas se repite dentro de los clientes es:
mode <- function(Antiguedad_1) {
return(as.numeric(names(which.max(table(Antiguedad_1)))))
}
mode(Antiguedad_1)## [1] 1
1, siendo la antigüedad que más se repite en los clientes cuando tienen créditos de consumo.
El rango de la antigüedad laboral de los clientes se encuentra entre:
## [1] 0 43
Así, los valores se encuentran dentro del intervalo 0 a 43 años. Además, encontrando medidas de variabilidad, obtenemos que: * Varianza
## Antiguedad
## Antiguedad 64.21121
## [1] 8.01319
Concluyendo así, que la variabilidad entre los datos es de 8 puntos, lo cual indica que en general los datos tienden a estar lejos de la media.
## [1] 107.2716
Así, observamos que los datos tienen mucha variabilidad, es decir, son datos heterogéneos. Por lo que la media no es representativa en la variable.
Para ilustrar de mejor manera lo dicho anteriormente respecto a la antigüedad laboral de los clientes se harán gráficas tales como:
barplot(c(Media = mean(Antiguedad_1), Mediana = median(Antiguedad_1), Moda = mode(Antiguedad_1)),
main = 'Media, Mediana y Moda (Variable Antiguedad)', ylab = 'Valor medida',
col = c("#FF4040", "#FFF8DC", "#FF7F24"), ylim = c(0,8))Así podemos ver claramente que la variable es asimétrica, porque sus valores de media, mediana y moda no son iguales (tampoco similares).
library(ggplot2)
ggplot(muestra2, aes(x = "clientes", y = Antiguedad_1, fill = "clientes")) +
geom_boxplot() +
labs(title = "Boxplot de Antiguedad", x = "", y = "Antiguedad") +
scale_fill_manual(values = "cornsilk4") + # Personaliza el color del boxplot
coord_cartesian(ylim = c(0, 43)) +
guides(fill = FALSE)## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Existen alrededor de 4 datos atípicos, que son superiores a 20 en la
escala de la antiguedad laboral.
Sabiéndose que en esta variable se refiere al tipo de la propiedad de la vivienda podemos hacer análisis proporcionales. En donde, inicialmente la moda es:
## [1] propietario
## Levels: ignorar otra propietario padres privado alquila
La frecuencia más alta de los clientes se encuentra en que viven en un tipo de vivienda como propietarios. Además, de la moda, los percentiles que podemos observar son:
## ignorar otra propietario padres privado alquila
## 0 6 48 18 7 21
Lo cual representado gráficamente nos da una ilustración como,
library(ggplot2)
ggplot(muestra2, aes(x = vivienda_1, fill = vivienda_1)) +
geom_bar() +
labs(title = "Grafico de Barras de Vivienda 1", x = "Tipo de vivienda del cliente", y = "Frecuencia") +
scale_fill_manual(values = c("#EEDFCC", "#B3EE3A", "#FF4040", "darkslategray3", "darkorchid2"))
En donde se puede ver, lo descrito anteriormente, donde el cliente que
es propietario tiene mayor frecuencia respecto al resto
## [1] 46.62
La media aritmética de la variable del plazo por meses del crédito es de mas de 46 meses.
## [1] 60
Se observa una preferencia a adquirir créditos con un plazo de 60 meses.
## [1] 48
el valor medio de meses que escogen los clientes de un crédito es de 48 meses.
## [1] 12 60
Vemos que el rango del plazo por meses de los créditos adquiridos, es desde los 12 meses hasta los 60.
## [1] 216.6218
Al ver que la varianza es alta, esto significa que los plazo del crédito están más dispersos alrededor de la media.
## [1] 14.71808
Se ve una variación de mas de 14 meses alrededor de la media. Los valores tienden a estar más alejados de la media.
## [1] 0.3157031
Se ve una dispersión del 31,57% en la variación de los datos.
barplot(c(Media = mean(muestra2$Plazo), Mediana = median(muestra2$Plazo), Moda = mfv(muestra2$Plazo)),
main = 'Media, Mediana y Moda (Variable Plazo)', ylab = 'Plazo del credito',
col = c("#7FFFD4", "#FFAEB9", "#FFBBFF"), ylim = c(0,60))
al analizar la media y la mediana, vemos que al ser mayor la mediana
indica una asimetría o una distribución sesgada hacia la izquierda, con
valores más altos menos frecuentes.
boxplot(muestra2$Plazo, main="Diagrama de cajas del plazo del credito",
ylab=" ", col="deepskyblue2", horizontal = FALSE)Podemos ver la mediana que representa la tendencia central de los datos y al estar cerca del centro de la caja, indica una distribución asimétrica respecto al gráfico
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
frec_Plazo <- table(muestra2$Plazo)
dfPlazo <- as.data.frame(frec_Plazo)
attach(dfPlazo)
dfPlazo <- rename(dfPlazo, Plazo = Var1, Cantidad = Freq)
dBarraPlazo <- ggplot(dfPlazo, aes(x = Plazo, y= Cantidad, fill = Cantidad)) +
geom_bar(stat = 'identity') +
ylim(c(0,50))
dBarraPlazoSe ve en la gráfica la tendencia a adquirir créditos a plazos mas largo siendo muy claro la elección de 60 meses.
ggplot(dfPlazo, aes(x = as.numeric(rownames(dfPlazo)), y = Cantidad)) +
geom_point(col = "deepskyblue2") +
theme_bw() +
labs(title = "Grafico de Dispersion", subtitle = "Plazos del credito", y = "Número de personas", x= "Plazo")Plazohis<- density(muestra2$Plazo)
plot(Plazohis, frame = FALSE, col= "blue", main = "Histograma edad")Vemos una asimetría negativa, lo que indica una mayor distribución de los datos en la derecha por lo que hay una tendencia a los plazos de crédito mayores.
ggplot(muestra2, aes(sample = Plazo)) +
geom_qq(color="deepskyblue") +
theme_bw()+
labs(title = "QQ plot", subtitle = "Plazo", x = "Cuantiles teoricos", y= "Cuantiles de la muestra")
Vemos que los datos no se ajustan bien a la distribución teórica, lo que
indica una asimetría o sesgo.
## [1] 36.32
La media aritmética de la edad de los clientes, es de 36,32 años.
## [1] 32
El dato de la edad que mas se repite entre los clientes es de 32 años.
## [1] 33
El valor medio de las edades entre los clientes es de 33 años.
## [1] 21 61
El rango de edades de los clientes es desde los 21 hasta los 61 años.
## [1] 103.4925
Al ver que la varianza es alta, esto significa que las edades de los clientes están más dispersos alrededor de la media.
## [1] 10.17313
Se ve una variación de mas de 10 años alrededor de la media de edad. En otras palabras, los valores tienden a estar más alejados de la media.
## [1] 0.2800971
Se ve una dispersión del 28,01% en la variación de los datos de la edad. #### Gráficos
barplot(c(Media = mean(muestra2$Edad), Mediana = median(muestra2$Edad), Moda = mfv(muestra2$Edad)),
main = 'Media, Mediana y Moda (Variable Edad)', ylab = 'Edad',
col = c("#7FFFD4", "#FFAEB9", "#FFBBFF"), ylim = c(0,40))Se ve como la media es mayor que la mediana y la moda, lo que indica una distribución casi simétrica pero sin serlo.
boxplot(muestra2$Edad, main="Diagrama de cajas de Edad",
ylab=" ", col="deepskyblue2", horizontal = FALSE)En el anterior gráfico vemos que los datos tiene un rango de 40, en el primer cuartil es hasta 29 años, la mediana serian 33 años y el tercer cuartil serian 43,25 años, también al ver que su mediana esta mas hacia abajo se puede decir que tiene una leve asimetria.
library(ggplot2)
library(dplyr)
frec_Edad <- table(muestra2$Edad)
dfEdad <- as.data.frame(frec_Edad)
attach(dfEdad)## The following objects are masked from dfPlazo:
##
## Freq, Var1
dfEdad <- rename(dfEdad, Edad = Var1, Cantidad = Freq)
dBarraEdad <- ggplot(dfEdad, aes(x = Edad, y= Cantidad, fill = Cantidad)) +
geom_bar(stat = 'identity') +
ylim(c(0,8))
dBarraEdadLa gráfica indica que las personas alrededor de los 32 años son las que tienden a adquirir mas créditos.
ggplot(dfEdad, aes(x = as.numeric(rownames(dfEdad)), y = Cantidad)) +
geom_point(col = "deepskyblue2") +
theme_bw() +
labs(title = "Grafico de Dispersion", subtitle = "Edades", y = "Número de personas", x= "Edades")Edadhis<- density(muestra2$Edad)
plot(Edadhis, frame = FALSE, col= "blue", main = "Histograma edad")Se puede ver que los datos son asimétricos hacia la derecha es decir una asimetría positiva.
##
## divorciado casado separado soltero viudo
## 0 73 4 23 0
## divorciado casado separado soltero viudo
## 0 73 77 100 100
##
## divorciado casado separado soltero viudo
## 0.00 0.73 0.04 0.23 0.00
## divorciado casado separado soltero viudo
## 0.00 0.73 0.77 1.00 1.00
Se organizan todas las pruebas de la estadística descriptiva en una tabla de frecuencias
info_EstCivil <- data.frame(fabs_EstCivil, fabs_acum_EstCivil, frel_EstCivil, frel_acum_EstCivil)
colnames(info_EstCivil) <- c("1", "fabs_EstCivil", "fabs_acum_EstCivil", "","frel_EstCivil", "frel_acum_EstCivil")
info_EstCivil <- info_EstCivil[, -c(1)]
info_EstCivil <- info_EstCivil[, -c(3)]
attr(info_EstCivil, "caption") <- "Tabla de frecuencias: Estado civil"
print(info_EstCivil)## fabs_EstCivil fabs_acum_EstCivil frel_EstCivil frel_acum_EstCivil
## divorciado 0 0 0.00 0.00
## casado 73 73 0.73 0.73
## separado 4 77 0.04 0.77
## soltero 23 100 0.23 1.00
## viudo 0 100 0.00 1.00
Así, se reorganiza la información descriptiva en un diagrama de pie donde se evidencia que la mayoría de personas tienen un estado bueno de crédito
library(ggplot2)
library(forcats)
Estado_civil <- c("Categoría 1", "Categoría 2")
porcentaje <- c(0, 73, 4, 23, 0)
categoria <- c("Divorciado", "Casado", "Separado", "Soltero", "Viudo")
color <- c("#E066FF", "slategray1", "#68228B", "#FF6EB4" )
# Crear un dataframe con los datos
data <- data.frame(categoria, porcentaje)
# Colapsar las categorías con porcentaje cero en una sola categoría
data$categoria <- fct_collapse(data$categoria, "Divorciado y viudo) " = c("Divorciado", "Viudo"))
pie_chart <- ggplot(data, aes(x = factor(1), y = porcentaje, fill = categoria)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_manual(values = color) +
geom_text(aes(label = paste(porcentaje, "%")), position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Diagrama de Pastel estado civil")
pie_chartEl diagrama de pie demuestra que la mayoría de personas que adquieren un crédito se encuentran casadas (73%) y el 23% de la población muestral son solteras, estas dos categorías representan el 96% de la población total.
##
## no sí
## 79 21
## no sí
## 79 100
##
## no sí
## 0.79 0.21
## no sí
## 0.79 1.00
Se organizan todas las pruebas de la estadística descriptiva en una tabla de frecuencias
info_registros <- data.frame(fabs_registros, fabs_acum_registros, frel_registros, frel_acum_registros)
colnames(info_registros) <- c("1", "fabs_registros", "fabs_acum_registros", "", "frel_registros", "frel_acum_registros")
info_registros <- info_registros[, -c(1)]
info_registros <- info_registros[, -c(3)]
attr(info_registros, "caption") <- "Tabla de frecuencias: Registros"
print(info_registros)## fabs_registros fabs_acum_registros frel_registros frel_acum_registros
## no 79 79 0.79 0.79
## sí 21 100 0.21 1.00
Así, se reorganiza la información descriptiva en un diagrama de pie donde se evidencia que la mayoría de personas tienen una existencia a un registro previo a tener créditos de consumo.
library(ggplot2)
Registro <- c("Categoría 1", "Categoría 2")
porcentaje <- c(21, 79)
categoria <- c("Si", "No" )
color <- c("#1874CD", "slategray1" )
# Crear un dataframe con los datos
data <- data.frame(categoria, porcentaje)
pie_chart <- ggplot(data, aes(x = factor(1), y = porcentaje, fill = categoria)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
theme_void() +
scale_fill_manual(values = color) +
geom_text(aes(label = paste(porcentaje, "%")), position = position_stack(vjust = 0.5), size = 5) +
labs(title = "Diagrama de Pastel registros")
pie_chartEn la siguiente variable vamos a encontrar el tipo de trabajo que tienen cada uno de los clientes de la muestra. Pudimos observar que los tipos de trabajo son: Fijo, Freelance, Tiempo parcial.
##
## fijo freelance otros tiempo parcial
## 69 21 0 10
## [1] fijo fijo tiempo parcial fijo fijo
## [6] tiempo parcial fijo fijo fijo fijo
## [11] freelance fijo fijo freelance freelance
## [16] fijo fijo tiempo parcial fijo fijo
## [21] fijo freelance fijo freelance freelance
## [26] freelance fijo fijo fijo freelance
## [31] fijo fijo tiempo parcial fijo fijo
## [36] freelance fijo fijo fijo fijo
## [41] freelance fijo fijo freelance tiempo parcial
## [46] tiempo parcial fijo freelance fijo fijo
## [51] fijo fijo fijo freelance fijo
## [56] fijo fijo fijo fijo fijo
## [61] fijo fijo tiempo parcial fijo fijo
## [66] fijo fijo fijo tiempo parcial freelance
## [71] fijo fijo fijo fijo fijo
## [76] freelance freelance fijo freelance tiempo parcial
## [81] fijo fijo freelance fijo fijo
## [86] fijo freelance fijo fijo fijo
## [91] fijo fijo fijo freelance fijo
## [96] fijo tiempo parcial freelance fijo fijo
## Levels: fijo freelance otros tiempo parcial
## Warning: package 'modeest' is in use and will not be installed
library(ggplot2)
ggplot(muestra2, aes(x = trabajo_1, fill = trabajo_1)) +
geom_bar() +
labs(title = "Grafico de Barras de Trabajo 1", x = "Tipo de Trabajo ", y = "Frecuencia") +
scale_fill_manual(values = c("#EEDFCC", "#FF4040", "darkslategray3", "darkorchid2"))## fijo freelance otros tiempo parcial
## 69 21 0 10
A partir de la gráfica podemos ver que el tipo de trabajo que más se repite es el de trabajo fijo con una frecuencia superior a 60 individuos, seguido a este, encontramos el Trabajo Freelance con una frecuencia superior a 20 individuos y por último esta el trabajo a Tiempo Parcial.
## [1] 54.07
La media aritmética de los gastos de los clientes es de 54,07 dolares.
## [1] 35
El monto de gasto mas común entre los clientes es de 35 dolares
## [1] 47
El valor medio de los gastos entre los clientes es de 47 dolares.
## [1] 35 90
El rango de los gastos es desde los 35 dólares hasta los 90 dólares.
## [1] 294.6112
Vemos una varianza muy elevada, lo que indica un alejamiento de los datos de la media de los gastos.
## [1] 17.16424
Se ve una desviación de mas de 17 dolares alrededor de la media de los gastos entre los clientes.
## [1] 0.3174448
Vemos una variación del 31,74% de los gastos.
barplot(c(Media = mean(muestra2$Gastos), Mediana = median(muestra2$Gastos), Moda = mfv(muestra2$Gastos)),
main = 'Media, Mediana y Moda (Variable Gastos)', ylab = 'Gastos',
col = c("#7FFFD4", "#FFAEB9", "#FFBBFF"), ylim = c(0,60))Se ve como la media es mayor que la mediana y la moda, lo que indica una distribución sesgada hacia la derecha.
boxplot(muestra2$Gastos, main="Diagrama de cajas de Gastos",
ylab=" ", col="deepskyblue2", horizontal = FALSE)Podemos ver la mediana que representa la tendencia central de los datos y al estar cerca del centro de la caja, indica una distribución asimétrica.
library(ggplot2)
library(dplyr)
frec_Gastos <- table(muestra2$Gastos)
dfGastos <- as.data.frame(frec_Gastos)
attach(dfGastos)## The following objects are masked from dfEdad:
##
## Freq, Var1
## The following objects are masked from dfPlazo:
##
## Freq, Var1
dfGastos <- rename(dfGastos, Gastos = Var1, Cantidad = Freq)
dBarraGastos <- ggplot(dfGastos, aes(x = Gastos, y= Cantidad, fill = Cantidad)) +
geom_bar(stat = 'identity') +
ylim(c(0,30))
dBarraGastosSe ve una distribución de los gastos muy variada, tendiendo a una mayoría de los gastos por un valor de 35 dolares.
ggplot(dfGastos, aes(x = as.numeric(rownames(dfGastos)), y = Cantidad)) +
geom_point(col = "deepskyblue2") +
theme_bw() +
labs(title = "Grafico de Dispersion", subtitle = "Gastos (USD)", y = "Número de personas", x= "Gastos")Gastoshis<- density(muestra2$Gastos)
plot(Edadhis, frame = FALSE, col= "blue", main = "Histograma Gastos")Se puede ver que los datos son asimétricos hacia la derecha es decir una asimetría positiva.
El análisis de esta variable se hará exluyendo todos aquellos valores NA que se tienen en el registro.
Ingresos <- (muestra2$Ingresos)
prom_ingresos <- mean(Ingresos, na.rm = TRUE)
cat("El promedio de los ingresos es", prom_ingresos)## El promedio de los ingresos es 143.0575
Ingresos <- muestra2$Ingresos
# Ordenar los ingresos en orden descendente
Ingresos_ordenados <- sort(Ingresos, decreasing = TRUE)
# Calcular la mediana de los ingresos ignorando NA
mediana_ingresos <- median(Ingresos_ordenados, na.rm = TRUE)
cat("La mediana de los ingresos es", mediana_ingresos)## La mediana de los ingresos es 120
Ingresos <- (muestra2$Ingresos)
moda_Ingresos <- function(Ingresos) {
return(as.numeric(names(which.max(table(Ingresos)))))
}
moda_Ingresos(Ingresos)## [1] 120
## La moda de los datos es 120
Este dato quiere decir que la mayoría o el dato que mas se repite es para los ingresos de 143.05
## The following objects are masked _by_ .GlobalEnv:
##
## Antiguedad, Estado, Ingresos
Ingresos <- muestra2$Ingresos
# Calcular el rango de los ingresos ignorando NA
rango_ingresos <- range(Ingresos, na.rm = TRUE)
rango_ingresos## [1] 38 400
Así, el rango entre los datos es desde ingresos de 38 hasta 400 dólares. * Varianza
Ingresos <- muestra2$Ingresos
# Calcular la varianza de los ingresos ignorando NA
varianza_ingresos <- round(var(Ingresos, na.rm = TRUE), 3)
cat("La varianza de los ingresos es", varianza_ingresos)## La varianza de los ingresos es 5968.776
Ingresos <- muestra2$Ingresos
# Calcular la desviación estándar de los ingresos ignorando NA
desvest_ingresos <- round(sd(Ingresos, na.rm = TRUE), 3)
cat("La desviación estándar de los ingresos es", desvest_ingresos)## La desviación estándar de los ingresos es 77.258
Lo cual indica que son dispersos respecto a la media.
coef_var_ingresos <- desvest_ingresos/ prom_ingresos
cat("El coeficiente de variacion es", coef_var_ingresos)## El coeficiente de variacion es 0.5400487
Ingresos <- muestra2$Ingresos
# Calcular los cuartiles de los ingresos ignorando NA
q_Ingresos <- quantile(x = Ingresos, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
# Mostrar los cuartiles
q_Ingresos## 0% 25% 50% 75% 100%
## 38.0 91.0 120.0 164.5 400.0
En la sección anterior se determinaron los cuartiles de la estadística y se organizaron en una tabla donde se evidencia el primer, segundo, tercer y cuarto cuartal, se puede asumir que está bien ya que el segundo cuartil equivale a la mediana de la estadística.
Ingresos <- muestra2$Ingresos
# Calcular el rango intercuartil (RI) ignorando NA
ri_ingresos <- quantile(Ingresos, 0.75, type = 6, na.rm = TRUE) - quantile(Ingresos, 0.25, type = 6, na.rm = TRUE)
ri_ingresos## 75%
## 78
# Calcular el límite inferior (LI) ignorando NA
li_ingresos <- quantile(Ingresos, 0.25, type = 6, na.rm = TRUE)
li_ingresos## 25%
## 90
# Calcular el límite superior (LS) ignorando NA
ls_ingresos <- quantile(Ingresos, 0.75, type = 6, na.rm = TRUE)
ls_ingresos## 75%
## 168
Ingresos <- muestra2$Ingresos
# Crear un diagrama de caja para los ingresos sin NA
boxplot(Ingresos, id = list(method = "y"), col = "lightblue", horizontal = FALSE, main = "Diagrama de caja para Ingresos", outline = FALSE)El boxplot anterior demuestra que la mayoría de las personas de la muestra tienden a tener unos ingresos similares pero mayores al promedio.
Para poder realizar las pruebas de curtosis y skewness se necesita la libreria moments
##
## Attaching package: 'moments'
## The following object is masked from 'package:modeest':
##
## skewness
Ingresos <- muestra2$Ingresos
# Calcular la kurtosis de los ingresos sin NA
k_ingresos <- kurtosis(Ingresos, na.rm = TRUE)
k_ingresos## [1] 4.245865
library(ggplot2)
# Filtrar y eliminar NA de la columna 'Ingresos'
Ingresos <- muestra2$Ingresos[!is.na(muestra2$Ingresos)]
# Crear un data frame con los ingresos sin NA
df <- data.frame(Ingresos)
# Verificar que haya valores numéricos finitos
if(length(df$Ingresos) > 0) {
# Calcular la media y la desviación estándar de los ingresos sin NA
media_ingresos <- mean(df$Ingresos)
desviacion_estandar_ingresos <- sd(df$Ingresos)
# Crear un rango de valores
rango_valores <- seq(min(df$Ingresos), max(df$Ingresos), length.out = 1000)
# Calcular la densidad normal
densidad_normal <- dnorm(rango_valores, mean = media_ingresos, sd = desviacion_estandar_ingresos)
# Crear el gráfico
ggplot(df, aes(x = Ingresos)) +
geom_histogram(aes(y = ..density..), binwidth = 10,
colour = "black", fill = "white") +
geom_density(lwd = 1, colour = "red", fill = "red", alpha = 0.25) +
theme_minimal()
} else {
cat("No hay valores numéricos finitos en la columna 'Ingresos'.")
}## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
como se evidencia en el gráfico el pico es bastante achatado, a pesar de que la kurtosis es positiva su valor es bastante bajo lo que indica que los datos no tienen buena distribución normal, ademas de la deformación en las colas de la campana.
##
## Attaching package: 'e1071'
## The following objects are masked from 'package:moments':
##
## kurtosis, moment, skewness
## The following object is masked from 'package:modeest':
##
## skewness
Ingresos <- muestra2$Ingresos
# Calcular el sesgo de los ingresos sin NA
sesgo_ingresos <- skewness(Ingresos, na.rm = TRUE)
sesgo_ingresos## [1] 1.330451
Apoyado en la prueba de skewness se confirma la simetría de la distribución, si skewness > 0 la distribución presenta una deformación en la cola derecha lo que significa que la suposición realizada con el diagrama de boxplot fue correcta, que, la mayoría de las personas tienen mayores ingresos que el promedio.
Los activos pueden indicar la estabilidad financiera de los individuos, a continuación encontraremos la frecuencia absoluta, frecuencia absoluta acumulada, frecuencia relativa y frecuencia relativa acumulada de los datos obtenidos en la muestra.
frec_act <- table(muestra2$Activos)
frecacum_act <- cumsum(frec_act)
frecrel_act <- frec_act/length(muestra2$Activos)
frecrelacum_act <- cumsum(frecrel_act)
tabla_frec_act <- cbind(frec_act,frecacum_act,frecrel_act,frecrelacum_act);tabla_frec_act## frec_act frecacum_act frecrel_act frecrelacum_act
## 0 38 38 0.38 0.38
## 1200 1 39 0.01 0.39
## 1500 2 41 0.02 0.41
## 2000 2 43 0.02 0.43
## 2500 5 48 0.05 0.48
## 2800 1 49 0.01 0.49
## 3000 3 52 0.03 0.52
## 3500 2 54 0.02 0.54
## 4000 5 59 0.05 0.59
## 4500 6 65 0.06 0.65
## 5000 7 72 0.07 0.72
## 5100 1 73 0.01 0.73
## 6000 3 76 0.03 0.76
## 6500 1 77 0.01 0.77
## 7000 2 79 0.02 0.79
## 7500 1 80 0.01 0.80
## 8000 3 83 0.03 0.83
## 9000 3 86 0.03 0.86
## 10000 2 88 0.02 0.88
## 11500 1 89 0.01 0.89
## 12000 1 90 0.01 0.90
## 14000 2 92 0.02 0.92
## 15000 2 94 0.02 0.94
## 18000 1 95 0.01 0.95
## 20000 2 97 0.02 0.97
## 25000 2 99 0.02 0.99
## 100000 1 100 0.01 1.00
A continuación, hallaremos para los activos la media aritmética, moda y mediana La media aritmética esta situada en:
## [1] 5331
Lo cual indica que los activos están en un promedio de 5331 dólares.
## [1] 3000
Indica que el valor medio de los activos está situado en 3000 dólares.
## [1] 0 100000
Indica que los valores oscilan entre 0 y 100000 dólares.
En activos, la varianza es:
## [1] 122190241
## [1] 11053.97
Su desviación indica dispersión de los datos respecto a la media.
## [1] 207.3526
library(ggplot2)
ggplot(muestra2, aes(x = "clientes", y = Activos , fill = "clientes")) +
geom_boxplot() +
labs(title = "Boxplot de Activos", x = "", y = "Activos") +
scale_fill_manual(values = "cornsilk4") +
coord_cartesian(ylim = c(0,100000))Los datos son realmente dispersos e indican unos otuliers que tienen una cantidad considerable de activos. Además, es claro ver que la variable tiene una asimetria bastante notoria.
Cantidad o monto de deudas
frec_de <- table(muestra2$Deuda)
frecacum_de <- cumsum(frec_de)
frecrel_de <- frec_de/length(muestra2$Deuda)
frecrelacum_de <- cumsum(frecrel_de)
tabla_frec_de <- cbind(frec_de,frecacum_de,frecrel_de,frecrelacum_de);tabla_frec_de## frec_de frecacum_de frecrel_de frecrelacum_de
## 0 79 79 0.79 0.79
## 30 1 80 0.01 0.80
## 400 1 81 0.01 0.81
## 450 1 82 0.01 0.82
## 600 2 84 0.02 0.84
## 700 1 85 0.01 0.85
## 800 2 87 0.02 0.87
## 1000 2 89 0.02 0.89
## 1100 1 90 0.01 0.90
## 1700 1 91 0.01 0.91
## 1810 1 92 0.01 0.92
## 2000 1 93 0.01 0.93
## 2500 1 94 0.01 0.94
## 3000 2 96 0.02 0.96
## 3500 1 97 0.01 0.97
## 3700 1 98 0.01 0.98
## 3900 1 99 0.01 0.99
## 4000 1 100 0.01 1.00
## [1] 365.9
En promedio las personas deben 365.9 dólares * Mediana
## [1] 0
El valor medio del monto de la deuda de las personas es de 0 dólares. * Moda
## [1] 0
Así, el valor de deuda más frecuente en la variable es de 0 dólares. #### Medidas de dispersión * Rango
## [1] 0 4000
Como podemos ver anteriormente, el rango de precios de este conjunto es bastante amplio, esto indica estos varían significativamente en este conjunto de datos
La varianza es:
## [1] 850921.4
Esto nos indica que los valores de deuda en el conjunto de datos tienen una alta una alta variabilidad en torno a su valor promedio.
## [1] 922.454
Esto significa que, en promedio, las cantidades de deuda en el conjunto de datos tienden a estar aproximadamente a una distancia de 922.454 unidades de la media de las cantidades de deuda.
El coeficiente de variacion es:
## [1] 252.1055
Como podemos ver la desviación estándar de la variabe Deuda es apoximadamente 252.11% de la media
medidas <- c("Media", "Mediana", "Moda")
valores <- c(media_de, median_de, mode_de)
barplot(valores, names.arg = medidas,
main = 'Media, Mediana y Moda (Variable Deuda)',
ylab = 'Valor medida',
col = c("#FF4040", "#FFF8DC", "#FF7F24"), ylim = c(0, 1))
Esto indica una completa asimetria, sabiendo que la mediana y la moda
son cero. * Boxplot Ahora, analizando datos dentro de la variable
podemos ver que,
library(ggplot2)
ggplot(muestra2, aes(x = "clientes", y = Deuda , fill = "clientes")) +
geom_boxplot() +
labs(title = "Boxplot de Deuda", x = "", y = "Deuda") +
scale_fill_manual(values = "#2F4F4F") + # Personaliza el color del boxplot
coord_cartesian(ylim = c(0,5000))
Confirmando lo dicho anteriormente en el diagrama de barras.
*Media
Cantidad <- (muestra2$Cantidad)
prom_cantidad <- mean(muestra2$Cantidad)
cat("El promedio de la cantidad es", prom_cantidad)## El promedio de la cantidad es 995.7
## [1] 2000 2000 1800 1800 1700 1700 1650 1600 1600 1600 1550 1500 1500 1500 1450
## [16] 1420 1400 1400 1400 1400 1360 1350 1350 1300 1300 1300 1300 1300 1260 1250
## [31] 1200 1200 1200 1200 1200 1150 1150 1100 1100 1100 1100 1100 1100 1080 1050
## [46] 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 950 920 900 900 900
## [61] 875 800 800 800 800 800 800 800 775 750 700 700 660 650 600
## [76] 600 600 600 600 600 600 600 560 550 500 500 500 500 500 500
## [91] 450 400 400 360 350 350 300 275 250 175
mediana_cantidad <- median(muestra2$Cantidad)
cat("El valor promedio de la cantidad es", mediana_cantidad)## El valor promedio de la cantidad es 1000
## The following objects are masked _by_ .GlobalEnv:
##
## Antiguedad, Cantidad, Estado, Ingresos
## The following objects are masked from muestra2 (pos = 5):
##
## Activos, Antiguedad, Cantidad, Deuda, Edad, Estado, EstadoCivil,
## Gastos, Ingresos, Plazo, Precio, Registros, Trabajo, Vivienda
moda_cantidad <- function(Cantidad) {
return(as.numeric(names(which.max(table(Cantidad)))))
}
moda_cantidad(Cantidad)## [1] 1000
## El valor que más se repite en los datos es 1000
## The following objects are masked _by_ .GlobalEnv:
##
## Antiguedad, Cantidad, Estado, Ingresos
## The following objects are masked from muestra2 (pos = 3):
##
## Activos, Antiguedad, Cantidad, Deuda, Edad, Estado, EstadoCivil,
## Gastos, Ingresos, Plazo, Precio, Registros, Trabajo, Vivienda
## The following objects are masked from muestra2 (pos = 6):
##
## Activos, Antiguedad, Cantidad, Deuda, Edad, Estado, EstadoCivil,
## Gastos, Ingresos, Plazo, Precio, Registros, Trabajo, Vivienda
Cantidad <- muestra2$Cantidad
# Calcular el rango de los cantidad ignorando NA
rango_Cantidad <- range(Cantidad, na.rm = TRUE)
rango_Cantidad## [1] 175 2000
Los valores están entre 175 y los 2000 dólares.
Cantidad <- muestra2$Cantidad
# Calcular la varianza de los cantidad ignorando NA
varianza_Cantidad <- round(var(Cantidad, na.rm = TRUE), 3)
cat("La varianza de los cantidad es", varianza_Cantidad)## La varianza de los cantidad es 178569.2
Cantidad <- muestra2$Cantidad
# Calcular la desviación estándar de los cantidad ignorando NA
desvest_Cantidad <- round(sd(Cantidad, na.rm = TRUE), 3)
cat("La desviación estándar de los cantidad es", desvest_Cantidad)## La desviación estándar de los cantidad es 422.574
Así, los valores son dispersos respecto a la media. * Coeficiente de variación
coef_var_Cantidad <- desvest_Cantidad / prom_cantidad
cat("El coeficiente de variación es", coef_var_Cantidad)## El coeficiente de variación es 0.4243989
Cantidad <- muestra2$Cantidad
# Calcular los cuartiles de los cantidad ignorando NA
q_Cantidad <- quantile(x = Cantidad, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
# Mostrar los cuartiles
q_Cantidad## 0% 25% 50% 75% 100%
## 175 600 1000 1300 2000
En la sección anterior se determinaron los cuartiles de la estadística y se organizaron en una tabla donde se evidencia el primer, segundo, tercer y cuarto cuartil, se puede asumir que está bien ya que el segundo cuartil equivale a la mediana de la estadística.
Cantidad <- muestra2$Cantidad
# Calcular el rango intercuartil (RI) ignorando NA
ri_Cantidad <- quantile(Cantidad, 0.75, type = 6, na.rm = TRUE) - quantile(Cantidad, 0.25, type = 6, na.rm = TRUE)
ri_Cantidad## 75%
## 700
# Calcular el límite inferior (LI) ignorando NA
li_Cantidad <- quantile(Cantidad, 0.25, type = 6, na.rm = TRUE)
li_Cantidad## 25%
## 600
# Calcular el límite superior (LS) ignorando NA
ls_Cantidad <- quantile(Cantidad, 0.75, type = 6, na.rm = TRUE)
ls_Cantidad## 75%
## 1300
*Boxplot
Cantidad <- muestra2$Cantidad
# Crear un diagrama de caja para los cantidad sin NA
boxplot(Cantidad, id = list(method = "y"), col = "lightblue", horizontal = FALSE, main = "Diagrama de caja para Cantidad", outline = FALSE)El boxplot anterior demuestra que la mayoría de las personas de la muestra tienden a solicitar una cantidad de prestamos similar.
Para poder realizar las pruebas de curtosis y skewness se necesita la libreria moments
# Instala y carga el paquete moments si aún no lo has hecho
# install.packages("moments")
library(moments)
Cantidad <- muestra2$Cantidad
# Calcular la kurtosis de los cantidad sin NA
k_Cantidad <- kurtosis(Cantidad, na.rm = TRUE)
k_Cantidad## [1] -0.6979955
# install.packages("ggplot2")
library(ggplot2)
Cantidad <- muestra2$Cantidad
# Crear un data frame con los cantidad sin NA
df <- data.frame(Cantidad)
# Calcular la media y la desviación estándar de los cantidad sin NA
media_Cantidad <- mean(df$Cantidad, na.rm = TRUE)
desviacion_estandar_Cantidad <- sd(df$Cantidad, na.rm = TRUE)
# Crear un rango de valores
rango_valores <- seq(min(df$Cantidad), max(df$Cantidad), length.out = 1000)
# Calcular la densidad normal
densidad_normal <- dnorm(rango_valores, mean = media_Cantidad, sd = desviacion_estandar_Cantidad)
# Crear el gráfico
ggplot(df, aes(x = Cantidad)) +
geom_histogram(aes(y = ..density..), binwidth = 10,
colour = "black", fill = "white") +
geom_density(lwd = 1, colour = "red", fill = "red", alpha = 0.25) +
theme_minimal()como se evidencia en el gráfico el pico es bastante achatado, a pesar de que la kurtosis es positiva su valor es bastante bajo lo que indica que los datos no tienen buena distribución normal, ademas de la deformación en las colas de la campana.
library(e1071)
Cantidad <- muestra2$Cantidad
# Calcular el sesgo de los cantidad sin NA
sesgo_Cantidad <- skewness(Cantidad, na.rm = TRUE)
sesgo_Cantidad## [1] 0.1851254
Apoyado en la prueba de skewness se confirma la asimetria de la distribución, si skewness >0 la distribución presenta una deformación en la cola derecha lo que significa que la suposición realizada con el diagrama de boxplot fue correcta, que, la mayoría de las personas tienden a pedir una mayor cantidad de prestamo que el promedio.
A continuación observamos una tabla en donde se encuentra la frecuencia absoluta, frecuencia absoluta acumulada, frecuencia relativa y frecuencia absoluta acumulada de la variable Precio del crédito.
frec_precio <- table(muestra2$Precio)
frecacum_precio <- cumsum(frec_precio)
frecrel_precio <- frec_precio/length(muestra2$Precio)
frecrelacum_precio <- cumsum(frecrel_precio)
tabla_frec_precio <- cbind(frec_precio,frecacum_precio,frecrel_precio,frecrelacum_precio);tabla_frec_precio## frec_precio frecacum_precio frecrel_precio frecrelacum_precio
## 225 1 1 0.01 0.01
## 275 1 2 0.01 0.02
## 400 1 3 0.01 0.03
## 500 2 5 0.02 0.05
## 550 1 6 0.01 0.06
## 575 1 7 0.01 0.07
## 600 1 8 0.01 0.08
## 675 1 9 0.01 0.09
## 745 1 10 0.01 0.10
## 750 1 11 0.01 0.11
## 850 1 12 0.01 0.12
## 875 1 13 0.01 0.13
## 916 1 14 0.01 0.14
## 950 2 16 0.02 0.16
## 975 1 17 0.01 0.17
## 980 1 18 0.01 0.18
## 994 1 19 0.01 0.19
## 1021 1 20 0.01 0.20
## 1073 1 21 0.01 0.21
## 1077 1 22 0.01 0.22
## 1084 1 23 0.01 0.23
## 1100 1 24 0.01 0.24
## 1101 1 25 0.01 0.25
## 1111 1 26 0.01 0.26
## 1124 1 27 0.01 0.27
## 1150 1 28 0.01 0.28
## 1156 1 29 0.01 0.29
## 1163 1 30 0.01 0.30
## 1168 1 31 0.01 0.31
## 1175 1 32 0.01 0.32
## 1195 1 33 0.01 0.33
## 1200 1 34 0.01 0.34
## 1204 1 35 0.01 0.35
## 1212 1 36 0.01 0.36
## 1213 1 37 0.01 0.37
## 1215 1 38 0.01 0.38
## 1224 1 39 0.01 0.39
## 1238 1 40 0.01 0.40
## 1242 1 41 0.01 0.41
## 1250 1 42 0.01 0.42
## 1258 1 43 0.01 0.43
## 1265 1 44 0.01 0.44
## 1296 1 45 0.01 0.45
## 1300 2 47 0.02 0.47
## 1320 1 48 0.01 0.48
## 1346 1 49 0.01 0.49
## 1364 1 50 0.01 0.50
## 1369 1 51 0.01 0.51
## 1380 1 52 0.01 0.52
## 1386 1 53 0.01 0.53
## 1410 1 54 0.01 0.54
## 1411 1 55 0.01 0.55
## 1420 1 56 0.01 0.56
## 1435 1 57 0.01 0.57
## 1457 1 58 0.01 0.58
## 1460 1 59 0.01 0.59
## 1472 1 60 0.01 0.60
## 1475 1 61 0.01 0.61
## 1480 1 62 0.01 0.62
## 1520 1 63 0.01 0.63
## 1537 1 64 0.01 0.64
## 1550 1 65 0.01 0.65
## 1560 1 66 0.01 0.66
## 1565 1 67 0.01 0.67
## 1570 1 68 0.01 0.68
## 1600 1 69 0.01 0.69
## 1602 1 70 0.01 0.70
## 1634 1 71 0.01 0.71
## 1646 1 72 0.01 0.72
## 1650 1 73 0.01 0.73
## 1654 1 74 0.01 0.74
## 1678 1 75 0.01 0.75
## 1705 2 77 0.02 0.77
## 1714 1 78 0.01 0.78
## 1763 1 79 0.01 0.79
## 1800 1 80 0.01 0.80
## 1850 1 81 0.01 0.81
## 1852 1 82 0.01 0.82
## 1854 1 83 0.01 0.83
## 1878 1 84 0.01 0.84
## 1905 1 85 0.01 0.85
## 1923 1 86 0.01 0.86
## 1930 1 87 0.01 0.87
## 2070 1 88 0.01 0.88
## 2100 1 89 0.01 0.89
## 2120 1 90 0.01 0.90
## 2189 1 91 0.01 0.91
## 2220 1 92 0.01 0.92
## 2262 1 93 0.01 0.93
## 2320 1 94 0.01 0.94
## 2400 1 95 0.01 0.95
## 2450 1 96 0.01 0.96
## 2500 1 97 0.01 0.97
## 2600 1 98 0.01 0.98
## 2700 1 99 0.01 0.99
## 2961 1 100 0.01 1.00
Encontramos a la media situada en:
## [1] 1411.22
Lo anterior significa que podemos considerar que 1411.22 es el precio promedio en el conjunto de datos.
## [1] 1366.5
El dato encontrado nos indica que al menos el 50% de los precios son iguales o menores que 1366.5, y al menos el 50% son iguales o mayores que 1366.5.
El rango esta entre:
## [1] 225 2961
El precio del crédito oscila entre los 225 y 2691 dólares. La varianza es:
## [1] 281945
Esto significa que los precios en el conjunto de datos de la muestra tomada tienen una dispersión o variabilidad de aproximadamente 281,945 unidades alrededor de su valor promedio
Su desviación estándar
## [1] 530.9849
Esto nos indica que, en promedio, las cantidades de deuda en el conjunto de datos tienden a estar aproximadamente a una distancia de 922.454 unidades de la media de las cantidades de Precio.
## [1] 37.62595
Como podemos ver la desviación estándar de la variable Precio es aproximadamente 37.62% de la media
library(ggplot2)
ggplot(muestra2, aes(x = "clientes", y = Precio, fill = "clientes")) +
geom_boxplot() +
labs(title = "Boxplot de Precio", x = "", y = "Precio") +
scale_fill_manual(values = "#2F4F4F") + # Personaliza el color del boxplot
coord_cartesian(ylim = c(0,5000))
Los datos cuentan con datos atípicos y una leve simetría entre
ellos.
Así finalizando de desarrollar los análisis estadísticos de estas variables de estudio se concluye que en líneas generales casi ninguna de ellas tienden a ser simétricas respecto al contexto de la base de datos.