# Solo si no lo tienes instalado
library(readxl)
library(descriptr)
# Leer el archivo Excel (asumiendo que la hoja relevante es la primera)
datos <- read_excel("C:/Users/oscar pinzon/Downloads/Base_Estadistica_Descriptiva (1).xlsx")
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
# Ver nombres de columnas
names(datos)
## [1] "Base_Estadistica_Descriptiva" "...2"
## [3] "...3" "...4"
## [5] "...5" "...6"
## [7] "...7" "...8"
# Ver resumen estadístico de Estatura
summary(datos$Estatura)
## Warning: Unknown or uninitialised column: `Estatura`.
## Length Class Mode
## 0 NULL NULL
# Volver a importar desde el archivo
library(readxl)
datos <- read_excel("C:/Users/oscar pinzon/Downloads/Base_Estadistica_Descriptiva (1).xlsx", sheet = 1)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
# Asignar la primera fila como nombres de columna
colnames(datos) <- as.character(unlist(datos[1, ]))
datos <- datos[-1, ] # Eliminar la primera fila que ahora son los nombres
names(datos)
## [1] "ID" "Genero" "NivelEducativo" "Edad"
## [5] "Hermanos" "Estatura" "IngresoMensual" "HorasDeTrabajo"
datos$Estatura <- as.numeric(datos$Estatura)
summary(datos$Estatura)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.500 1.620 1.750 1.748 1.870 2.000
# Número de intervalos según fórmula de Sturges
num_int <- ceiling(1 + 3.33 * log10(length(na.omit(datos$Estatura))))
num_int
## [1] 11
# 3. Este es el histograma que se optiene
hist(datos$Estatura,
breaks = num_int,
main = "Histograma de Estatura (Sturges)",
xlab = "Estatura (m)",
ylab = "Frecuencia",
col = "red",
border = "black")
#Este se busco con ayuda de la IA, para obtener el comportamiento de la frecuencia
lines(density(datos$Estatura, na.rm = TRUE), col = "darkblue", lwd = 2)
Al construir este histograma se observo que la distribución de la estatura tiene forma ligeramente simétrica, con una ligera concentración hacia la media. No se observan valores extremos o atípicos evidentes. La mayoría de las estaturas se encuentran entre los 155 y 175 cm, lo que indica que la población presenta una estatura promedio típica sin grandes desviaciones.
Para constuir este histograma primero se realizo una tabla de frecuencias para luego realizar su construcción.
# Cargar librerías necesarias
library(readxl)
library(dplyr)
##
## 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
library(ggplot2)
# Cargar base de datos desde Excel
datos <- read_excel("C:/Users/oscar pinzon/Downloads/Base_Estadistica_Descriptiva (1).xlsx", sheet = "Hoja 1", skip = 1)
colnames(datos) <- c("ID", "Genero", "NivelEducativo", "Edad", "Hermanos", "Estatura", "IngresoMensual", "HorasDeTrabajo")
# Convertir columnas numéricas
datos <- datos %>%
mutate(
Estatura = as.numeric(Estatura),
Genero = as.factor(Genero)
)
# Calcular promedio de estatura por género
prom_estatura_genero <- datos %>%
group_by(Genero) %>%
summarise(Estatura_Promedio = mean(Estatura, na.rm = TRUE)) %>%
arrange(desc(Estatura_Promedio))
# Verificar estructura
is.data.frame(prom_estatura_genero) # Debe dar TRUE
## [1] TRUE
View(prom_estatura_genero)
library(ggplot2)
ggplot(datos, aes(x = Genero, y = Estatura, fill = Genero)) +
geom_bar(stat = "summary", fun = "mean", color = "black") +
labs(title = "Estatura Promedio por Genero",
y = "Estatura promedio (m)",
x = "Genero") +
theme_minimal(base_size = 14) +
theme(plot.title = element_text(face = "bold", hjust = 0.5)) +
scale_fill_manual(values = c("brown", "rosybrown", "sandybrown")) +
coord_cartesian(ylim = c(1.00, NA)) # Empieza en 1.45 pero sin recortar la parte superior
Se evidenció que el género masculino presenta una estatura promedio mayor que el femenino, lo cual es consistente con patrones biológicos esperados. La diferencia más destacada es de aproximadamente 5 a 7 cm más en promedio para los hombres. El género “otro” mostró una media cercana al promedio general, aunque con menos observaciones.
Además las alturas promedios son de 1,72 a 1,75 cm en todos los generos, en el cual como se menciono anteriormente no se presenta una diferencia destacable
# Asegúrate de tener cargada la base y las librerías
library(readxl)
library(dplyr)
library(ggplot2)
# Cargar datos desde Excel (si no lo hiciste antes)
datos <- read_excel("C:/Users/oscar pinzon/Downloads/Base_Estadistica_Descriptiva (1).xlsx", sheet = "Hoja 1", skip = 1)
colnames(datos) <- c("ID", "Genero", "NivelEducativo", "Edad", "Hermanos", "Estatura", "IngresoMensual", "HorasDeTrabajo")
# Convertir columnas numéricas a su tipo
datos <- datos %>%
mutate(
Edad = as.numeric(Edad),
Hermanos = as.numeric(Hermanos),
Estatura = as.numeric(Estatura),
IngresoMensual = as.numeric(IngresoMensual),
HorasDeTrabajo = as.numeric(HorasDeTrabajo)
)
# Calcular ingreso promedio por nivel educativo
ingresos_educ <- datos %>%
group_by(NivelEducativo) %>%
summarise(Ingreso_Promedio = mean(IngresoMensual, na.rm = TRUE)) %>%
arrange(desc(Ingreso_Promedio))
# Ver resultado en consola
print(ingresos_educ)
## # A tibble: 4 × 2
## NivelEducativo Ingreso_Promedio
## <chr> <dbl>
## 1 Primaria 2037.
## 2 Secundaria 2012.
## 3 Universitario 1948.
## 4 Técnico 1897.
# Graficar
ggplot(ingresos_educ, aes(x = reorder(NivelEducativo, Ingreso_Promedio), y = Ingreso_Promedio, fill = NivelEducativo)) +
geom_col() +
geom_text(aes(label = round(Ingreso_Promedio, 0)), vjust = -0.1) +
labs(
title = "Ingreso mensual promedio según nivel educativo",
x = "Nivel Educativo",
y = "Ingreso Promedio (S/.)"
) +
theme_minimal() +
coord_flip() # opcional para mejor lectura
El análisis mostró que el ingreso mensual promedio aumenta con el nivel educativo. Las personas con educación universitaria tienen ingresos significativamente mayores en comparación con quienes solo tienen primaria o secundaria. Con esto concluimos que entre mayor es el estudio educativo mayor ingresos tienen.