#cargamos la librerias
library(dplyr)

library(descriptr)

library(ggplot2)

library(datos)

library(plotrix)

library(readxl)

library(knitr)

library(modeest)

library(moments)

library(flextable)

vamos a llamar el chunk que lee el excel que contiene la base de datos

# La función read_excel lee el archivo en la ruta especificada
Base_Estadistica_Descriptiva <- read_excel("C:\\Users\\kashi\\Downloads\\Base_Estadistica_Descriptiva.xlsx")
datos.estu <-Base_Estadistica_Descriptiva
set.seed(0439)#platamos la semilla con los dos ultimos digitos de identificacion de los integrantes
datos.m <- sample_n(Base_Estadistica_Descriptiva,size = 500,replace = FALSE)#creamos una muestra con un tamaño de 500 datos para evitar que utilice los 1000 que tiene la base de datos
datos.m <- datos.m %>%
  rename(Sexo = Genero)

1 Analisis de variables cualitativas

¿Cual es la proporcion de estudiantes por cada nivel educativo?

Fórmula de Proporcionalidad:

La proporción de una categoría específica se calcula dividiendo la frecuencia (o conteo) de esa categoría entre el total de observaciones.

La fórmula general es: \[ proporcion= \frac{\text{Frecuencia de la Categoría}}{\text{Frecuencia Total}}\] en este caso seria: \[ proporcion.de.nivel.educativo= \frac{\text{numero de estudiantes en el nivel}}{\text{numero total de estudiantes}}\] ejemplo: \[ primaria= \frac{\text{118 estudiantes}}{\text{500 estudiantes}}=0.236\]

para obtener la proporcion de estudiantes utilizamos el siguiente codigo:

1.1 Tabla de propocion de estudiantes por nivel educativo

proporciones_niveles <- Base_Estadistica_Descriptiva %>%
  # El operador %>% conecta la base de datos con la primera función
  group_by(NivelEducativo) %>%
  summarise(Conteo = n()) %>%
  # El total se calcula automáticamente con sum(Conteo)
  mutate(Proporcion = Conteo / sum(Conteo)) %>%
  # Opcional: para mostrarlo como porcentaje
  mutate(Porcentaje = paste0(round(Proporcion * 100, 2), "%"))


#este kable es de la libreria knitr sirve para que la tabla que arroja nuestro codigo de proporciones se vea mas estetico
kable(
  proporciones_niveles, 
  caption = " Tabla de frecuencia :Proporción de Estudiantes por Nivel Educativo", # Título
  align = c('l', 'r', 'r', 'r'), # Alineación de columnas: izquierda y derechas
  digits = 3 # Número de decimales para las columnas numéricas
)
Tabla de frecuencia :Proporción de Estudiantes por Nivel Educativo
NivelEducativo Conteo Proporcion Porcentaje
Primaria 229 0.229 22.9%
Secundaria 288 0.288 28.8%
Técnico 231 0.231 23.1%
Universitario 252 0.252 25.2%

en la anterior tabla de frecuencia de proporciones contiene los valores que necesitabamos saber respecto a la cantidad de estudiantes con diferentes tipos de nivel educativo.

1.2 Grafico de barras

ggplot(data = datos.m, aes(x = NivelEducativo)) +
  geom_bar(fill = rainbow(n=4)) #manda a cada nivel un color distinto

  labs(
    title = "Distribución por Nivel Educativo",
    x = "Nivel",
    y = "Conteo"
  ) +
  theme_bw() # Un tema blanco y negro, muy limpio
## NULL

1.3 Tabla de frecuencia

tabla_sexo_NivelEDU <- datos.m %>%
  # Cruza y cuenta las combinaciones de Nivel Educativo y Sexo
  count(NivelEducativo, Sexo, name = "Frecuencia_Absoluta") %>%
  
  # Calcula el porcentaje de cada combinación sobre el total general
  mutate(
    Porcentaje_Global = Frecuencia_Absoluta / sum(Frecuencia_Absoluta) * 100,
    # Formatea el porcentaje para la tabla
    Porcentaje_Global = paste0(round(Porcentaje_Global, 2), "%")
  )

# 2. Muestra la tabla formateada con kable()
kable(
  tabla_sexo_NivelEDU,
  caption = "Frecuencia de Estudiantes por Sexo y Nivel Educativo",
  digits = 2, 
  align = c('l', 'l', 'r', 'r'),
  col.names = c("Nivel Educativo", "Sexo", "Conteo (n)", "Porcentaje Global (%)")
)
Frecuencia de Estudiantes por Sexo y Nivel Educativo
Nivel Educativo Sexo Conteo (n) Porcentaje Global (%)
Primaria Femenino 38 7.6%
Primaria Masculino 35 7%
Primaria Otro 45 9%
Secundaria Femenino 46 9.2%
Secundaria Masculino 52 10.4%
Secundaria Otro 51 10.2%
Técnico Femenino 31 6.2%
Técnico Masculino 37 7.4%
Técnico Otro 41 8.2%
Universitario Femenino 34 6.8%
Universitario Masculino 47 9.4%
Universitario Otro 43 8.6%

1.4 Como se realiza el grafico pastel

El analisis matematico detras del grafico es el siguiente: \[\frac{\text{frecuencia(nivel)}}{\text{numero total de estudiantes(nivel)}}*100 \] para el grafico de pastel de primaria donde \(f:femenino\) ,\(m:masculino\) ,\(o:otro\)

logica: \[total primaria=38f +35m+45o=118\\Femenino: \frac{38}{118}*100=32.2\%\\Masculino:\frac{35}{118}*100=29.7\\Otro:\frac{45}{118}*100=38.1\%\\suma\%:38.1+29.7+32.2=100\%\\100\%=grafico.pastel \]

1.5 Grafico pastel de primaria

n_primaria <- c(38, 35, 45)
categorias_sexo <- c("Femenino", "Masculino", "Otro")
porcentajes <- round(n_primaria / sum(n_primaria) * 100, 1)
etiquetas_pastel <- paste(categorias_sexo, "\n(", porcentajes, "%)", sep="")
colores=c("pink","skyblue","green")
pie(
  n_primaria, 
  labels = etiquetas_pastel, 
  main = "Distribucion por Sexo - Nivel Primaria (Total N=118)", 
  col = colores
)

1.6 Grafico pastel de Secundaria

logica \[ \text{Total Secundaria}=46f +52m+51o=149\\Femenino: \frac{46}{149}*100\approx30.9\%\\Masculino:\frac{52}{149}*100\approx34.9\%\\Otro:\frac{51}{149}*100\approx34.2\%\\suma\%:30.9+34.9+34.2=100\%\\100\%=\text{Gráfico de Pastel de Secundaria} \]

# --- 1. Preparar los datos y calcular los porcentajes ---

# Conteo (n) para Secundaria: Femenino (46), Masculino (52), Otro (51)
n_secundaria <- c(46, 52, 51) 

# Definir las categorías de Sexo
categorias_sexo <- c("Femenino", "Masculino", "Otro")

# Calcular los porcentajes internos (Total Secundaria = 149)
porcentajes <- round(n_secundaria / sum(n_secundaria) * 100, 1)

# Crear etiquetas que combinan Sexo y Porcentaje
etiquetas_pastel <- paste(categorias_sexo, "\n(", porcentajes, "%)", sep="")

# --- 2. Crear el Gráfico de Pastel con la función pie() ---
pie(
  n_secundaria, 
  labels = etiquetas_pastel, 
  # Título sin tilde para evitar el error de codificación
  main = "Distribucion por Sexo - Nivel Secundaria (Total N=149)", 
  col = rainbow(length(n_secundaria)) 
)

1.7 Grafico pastel de Universitarios

logica

\[ \text{Total Universitario}=34f +47m+43o=124\\Femenino: \frac{34}{124}*100\approx27.4\%\\Masculino:\frac{47}{124}*100\approx37.9\%\\Otro:\frac{43}{124}*100\approx34.7\%\\suma\%:27.4+37.9+34.7=100\%\\100\%=\text{Gráfico de Pastel de Universitario} \]

n_universitario <- c(34, 47, 43) 
categorias_sexo <- c("Femenino", "Masculino", "Otro")
porcentajes <- round(n_universitario / sum(n_universitario) * 100, 1)
etiquetas_pastel <- paste(categorias_sexo, "\n(", porcentajes, "%)", sep="")
colores=c("pink4","blue","purple")
pie(
  n_primaria, 
  labels = etiquetas_pastel, 
  main = "Distribucion por Sexo - universitario (Total N=124)", 
  col = colores)

1.8 Grafico pastel de Tecnico

logica \[ \text{Total Técnico}=31f +37m+41o=109\\Femenino: \frac{31}{109}*100\approx28.4\%\\Masculino:\frac{37}{109}*100\approx33.9\%\\Otro:\frac{41}{109}*100\approx37.6\%\\suma\%:28.4+33.9+37.6=99.9\% \approx 100\%\\100\%=\text{Gráfico de Pastel de Técnico} \]

n_tecnico <- c(31, 37, 41) 
categorias_sexo <- c("Femenino", "Masculino", "Otro")
porcentajes <- round(n_tecnico / sum(n_tecnico) * 100, 1)
etiquetas_pastel <- paste(categorias_sexo, "\n(", porcentajes, "%)", sep="")
colores=c("coral","skyblue3","gold")
pie(
  n_primaria, 
  labels = etiquetas_pastel, 
  main = "Distribucion por Sexo - Nivel Tecnico (Total N=109)", 
  col = colores)

2 Analisis de variables cuantitativas discretas

Mediana Edad La mediana es el valor central de un conjunto de datos ordenados. Su fórmula no es de cálculo directo, sino posicional.

Media Edad también conocida como el promedio, es una medida de tendencia central que representa un valor central de un conjunto de datos

Desviacion estandar Edad

La desviación estándar en estadística es una medida de dispersión que indica cuán esparcidos o agrupados están los puntos de datos respecto a la media del conjunto. Una desviación estándar baja significa que los datos están muy cerca de la media, mientras que una desviación estándar alta indica una gran variabilidad y que los datos están más dispersos. Se calcula como la raíz cuadrada de la varianza y se utiliza para evaluar la volatilidad y el riesgo en campos como las finanzas.

formula media arimetica

Donde:

\(\bar{x}\) es la media muestral. \ \(x_i\) es el valor de la observación \(i\). \ \(n\) es el número total de observaciones. \ \(\sum_{i=1}^{n}\) es la suma de todas las observaciones. \[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \] formula Mediana

posicion

Donde:

\(M_e\) es la mediana. \ \(n\) es el número total de observaciones. \ \(x_{(k)}\) es el valor en la posición \(k\) del conjunto de datos ordenado. \[ M_e = \begin{cases} x_{\left(\frac{n+1}{2}\right)} & \text{si } n \text{ es impar} \\ \frac{x_{\left(\frac{n}{2}\right)} + x_{\left(\frac{n}{2} + 1\right)}}{2} & \text{si } n \text{ es par} \end{cases} \]

formula desviacion estandar

Donde:

\(s\) es la desviación estándar muestral. \ \(x_i\) es el valor de cada observación individual \(i\). \ \(\bar{x}\) es la media muestral de las observaciones. \ \(n\) es el número total de observaciones de la muestra. \ \(n-1\) son los grados de libertad.

\[ s = \sqrt{\frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n-1}} \\Desviación Estándar Poblacional: \sigma = \sqrt{\frac{\sum_{i=1}^{N} (x_i - \mu)^2}{N}} \]

2.1 Valores de Edad

en este codigo esta la forma para hallar la media, mediana, varianza y desviacion estandar

# 1. Calcular la Media, Mediana ,etc.
resumen_edad <- datos.m %>%
  summarise(
    Media_Edad = mean(Edad),          # Calcula la Media
    Mediana_Edad = median(Edad),      # Calcula la Mediana
    Varianza_Edad = var(Edad),        # Calcula la Varianza
    Desviacion_Estandar = sd(Edad)    # Desviación Estándar (raíz de la Varianza)#(na.rm)este argumento es crucial. Significa "remover valores no disponibles (Not Available)" y asegura que el cálculo ignora cualquier fila donde la Edad sea un valor faltante
  )

kable(resumen_edad)
Media_Edad Mediana_Edad Varianza_Edad Desviacion_Estandar
41.248 41 180.0506 13.41829

2.2 ¿cuantas personas tienen mas de 3 hermanos?

Grafico de barras hermanos

datos_con_categoria <- mutate(
    datos.m, 
    Categoria_Hermanos = case_when(
      Hermanos > 3  ~ "Más de 3", 
      Hermanos <= 3 ~ "3 o Menos", 
      TRUE          ~ "Sin Dato" ))
# 2. Agrupar y contar el número de personas en cada grupo
datos_conteo <- summarise(
    group_by(datos_con_categoria, Categoria_Hermanos), 
    Conteo = n())

# 3. Desagrupar 
datos_conteo <- ungroup(datos_conteo)
fg <- ggplot(data = datos_conteo, 
             mapping = aes(x = Categoria_Hermanos, y = Conteo)) + 
  geom_col(fill = rainbow(n=2)) + 
  
  # Añadir etiquetas con el número exacto sobre cada barra
  geom_text(aes(label = Conteo), 
            vjust = -0.5, 
            size = 5,
            color = "black") + 
  scale_y_continuous(
    limits = c(0, 300), # Establece el límite inferior en 0 y el superior en 300
    expand = expansion(mult = c(0, 0.05)) # Ajusta la expansión para que las barras no toquen los bordes
 ) +
  # Definir títulos y etiquetas
  labs(
    title = "Frecuencia de Personas con Más de 3 Hermanos",
    x = "Categoría de Hermanos",
    y = "Frecuencia (Conteo)"
  ) +
  
  theme_minimal()

# Muestra el gráfico
fg

3 Ańalisis de Variables Cuantitativas continuas

Rango

Es una medida de dispersión que se calcula como la diferencia entre el valor máximo y el valor mínimo de un conjunto de datos. se halla de la siguiente manera;

Formula El rango (R) de un conjunto de datos se calcula como: \[R = X_{\text{max}} - X_{\text{min}}\] Donde \(X_{\text{max}}\) es el valor más grande y \(X_{\text{min}}\) es el valor más pequeño.

varianza

Es una medida de dispersión definida como la esperanza del cuadrado de la desviación de dicha variable respecto a su media.

se expresa de la siguiente manera: \[s^2 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n-1}\] Coeficiente de variacion

Se define como la razón entre la desviación estándar (σ o s) y la media (μ o x), a menudo expresada en porcentaje (multiplicando por 100).

se expresa de la siguiente manera: \[\text{CV} = \frac{s}{\left|\bar{x}\right|} \times 100\%\]

3.1 Ingresos mensuales

A continuacion analizaremos la varianza , el rango y el cofienciente de variacion para la variable ingresos mensuales

min_ingreso <- min(datos.m$IngresoMensual, na.rm = TRUE) 
max_ingreso <- max(datos.m$IngresoMensual, na.rm = TRUE) 
rango <- max_ingreso - min_ingreso 
cat("El Rango es:", rango)
## El Rango es: 5127.34
varianza <- var(datos.m$IngresoMensual)#varianza se utiliza; var, para hallar la varianza
cat("La Varianza es:", varianza)
## La Varianza es: 619297
# Desviación Estándar y Media (para CV)
desviacion_estandar <- sd(datos.m$IngresoMensual)
media_ingreso <- mean(datos.m$IngresoMensual)

# Coeficiente de Variación (%)
coef_variacion <- (desviacion_estandar / abs(media_ingreso)) * 100
cat("El Coeficiente de Variación es:", coef_variacion, "%")
## El Coeficiente de Variación es: 40.89345 %
# --- PASO 2: Crear el Data Frame de Resultados ---
Estadistico <- c("Rango", "Varianza Muestral", "Desviación Estándar", "Coeficiente de Variación (%)")# Nombres de las estadísticas

Valor <- c(rango, varianza, desviacion_estandar, coef_variacion)# Valores calculados

tabla_resultados <- data.frame(Estadistico, Valor)# Combinamos en el data frame

kable(tabla_resultados, # PASO 3: Generar la Tabla con kable

      caption = "Dispersión del Ingreso Mensual",
      digits = 2) #  dos decimales
Dispersión del Ingreso Mensual
Estadistico Valor
Rango 5127.34
Varianza Muestral 619297.04
Desviación Estándar 786.95
Coeficiente de Variación (%) 40.89

3.2 conclusion de resultados ingresos mensuales

Conclusión General y Representatividad de la Media

El \(\textbf{Coeficiente de Variación}\) te permite evaluar qué tan representativa es la media (el promedio) para describir los datos:

Cálculo Implícito de la Media (\(\bar{x}\))}

Con los valores, podemos estimar el promedio: \[ \bar{x} = \frac{\text{Desviación Estándar}}{\text{CV}} = \frac{786.95}{0.4089} \approx \$1,924.50 \] El promedio de ingresos mensuales es de aproximadamente \(\textbf{\$1,924.50}.\)

\({Representatividad de la Media (40.89\%)}\) Generalmente.

un \(\text{CV}\) menor al \(30\%\) se considera un conjunto de datos \(\textbf{homogéneo}\) (la media es muy representativa).

Un \(\text{CV}\) cercano o superior al \(50\%\) se considera \(\textbf{heterogéneo}\)

El valor de \(\text{CV} = 40.89\%\) cae en una zona de \(\textbf{dispersión moderada a alta}.\)

Existe una \(\textbf{dispersión considerable}\) en los ingresos mensuales. Aunque la media (\(\$1,924.50\)) es útil, la variabilidad de los ingresos es \(\textbf{alta} (40.89\%)\), lo que significa que hay una diferencia notable entre los ingresos más altos y más bajos, tal como lo confirma la \(\textbf{alta Desviación Estándar} (\$786.95).\)

4 Comparaciones entre Variables

4.1 Comparación de estatura promedio por género

# Calcular la estatura promedio por género
promedio_estatura_genero <- datos.m %>%
  group_by(Sexo) %>%
  summarise(
    Promedio_Estatura = mean(Estatura, na.rm = TRUE),
    Desviacion = sd(Estatura, na.rm = TRUE),
    Conteo = n()
  )
kable(promedio_estatura_genero,
      caption = "Altura promedio por Género",
      digits = 2)
Altura promedio por Género
Sexo Promedio_Estatura Desviacion Conteo
Femenino 1.75 0.14 149
Masculino 1.73 0.15 171
Otro 1.76 0.14 180

4.2 Calcular ingreso promedio por nivel educativo

promedio_ingreso_nivel <- datos.m %>%
  group_by(NivelEducativo) %>%
  summarise(
    Promedio_Ingreso = mean(IngresoMensual, na.rm = TRUE),
    Desviacion = sd(IngresoMensual, na.rm = TRUE),
    Conteo = n()
  )

kable(promedio_ingreso_nivel,
      caption = "Ingreso promedio según Nivel Educativo",
      digits = 2)
Ingreso promedio según Nivel Educativo
NivelEducativo Promedio_Ingreso Desviacion Conteo
Primaria 2015.29 842.94 118
Secundaria 1949.80 753.52 149
Técnico 1849.61 828.14 109
Universitario 1873.14 731.34 124

5 Análisis Gráfico

5.1 Diagrama de Caja y bigotes

ggplot(datos.m, aes(x = NivelEducativo, y = IngresoMensual, fill = NivelEducativo)) +
  geom_boxplot() +
  labs(
    title = "Ingresos Mensuales por Nivel Educativo",
    x = "Nivel Educativo",
    y = "Ingreso Mensual"
  ) +
  theme_minimal()

5.2 Relación entre Edad e Ingreso Mensual

ggplot(datos.m, aes(x = Edad, y = IngresoMensual)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_smooth(method = "lm", col = "red") +
  labs(
    title = "Relación entre Edad e Ingreso Mensual",
    x = "Edad",
    y = "Ingreso Mensual"
  ) +
  theme_light()
## `geom_smooth()` using formula = 'y ~ x'

6 Análisis Conjunto

6.1 Tabla de doble entrada: Género vs Nivel Educativo

tabla_genero_nivel <- datos.m %>%
  count(Sexo, NivelEducativo) %>%
  mutate(Porcentaje = round(100 * n / sum(n), 2))

kable(tabla_genero_nivel,
      caption = "Distribución conjunta de Género y Nivel Educativo",
      digits = 2)
Distribución conjunta de Género y Nivel Educativo
Sexo NivelEducativo n Porcentaje
Femenino Primaria 38 7.6
Femenino Secundaria 46 9.2
Femenino Técnico 31 6.2
Femenino Universitario 34 6.8
Masculino Primaria 35 7.0
Masculino Secundaria 52 10.4
Masculino Técnico 37 7.4
Masculino Universitario 47 9.4
Otro Primaria 45 9.0
Otro Secundaria 51 10.2
Otro Técnico 41 8.2
Otro Universitario 43 8.6

6.2 Proporción de personas con más de 2 hermanos e ingreso > 3000

# Filtramos personas con más de 2 hermanos e ingreso mayor a 3000
filtro_personas <- datos.m %>%
  filter(Hermanos > 2, IngresoMensual > 3000)

# Calculamos proporción
proporcion_personas <- nrow(filtro_personas) / nrow(datos.m)

cat("La proporción es:", round(proporcion_personas*100,2), "%")
## La proporción es: 5 %