📅 4 de Octubre de 2025
library(dplyr)
library(datos)
library(ggplot2)
library(descriptr)
library(flextable)
library(modeest)
library(moments)
library(readxl)
library(fdth)
library(plotrix)
library(knitr)
library(RColorBrewer)
set.seed(6483)# Cargar base
base <- read_excel("C:/Users/nikog/Downloads/Base_Estadistica_Descriptiva.xlsx")
# Tomar muestra de 100 observaciones
muestra <- base %>% sample_n(100)
# Calcular proporción de estudiantes por nivel educativo
tabla_nivel <- muestra %>%
count(NivelEducativo) %>%
mutate(Proporcion = n / sum(n))
tabla_nivel## # A tibble: 4 × 3
## NivelEducativo n Proporcion
## <chr> <int> <dbl>
## 1 Primaria 17 0.17
## 2 Secundaria 35 0.35
## 3 Técnico 19 0.19
## 4 Universitario 29 0.29
# Gráfico de barras de proporciones
n <- length(unique(tabla_nivel$NivelEducativo)) #Definir n
colores <- brewer.pal(9, "Blues")[3:(3 + n - 1)] #Definir tonos de azules notorios
p1 <- ggplot(tabla_nivel, aes(x = NivelEducativo, y = Proporcion, fill = NivelEducativo)) +
geom_col(show.legend = FALSE) +
scale_fill_manual(values = colores) + #Aplicación de la paleta
labs(title = "Proporcion por NivelEducativo",
x = "NivelEducativo", y = "Proporcion") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 20, vjust = 0.6))
print(p1)# Construir tabla de frecuencias absolutas y relativas
tabla_frec <- muestra %>%
count(NivelEducativo) %>%
mutate(FrecuenciaRelativa = round(n / sum(n), 3))
tabla_frec## # A tibble: 4 × 3
## NivelEducativo n FrecuenciaRelativa
## <chr> <int> <dbl>
## 1 Primaria 17 0.17
## 2 Secundaria 35 0.35
## 3 Técnico 19 0.19
## 4 Universitario 29 0.29
# Gráfico de barras (frecuencia absoluta)
p1b <- ggplot(tabla_frec, aes(x = NivelEducativo, y = n, fill = NivelEducativo)) +
geom_col(show.legend = FALSE) +
labs(title = "Frecuencia absoluta por Nivel Educativo",
x = "Nivel Educativo", y = "Frecuencia absoluta") +
theme_minimal() +
scale_fill_manual(values = colores) +
theme(axis.text.x = element_text(angle = 20, vjust = 0.6))
print(p1b)## # A tibble: 3 × 3
## Genero n Porcentaje
## <chr> <int> <dbl>
## 1 Femenino 35 35
## 2 Masculino 30 30
## 3 Otro 35 35
# Gráfico de pastel
p2 <- ggplot(tabla_genero, aes(x = "", y = Porcentaje, fill = Genero)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y") +
scale_fill_manual(values = colores) +
labs(title = "Distribucion por Genero") +
theme_void() +
geom_text(aes(label = paste0(round(Porcentaje,1), "%")),
position = position_stack(vjust = 0.5))
print(p2)## tibble [100 × 8] (S3: tbl_df/tbl/data.frame)
## $ ID : num [1:100] 5.20e+08 3.29e+08 8.09e+07 1.73e+08 6.86e+07 ...
## $ Genero : chr [1:100] "Otro" "Femenino" "Otro" "Masculino" ...
## $ NivelEducativo: chr [1:100] "Universitario" "Secundaria" "Primaria" "Técnico" ...
## $ Edad : num [1:100] 62 18 47 18 52 38 53 49 63 31 ...
## $ Hermanos : num [1:100] 2 6 2 4 0 2 1 0 0 1 ...
## $ Estatura : num [1:100] 1.98 1.61 1.63 1.67 1.59 1.98 1.51 1.84 1.93 1.54 ...
## $ IngresoMensual: num [1:100] 1902 1826 1615 2925 1021 ...
## $ HorasDeTrabajo: num [1:100] 31.1 62.1 51 58.6 33.7 41 43.2 41.6 39.9 45.6 ...
## # A tibble: 5 × 5
## ID Genero NivelEducativo Edad Hermanos
## <dbl> <chr> <chr> <dbl> <dbl>
## 1 519831965 Otro Universitario 62 2
## 2 329351871 Femenino Secundaria 18 6
## 3 80911557 Otro Primaria 47 2
## 4 172937687 Masculino Técnico 18 4
## 5 68606875 Femenino Técnico 52 0
## El promedio de la variable edad es: 41.11
## La mediana de la variable edad: 41.5
## la desviación estándar de la variable edad es: 14.38286
Con las funciones mean, median y sd podemos determinar que para la variable edad son; 39.81, 38 y 13.7 respectivamente. Siendo que mean es la función para media, median para mediana y sd para desviación estándar. Observamos que la media y mediana tienden casi a un mismo número, y que hay una dispersión de casi 14 años en la edad de los encuestados.
##
## 0 1 2 3 4 5 6
## 15 19 15 14 12 11 14
frec1 <- table(datos.d$Hermanos)
barra <- barplot(frec1, col = colores,
horiz = FALSE,
ylab = "Frecuencia absoluta",
border = TRUE,
ylim = c(0,20),
width = 1)Podemos concluir que la cantidad de personas que tienen más de tres hermanos son 44, siendo la suma de las personas que tienen 4, 5 o hasta 6 hermanos en la gráfica, esto se ve confirmado con la tabla igualmente.
Mensual.
Base_Estadistica_Descriptiva <- read_excel("C:/Users/nikog/Downloads/Base_Estadistica_Descriptiva.xlsx") #Se carga la base de datos
attach (Base_Estadistica_Descriptiva) #se lee la base
rango.IM <- max(IngresoMensual) - min(IngresoMensual) #se calcula el rango, restando los valores mínimos y máximos
varianza.IM <- var(IngresoMensual) # Se calcula la varianza del ingreso mensual mediante la funcion var
desv_est.IM <- sd(IngresoMensual)# Se calcula la desviacion estándar del ingreso mensual para calcular el coeficiente mediante la funcion sd
promedio.IM <- mean(IngresoMensual)# Se calcula el promedio del ingreso mensual para calcular el coeficiente mediante la funcion mean
coef_var.IM <- (desv_est.IM/promedio.IM)*100 #Se calcula el coeficiente de variación del ingreso mensual dividiendo su desviación entre su promedio y después multiplicar por 100
resultados <- data.frame(
Estadístico = c("Rango", "Varianza", "Coef. Variación"),
Valor = c(rango.IM,varianza.IM,coef_var.IM))
kable(resultados,digits = 1, caption = "📈 Medidas de dispersión del ingreso mensual")| Estadístico | Valor |
|---|---|
| Rango | 5266.7 |
| Varianza | 631117.3 |
| Coef. Variación | 40.2 |
library(ggplot2)
hist(Base_Estadistica_Descriptiva$Estatura, col="lightblue",main = "Histograma de la estatura respecto al N de individuos", xlab = "Estatura", ylab="Individuo")El histograma de la estatura respecto al número de individuos muestra que la distribución de los datos es relativamente uniforme en el rango comprendido entre 1.5 y 2.0 metros. La mayor parte de los individuos se concentra en los valores intermedios (entre 1.6 y 1.9 metros), mientras que en los extremos (cercanos a 1.5 y 2.0 metros) se observa una menor frecuencia. Esto sugiere que la estatura en la población estudiada se encuentra distribuida de manera equilibrada, sin grandes asimetrías ni concentraciones excesivas en un solo intervalo.
prom_estatura <- muestra %>%
group_by(Genero) %>%
summarise(Promedio_Estatura = mean(Estatura, na.rm = TRUE))
prom_estatura## # A tibble: 3 × 2
## Genero Promedio_Estatura
## <chr> <dbl>
## 1 Femenino 1.74
## 2 Masculino 1.74
## 3 Otro 1.70
# Boxplot por género
p3 <- ggplot(muestra, aes(x = Genero, y = Estatura, fill = Genero)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Comparacion de Estatura por Genero", y = "Estatura (cm)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 20, vjust = 0.6)) +
scale_fill_brewer(palette = "Blues")
print(p3)Se observa que las estaturas promedio difieren por género.
prom_ingreso <- muestra %>%
group_by(NivelEducativo) %>%
summarise(Promedio_Ingreso = mean(IngresoMensual, na.rm = TRUE))
prom_ingreso## # A tibble: 4 × 2
## NivelEducativo Promedio_Ingreso
## <chr> <dbl>
## 1 Primaria 1538.
## 2 Secundaria 2125.
## 3 Técnico 1899.
## 4 Universitario 1929.
# Gráfico de barras de ingreso promedio
p4 <- ggplot(prom_ingreso, aes(x = NivelEducativo, y = Promedio_Ingreso, fill = NivelEducativo)) +
geom_col(show.legend = FALSE) +
labs(title = "Ingreso promedio según Nivel Educativo",
x = "Nivel Educativo", y = "Ingreso Promedio ($)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 20, vjust = 0.6)) +
scale_fill_brewer(palette = "Blues")
print(p4)## 25%
## 1521.642
## 50%
## 1963.6
## 75%
## 2560.165
## 75%
## 1038.523
## 25%
## -36.14125
## 75%
## 4117.949
boxplot(datos.d$IngresoMensual ~ datos.d$NivelEducativo,col = colores,border = "darkblue", main = "Distribución de Ingresos Mensuales por Nivel Educativo",xlab = "Nivel Educativo", ylab = "Ingreso Mensual", cex.axis = 0.8,cex.lab = 0.9,cex.main = 1)Una tendencia no es apreciable, esto nos indica que el ingreso mensual no depende en gran medida de la edad, ya que no se puede establecer una relación clara entre estas dos variables.
# Tabla de frecuencias absolutas
tabla_a <- table(Base_Estadistica_Descriptiva$Genero,
Base_Estadistica_Descriptiva$NivelEducativo)
# Probabilidades conjuntas
tabla_prob <- prop.table(tabla_a)
# Añadir márgenes (totales marginales y total general)
tabla_prob_m <- addmargins(tabla_prob)
# Convertir la tabla con márgenes en data.frame
tabla_prob_m_df <- data.frame(Categoría=c("Femenino","Masculino","Otro","Sum"), c(as.data.frame.matrix(tabla_prob_m)))
# Mostrar con flextable
flextable(tabla_prob_m_df)Categoría | Primaria | Secundaria | Técnico | Universitario | Sum |
|---|---|---|---|---|---|
Femenino | 0.072 | 0.088 | 0.071 | 0.075 | 0.306 |
Masculino | 0.074 | 0.093 | 0.082 | 0.090 | 0.339 |
Otro | 0.083 | 0.107 | 0.078 | 0.087 | 0.355 |
Sum | 0.229 | 0.288 | 0.231 | 0.252 | 1.000 |
# Numerador: personas con más de 2 hermanos e ingreso > 3000
num <- sum(Base_Estadistica_Descriptiva$Hermanos > 2 &
Base_Estadistica_Descriptiva$IngresoMensual > 3000)
# Denominador: personas con más de 2 hermanos
den <- sum(Base_Estadistica_Descriptiva$Hermanos > 2)
# Proporción
prop <-round (num / den *100,1)
cat ("La proporción de personas con más de 2 hermanos e ingreso > 3000 es",prop,"%.")## La proporción de personas con más de 2 hermanos e ingreso > 3000 es 9.3 %.
El análisis permitió comprender la estructura de la población estudiada desde un enfoque descriptivo, revelando que el nivel educativo influye directamente en el ingreso mensual, mientras que la edad y el número de hermanos no presentan relaciones tan marcadas con las variables económicas. En general, los resultados muestran una población diversa, con diferencias tanto en la formación como en las condiciones socioeconómicas, lo cual destaca la importancia de la educación en la estabilidad y mejora del ingreso.
Se evidenció que el nivel educativo de los participantes presenta una distribución desigual, con una mayor proporción de personas concentradas en niveles medios y altos de formación. En cuanto al género, la muestra muestra una ligera diferencia en la participación, aunque con una distribución bastante equilibrada.
Para la variable Edad, la media fue de aproximadamente 39,8 años, con una mediana cercana (38 años) y una desviación estándar de 13,7 años. Esto indica una dispersión moderada y una población adulta predominantemente joven a media edad. En cuanto al número de hermanos, se observó que una cantidad importante de personas tiene más de tres hermanos, lo que refleja estructuras familiares amplias en la muestra.
El Ingreso mensual presentó un rango amplio y una variabilidad alta, lo que sugiere diferencias notables entre los ingresos de las personas encuestadas. El coeficiente de variación confirmó una dispersión significativa, indicando que el ingreso no es homogéneo. En cuanto a la Estatura, los valores se concentran principalmente entre 1,6 y 1,9 metros, con una distribución casi uniforme y sin presencia marcada de asimetría.
Se identificaron diferencias de estatura promedio entre géneros, lo que concuerda con patrones biológicos comunes. Además, se observó una relación positiva entre nivel educativo e ingreso promedio, mostrando que las personas con mayor formación tienden a recibir ingresos más altos.
Los diagramas de caja evidenciaron la dispersión de los ingresos según el nivel educativo, mientras que el gráfico de dispersión entre Edad e Ingreso mensual mostró una relación débil, lo que sugiere que la edad no determina significativamente el nivel de ingreso. Finalmente, la tabla de doble entrada entre Género y Nivel educativo permitió observar la distribución de la población según ambas categorías, y el cálculo conjunto demostró que solo un porcentaje moderado de personas con más de dos hermanos superan ingresos mensuales de 3000 $.