library(dplyr)
library(ggplot2)
library(descriptr)
 library(knitr)
library(modeest)
library(fdth)
library(readxl)
library(moments)
library(plotrix)
  1. [10 puntos] Determine el porcentaje de hombres que tienen estudios universitarios y muestre cuál es la cantidad total de mujeres participantes.
## Punto 1: Porcentaje de hombres universitarios y total de mujeres

library(readxl)
library(dplyr)

# Leer base y tomar muestra
Base_Estadistica_Descriptiva <- read_excel("Base_Estadistica_Descriptiva.xlsx")
set.seed(2369)
muestra <- sample_n(Base_Estadistica_Descriptiva, size = 160, replace = FALSE)


tabla_1 <- table(muestra$Genero, muestra$NivelEducativo)


total_hombres <- sum(tabla_1["Masculino", ])
universitarios_hombres <- tabla_1["Masculino", "Universitario"]
porcentaje_hombres_uni <- (universitarios_hombres / total_hombres) * 100
total_mujeres <- sum(tabla_1["Femenino", ])


cat(paste0("Dentro de la muestra, el ", round(porcentaje_hombres_uni, 2),
           "% de los hombres tiene estudios universitarios.\n"))
## Dentro de la muestra, el 30.19% de los hombres tiene estudios universitarios.
cat(paste0("En total participan ", total_mujeres, " mujeres en la muestra.\n"))
## En total participan 45 mujeres en la muestra.

2 Elabore un diagrama de caja y bigotes para la variable estatura en función del género y analice la gráfica

boxplot(Estatura ~ Genero, data = muestra,
main = "Distribución de Estatura según Género",
xlab = "Género", ylab = "Estatura (cm)",
col = c("lightblue", "pink", "lightgreen"),
border = "darkgray")

cat("Analisis: En la grafica podemos ver como la mediana en los tres grupos es muy similar, estando alrededor de 1,75 metros, en cuanto a el rango intercuartilico podriamos decir que los grupos masculino y femenino son muy similares, mientras que en el grupo otros la caja es mas grande, lo que significa que en dicho grupo varian mas las estaturas que en los otros dos, los bigotes de los tres grupos estan entre 1.50 metros y 2 metros, siendo estos al parecer los valores minimos y maximos ya que no se logran ver datos atipicos, en un resumen rapido, no hay mucha diferencia de estatura entre los tres grupos poblacionales, sobre todo entre el masculino y femenino, en el grupo otros hay una tendencia a tener estaturas mal altas pero no hay una diferencia muy marcada.")
## Analisis: En la grafica podemos ver como la mediana en los tres grupos es muy similar, estando alrededor de 1,75 metros, en cuanto a el rango intercuartilico podriamos decir que los grupos masculino y femenino son muy similares, mientras que en el grupo otros la caja es mas grande, lo que significa que en dicho grupo varian mas las estaturas que en los otros dos, los bigotes de los tres grupos estan entre 1.50 metros y 2 metros, siendo estos al parecer los valores minimos y maximos ya que no se logran ver datos atipicos, en un resumen rapido, no hay mucha diferencia de estatura entre los tres grupos poblacionales, sobre todo entre el masculino y femenino, en el grupo otros hay una tendencia a tener estaturas mal altas pero no hay una diferencia muy marcada.

3 AElabore un diagrama de barras para la variable Hermanos y determine qué cantidad es la más frecuente

tabla_h <- table(muestra$Hermanos)
barplot(tabla_h,
main = "Frecuencia de número de hermanos",
xlab = "Número de hermanos",
ylab = "Frecuencia",
col = rainbow(length(tabla_h)),
border = "white")

cat("Segun el diagrama de barras la cantidad mas frecuente es 0 Hermanos")
## Segun el diagrama de barras la cantidad mas frecuente es 0 Hermanos
#3 b Elabore un diagrama de torta en 3D para la variable NivelEducativo.
 
tabla_N <- table(muestra$NivelEducativo)



porcentajes <- round(prop.table(tabla_N) * 100, 1)
etiquetas <- paste(names(tabla_N), "-", porcentajes, "%")



pie3D(tabla_N,
labels = etiquetas,
explode = 0.1,
radius = 1.1,
theta = pi/3,
main = "Distribución del Nivel Educativo",
height = 0.3,
border = NA)

##3c
tabla_frec_hor <- ds_freq_table(muestra, HorasDeTrabajo)
tabla_frec_hor
##                          Variable: HorasDeTrabajo                           
## |-------------------------------------------------------------------------|
## |     Bins      | Frequency | Cum Frequency |   Percent    | Cum Percent  |
## |-------------------------------------------------------------------------|
## | 16.5  - 27.4  |    14     |      14       |     8.75     |     8.75     |
## |-------------------------------------------------------------------------|
## | 27.4  - 38.2  |    37     |      51       |    23.12     |    31.87     |
## |-------------------------------------------------------------------------|
## | 38.2  - 49.1  |    76     |      127      |     47.5     |    79.38     |
## |-------------------------------------------------------------------------|
## | 49.1  - 59.9  |    28     |      155      |     17.5     |    96.88     |
## |-------------------------------------------------------------------------|
## | 59.9  - 70.8  |     5     |      160      |     3.12     |     100      |
## |-------------------------------------------------------------------------|
## |     Total     |    160    |       -       |    100.00    |      -       |
## |-------------------------------------------------------------------------|
histograma <- hist(muestra$HorasDeTrabajo,
                   main = "Histograma de Horas de Trabajo",
                   xlab = "Horas de Trabajo",
                   ylab = "Frecuencia",
                   col = c("purple", "blue", "green", "aquamarine", "cadetblue", "pink", "gold"),
                   border = "white")
lines(histograma$mids, histograma$counts, type = "o", col = "red", lwd = 2)

plot(
  muestra$HorasDeTrabajo, 
  type = "o",                         
  xlab = "Horas de trabajo",          
  ylab = "Frecuencia",            
  main = "Polígono de Frecuencias",  
  col = "blue",                       
  pch = 16,                           
  lwd = 2                             
)
grid()  

##3d




ingresos <- muestra$IngresoMensual


media <- mean(ingresos, na.rm = TRUE)
mediana <- median(ingresos, na.rm = TRUE)
moda <- as.numeric(names(sort(table(ingresos), decreasing = TRUE)[1]))


varianza <- var(ingresos, na.rm = TRUE)
desviacion <- sd(ingresos, na.rm = TRUE)
coef_var <- (desviacion / media) * 100
rango <- max(ingresos, na.rm = TRUE) - min(ingresos, na.rm = TRUE)
iqr <- IQR(ingresos, na.rm = TRUE)

q1 <- quantile(ingresos, probs = 0.25, na.rm = TRUE)
q3 <- quantile(ingresos, probs = 0.75, na.rm = TRUE)

asimetria <- skewness(ingresos, na.rm = TRUE)
curtosis <- kurtosis(ingresos, na.rm = TRUE)


resumen_df <- data.frame(
  Media = media,
  Mediana = mediana,
  Moda = moda,
  Varianza = varianza,
  DesviacionEstandar = desviacion,
  CoeficienteVariacion = coef_var,
  Rango = rango,
  IQR = iqr,
  Q1 = q1,
  Q3 = q3,
  Asimetria = asimetria,
  Curtosis = curtosis
)


print(resumen_df)
##        Media  Mediana   Moda Varianza DesviacionEstandar CoeficienteVariacion
## 25% 2102.756 2087.035 -310.1 576731.8           759.4286             36.11587
##       Rango      IQR       Q1      Q3  Asimetria Curtosis
## 25% 4328.02 864.3175 1654.412 2518.73 -0.1837998 3.560404
boxplot(
  muestra$IngresoMensual,
  main = "Distribución del Ingreso Mensual",
  ylab = "Ingreso ($)",
  col = "lightblue",
  border = "darkblue",
  notch = TRUE,
  horizontal = FALSE
)

# Agregar línea de la media
abline(h = mean(muestra$IngresoMensual, na.rm = TRUE), col = "red", lwd = 2, lty = 2)
legend("topright", legend = "Media", col = "red", lty = 2, lwd = 2, bty = "n")