📥 Descargue aquí el PDF

Equipo de Trabajo

El presente trabajo ha sido realizado por el siguiente equipo:

Andrea Valderrama Salazar

Estudiante de Ingeniería Agrícola

Angie Tatiana Pinzon Castillo

Estudiante de Ingeniería Agrícola

Paula Hernandez Prada

Estudiante de Ingeniería Química

Daniel David Peña Esquibel

Estudiante de Ingeniería

library(readxl)
Base_Estadistica_Descriptiva <- read_excel("D:/PAULA/Downloads/Prob y Est/Base_Estadistica_Descriptiva.xlsx", skip = 1)

Medidas de tendencia central

Las medidas de tendencia central permiten identificar los valores que representan el centro de un conjunto de datos.

Media

Es el promedio aritmético de los datos.
Fórmula:

\[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \]

Mediana

Es el valor que divide a los datos ordenados en dos partes iguales.
- Si \(n\) es impar, es el valor central. - Si \(n\) es par, es el promedio de los dos valores centrales.

Moda

Es el valor que aparece con mayor frecuencia en un conjunto de datos.


Medidas de dispersión

Las medidas de dispersión permiten conocer qué tan alejados están los datos con respecto a la media.

Rango

Es la diferencia entre el valor máximo y el mínimo.
Fórmula:

\[ R = x_{\text{máx}} - x_{\text{mín}} \]

Varianza

Es el promedio de las desviaciones al cuadrado respecto a la media.
- Para una población:

\[ \sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2 \]

  • Para una muestra:

\[ s^2 = \frac{1}{n - 1} \sum_{i=1}^{n} (x_i - \bar{x})^2 \]

Desviación estándar

Es la raíz cuadrada de la varianza.
- Poblacional: \(\sigma = \sqrt{\sigma^2}\) - Muestral: \(s = \sqrt{s^2}\)

Coeficiente de variación

Relaciona la desviación estándar con la media (en porcentaje), útil para comparar variabilidad entre conjuntos de datos.

\[ CV = \left( \frac{s}{\bar{x}} \right) \times 100\% \]

Punto 1

1. Análisis de Variables Cualitativas

  1. ¿Cuál es la proporción de estudiantes por cada nivel educativo?
  • Construya una tabla de frecuencias y un gráfico de barras.
library(dplyr)
library(flextable)

Base_Estadistica_Descriptiva %>%
  count(NivelEducativo) %>%
  rename(Frecuencia = n) %>%
  flextable()

NivelEducativo

Frecuencia

Primaria

229

Secundaria

288

Técnico

231

Universitario

252

Gráfico de barras

library(dplyr)
library(ggplot2)

dfnived <- Base_Estadistica_Descriptiva %>%
  count(NivelEducativo) %>%
  rename(Frecuencia = n)

diag_barra_NE <- ggplot(dfnived, aes(x = reorder(NivelEducativo, Frecuencia), y = Frecuencia, fill = NivelEducativo)) +
  geom_bar(stat = 'identity') +
  labs(title = "Grafico de barras Nivel Educativo",
       x = "Nivel Educativo", y = "Cantidad de Estudiantes") +
  theme_minimal(base_size = 14) +
  scale_fill_manual(values = c("#FFB6C1", "#20B2AA", "#FFA500", "#6A5ACD")) +  # Nuevos colores
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5))

diag_barra_NE

  1. ¿Qué porcentaje de las personas pertenece a cada género? Representa tus resultados en un gráfico de pastel
library(dplyr)
library(ggplot2)

tblgen <- table(Base_Estadistica_Descriptiva$Genero)
dfgen <- as.data.frame(tblgen)
dfgen <- rename(dfgen, Genero = Var1, Frecuencia = Freq)

dfgen$Porcentaje <- round((dfgen$Frecuencia / sum(dfgen$Frecuencia)) * 100, 2)


torta1 <- ggplot(dfgen, aes(x = "", y = Frecuencia, fill = Genero)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Porcentaje, "%")),
            position = position_stack(vjust = 0.5),
            size = 5,
            color = "#030303") +
  labs(title = "Distribución de Generos", fill = "Genero") +  
  scale_fill_manual(values = c("#CCEBC5", "#B3CDE3", "#FBB4AE")) +
  theme_void() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10))

torta1

Punto 2

Análisis de Variables Cuantitativas Discretas

  1. Calcula la media, mediana y desviación estándar de la variable Edad.

La media de la edad es: 41.53

La mediana de la edad es: 41

La desviación estándar de la edad es: 14

library(flextable)
library(moments)
library(modeest)
library(dplyr)
library(descriptr)
library(ggplot2)
library(datos)
library(fdth)
library(plotrix)
library(knitr)
library(aplpack)
library(readxl)
library(readr)
media_edad <- mean(Base_Estadistica_Descriptiva$Edad)
mediana_edad <- median(Base_Estadistica_Descriptiva$Edad)
desvest_edad <- round(sd(Base_Estadistica_Descriptiva$Edad))
dtf1 <- data.frame( Medida = c("Media", "Mediana", "Desviación Estándar"),
  Resultado =  c(media_edad, mediana_edad, desvest_edad)
)

kable(dtf1, align = 'c', caption = "Cálculos de las medidas de la edad")
Cálculos de las medidas de la edad
Medida Resultado
Media 41.53
Mediana 41.00
Desviación Estándar 14.00
  1. ¿Cuántas personas tienen más de 3 hermanos? Representa esta información en un gráfico de barras.
Base_Estadistica_Descriptiva <- Base_Estadistica_Descriptiva %>%
  mutate(Numero_Hermanos = ifelse(Hermanos > 3, "Más de 3", "Menos de 3"))

# Crear tabla de frecuencia
tabla_hermanos <- Base_Estadistica_Descriptiva %>%
  count(Numero_Hermanos)

# Gráfico de barras
ggplot(tabla_hermanos, aes(x = Numero_Hermanos, y = n, fill = Numero_Hermanos)) +
  geom_bar(stat = "identity") +
  labs(
    title = "Cantidad de Hermanos",
    x = "Número de Hermanos",
    y = "Frecuencia"
  ) +
  scale_fill_manual(values = c("Más de 3" = "#cc6699", "Menos de 3" = "#ffb6c1")) +
  theme_minimal(base_size = 14) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5))

Punto 3

  1. Calcule el rango, la varianza y el coeficiente de variación de la variable Ingreso Mensual.

    Rango: 5,266.70

    Varianza: 631,117.32

    Coeficiente de variación: 0.4022 (aproximadamente 40.22%)

    library(readxl)
    library(ggplot2)
    library(dplyr)
    
    # Estadísticos de IngresoMensual
    ingresos <- Base_Estadistica_Descriptiva$IngresoMensual
    
    rango <- max(ingresos) - min(ingresos)
    varianza <- var(ingresos)
    cv <- sd(ingresos) / mean(ingresos)
    
    cat("Rango del Ingreso Mensual:", round(rango, 2), "\n")
    ## Rango del Ingreso Mensual: 5266.7
    cat("Varianza del Ingreso Mensual:", round(varianza, 2), "\n")
    ## Varianza del Ingreso Mensual: 631117.3
    cat("Coeficiente de variación:", round(cv, 4), "\n")
    ## Coeficiente de variación: 0.4022
  1. Construya un histograma de la Variable Estatura ¿Qué puede decir sobre su distribución?
# 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("D:/PAULA/Downloads/Prob y Est/Base_Estadistica_Descriptiva.xlsx")

# 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)
## Length  Class   Mode 
##      0   NULL   NULL
# Volver a importar desde el archivo
library(readxl)

datos <- read_excel("D:/PAULA/Downloads/Prob y Est/Base_Estadistica_Descriptiva.xlsx", sheet = 1)


# 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.

Punto 4

4. Comparación entre variables

  1. Compare las alturas promedio por Género¿ Cuál es la diferencia más destacada?
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)

# Cargar base de datos desde Excel
datos <- read_excel("D:/PAULA/Downloads/Prob y Est/Base_Estadistica_Descriptiva.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

  1. Analice si los ingresos promedio (ingreso mensual) varían según el nivel educativo (Nivel Educativo)
# 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("D:/PAULA/Downloads/Prob y Est/Base_Estadistica_Descriptiva.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.

    Punto 5

    1. Construya un diagrama de caja y bigotes para los ingresos mensuales (IngresoMensual) por nivel educativo (NivelEducativo).

      El diagrama muestra la distribución de ingresos en cada nivel educativo,indicando medianas, cuartiles y posibles valores atípicos. Se puede observar cómo varía la dispersión y los ingresos medios según el nivel educativo.

    ggplot(datos, aes(x = NivelEducativo, y = IngresoMensual)) +
      geom_boxplot(fill = "#f48fb1") +
      theme_minimal() +
      labs(title = "Ingreso Mensual por Nivel Educativo",
           x = "Nivel Educativo",
           y = "Ingreso Mensual ($)") +
      theme(axis.text.x = element_text(angle = 45, hjust = 1))

  1. Grafique la relación entre Edad y IngresoMensual con un gráfico de dispersión. ¿Hay alguna tendencia aparente?

    El gráfico muestra que hay una tendencia (línea de regresión) que sugiere cómo cambia el ingreso con la edad. Se puede analizar si la relación es positiva, negativa o nula. En general, suele observarse que ingresos aumentan con la edad hasta cierto punto.

ggplot(datos, aes(x = Edad, y = IngresoMensual)) +
  geom_point(color = "#ec407a", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Relación entre Edad e Ingreso Mensual",
       x = "Edad",
       y = "Ingreso Mensual ($)")

Punto 6

  1. Construya una tabla de doble entrada que muestre la distribución conjunta de Genero y NivelEducativo.

    tabla_cruzada <- table(datos$Genero, datos$NivelEducativo)
    kable(tabla_cruzada, caption = "Distribución conjunta de Género y Nivel Educativo")
    Distribución conjunta de Género y Nivel Educativo
    Primaria Secundaria Técnico Universitario
    Femenino 72 88 71 75
    Masculino 74 93 82 90
    Otro 83 107 78 87
  1. Calcule la proporción de personas con más de 2 hermanos que tienen un ingreso mensual superior a $3000.

    # Filtrar personas con más de 2 hermanos
    con_muchos_hermanos <- datos %>% filter(Hermanos > 2)
    
    # Calcular proporción con ingreso > 3000
    proporcion <- mean(con_muchos_hermanos$IngresoMensual > 3000, na.rm = TRUE)
    proporcion
    ## [1] 0.09330986

Punto 7

13. A partir de los resultados obtenidos, ¿qué variables parecen tener mayor relación con el ingreso mensual?

# Boxplot Ingreso Mensual vs Horas de Trabajo
Base_Estadistica_Descriptiva$HorasRango <- cut(Base_Estadistica_Descriptiva$HorasDeTrabajo, 
                         breaks = c(0, 20, 30, 40, 50, 60, 70),
                         labels = c("0-20", "21-30", "31-40", "41-50", "51-60", "61-70"))

ggplot(data= Base_Estadistica_Descriptiva, aes(x=HorasRango, y=IngresoMensual,fill=HorasRango)) +
  geom_boxplot() +
  labs(x="Rangos de Horas de Trabajo", y = "Ingreso Mensual", title = "Ingreso Mensual por Rangos de Horas de Trabajo")+
  stat_boxplot(geom= "errorbar", width=0.35)+
  scale_fill_manual(values = c(
    "0-20" = "#f8bbd0",
    "21-30" = "#f48fb1",
    "31-40" = "#f06292",
    "41-50" = "#ec407a",
    "51-60" = "#e91e63",
    "61-70" = "#d81b60"
  )) +
  theme_light()+
  theme(plot.title = element_text(hjust = 0.5),
        )

# Boxplot Ingreso Mensual vs Nivel Educativo
ggplot(Base_Estadistica_Descriptiva, aes(x = NivelEducativo, y = IngresoMensual, fill = NivelEducativo)) +
  geom_boxplot() +
  labs(
    title = "Ingreso Mensual según Nivel Educativo",
    x = "Nivel Educativo",
    y = "Ingreso Mensual"
  ) +
  stat_boxplot(geom= "errorbar", width=0.35)+
  theme_minimal(base_size = 14) +
    scale_fill_manual(values = c("#cc6699", "#ffb6c1", "#ffafc7", "#ffbde0")) +
  theme(axis.text.x = element_text(angle = 45 , hjust = 1),
        plot.title = element_text(hjust = 0.5))

Las variables que parecen tener mayor relación con el ingreso mensual son:

  • Las horas de trabajo: Hay una tendencia clara de que a medida que aumentan las horas trabajadas, el ingreso mensual tiende a aumentar, ademas los rangos de horas “41-60” y “61-70” presentan una mediana de ingreso más alta que los rangos inferiores, Aunque hay variabilidad en todos los grupos, la relación positiva entre más horas trabajadas y mayor ingreso es evidente.

  • El nivel educativo: Los gráficos de caja muestran que el ingreso mensual tiende a aumentar con el nivel educativo.
    La mediana de ingreso mensual es más alta en personas con educación universitaria y nivel técnico mientras Los niveles de primaria y secundaria muestran ingresos más bajos en general, tambien se puiede observar que existe una mayor dispersión (varianza) en los ingresos de personas con educación universitaria, lo que podría indicar oportunidades más diversas de ingresos.

  1. Si quisiera predecir la estatura de una persona basándote en otras variables, ¿qué variable(s) elegiría y por qué? Para predecir la estatura de una persona, las variables más relevantes a considerar serían:
  • Edad: Existe una relación directa entre la edad y la estatura durante las etapas de crecimiento. Generalmente, la estatura aumenta con la edad en niños y adolescentes hasta alcanzar un máximo en la adultez.

  • Género: El género influye significativamente en la estatura promedio. En general, los hombres tienden a tener una estatura promedio mayor que las mujeres.

Referencias