1 Introducción

El siguiente informe explicará de forma detallada un análisis estadístico-descriptivo de los datos comprendidos en la base de datos “Alumnos”, haciendo un análisis de cada variable y relacionándolas entre sí a través de la realización de distintos gráficos en RStudio y con la ayuda de distintas librerías que facilitan la visualización de los datos de diversas formas.

Entre dichas librerías podemos encontrar:

  • ggplot2: Nos ayuda a mostrar gráficamente los datos de forma detallada y llamativa por medio de distintas geometrías y presentaciones. Cabe resaltar que esta librería se puede relacionar muy fácilmente con otras librerías como plotly, rayshader, entre otros.

  • Plotly: Permite que los gráficos realizados con ggplot2 se vuelvan interactivos con el fin de mejorar el aspecto y la visualización de los datos.

  • KableExtra: Esta librería permite organizar y mostrar los datos en tablas de tal forma que facilita la visualización y comprensión de estos.

  • Tidyverse, Janitor y Modeest: Estas librerías agregan distintas funciones al programa que permiten tener un mayor control de los datos y realizar cálculos que son más difíciles de obtener utilizando únicamente R base.

  • Readxl: esta librería permite al programa leer archivos de Excel, lo cual es primordial para realizar el análisis estadístico de los datos alojados en este tipo de documentos.

2 Tablas y gráficas de las carreras

2.1 Tabla de frecuencias de las carreras

#Tabla de frecuencias de Carreras

Frec_abs=as.vector(table(Alumnos$carrera)) 
Frec_abs_acum=cumsum(table(Alumnos$carrera))
Frec_rel=as.vector(prop.table(table(Alumnos$carrera)))
Frec_rel_acum=cumsum(prop.table(table(Alumnos$carrera)))
tabla_frecuencia=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)

#Tabla con Estilo
tabla_frecuencia %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Carreras"=5)) %>% 
  add_header_above(c("Tabla de Frecuencias"=5))
Tabla de Frecuencias
Carreras
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
ADMINISTRACION 390 390 0.078 0.078
ARQUITECTURA 421 811 0.084 0.162
BIOQUIMICA 374 1185 0.075 0.237
CIVIL 378 1563 0.076 0.313
ELECTRICA 407 1970 0.081 0.394
ELECTRONICA 403 2373 0.081 0.475
INDUSTRIAL 379 2752 0.076 0.550
INFORMATICA 354 3106 0.071 0.621
MECANICA 336 3442 0.067 0.688
MECATRONICA 345 3787 0.069 0.757
QUIMICA 415 4202 0.083 0.840
SISTEMAS 397 4599 0.079 0.920
TIC 401 5000 0.080 1.000

De acuerdo a la tabla de frecuencias de las carreras, la carrera con mayor cantidad de estudiantes en la universidad es Arquitectura con 421 estudiantes que equivalen aproximadamente al 8,4% del total de estudiantes, mientras que la carrera con menor cantidad de estudiantes es Mecánica con 336 estudiantes que equivalen aproximadamente al 6,7% del total de estudiantes.

2.2 Cantidad de estudiantes por carrera

Los datos obtenidos en la anterior tabla, se pueden graficar de tal forma que podemos visualizar el panorama global de las carreras en el siguiente diagrama de barras.

Hist_carreras<- ggplot(Alumnos, aes(x=carrera, fill=carrera))+
  geom_bar()+
  scale_x_discrete(labels=abbreviate)+
  labs(title = "Cantidad de estudiantes por carrera",
       x="Carrera",
       y="Estudiantes")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

ggplotly(Hist_carreras)

2.3 Gráfico comparativo de carrera y género

En base al total de estudiantes en la universidad, además de la carrera, podemos diferenciarlos por su género masculino o femenino, por lo que al relacionar las variables de carrera y género, se puede obtener el siguiente gráfico donde se ve una peculiar distribución en donde las carreras más demandadas por los hombres son Arquitectura e Ingeniería eléctrica, mientras que las carreras más demandadas por las mujeres son Química y TIC. También se puede evidenciar que la única carrera en la que hay estudiantes de ambos géneros es Ingeniería industrial.

barras_carrera_genero=ggplot(Alumnos,aes(x=carrera, fill=genero))+
  geom_bar(position = position_dodge(0.9))+
  scale_x_discrete(labels=abbreviate)+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
  labs(title = "Comparación de carrera entre femenino y masculino",
       x="Carrera",
       y="Cantidad de estudiantes")

ggplotly(barras_carrera_genero)

3 Tablas y gráficas de los estrato

3.1 Tabla de frecuencias de los estratos

#Tabla de frecuencias de Estratos
Estrato=seq(1:6)
Frec_abs=as.vector(table(Alumnos$Estrato)) 
Frec_abs_acum=as.vector(cumsum(table(Alumnos$Estrato)))
Frec_rel=as.vector(prop.table(table(Alumnos$Estrato)))
Frec_rel_acum=cumsum(prop.table(table(Alumnos$Estrato)))
tabla_frecuencia=data.frame(Estrato,Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)


#Tabla con Estilo

tabla_frecuencia %>%  
  kbl(col.names = c("Estrato",
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",6)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Estratos"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Estratos
Estrato Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
1 784 784 0.157 0.157
2 808 1592 0.162 0.318
3 860 2452 0.172 0.490
4 865 3317 0.173 0.663
5 850 4167 0.170 0.833
6 833 5000 0.167 1.000

De acuerdo a la tabla de frecuencias de los estratos, el estrato con mayor frecuencia, es decir, el estrato que tiene mayor cantidad de estudiantes es el estrato 4 con 865 estudiantes que equivalen aproximadamente al 17,3% del total de estudiantes, mientras que, el estrato donde hay menor cantidad de estudiantes es el estrato 1 con 784 estudiantes que equivalen al 15,7% del total de estudiantes.

3.2 Gráfico de donut de los estratos

Los datos presentados en la tabla se pueden representar gráficamente como se ve en el siguiente diagrama de donut.

Alumnos_estrato = Alumnos %>%
  count(Estrato, sort = FALSE) %>%
  transform(Estrato = as.character(Estrato))

Alumnos_estrato$porcentaje = prop.table(Alumnos_estrato$n)*100
Alumnos_estrato$fraccion = Alumnos_estrato$n / sum(Alumnos_estrato$n)
Alumnos_estrato$ymax = cumsum(Alumnos_estrato$fraccion)
Alumnos_estrato$ymin = c(0, head(Alumnos_estrato$ymax, n=-1))
Alumnos_estrato$labelPosition <- (Alumnos_estrato$ymax + Alumnos_estrato$ymin) / 2
Alumnos_estrato$label <- paste0(Alumnos_estrato$Estrato, "\n", Alumnos_estrato$porcentaje,"%")

torta_estrato = ggplot(Alumnos_estrato,
                       aes(ymax=ymax,
                           ymin=ymin,
                           xmax=4,
                           xmin=3,
                           fill=Estrato)) + 
  geom_rect() + 
  coord_polar(theta="y") +
  geom_text( x=2, aes(y=labelPosition, label=label, color=Estrato), size=4) +
  xlim(c(-1, 4)) +
  theme_void() +
  theme(legend.position = "none",plot.title = element_text(hjust = 0.5)) +
  labs(title = "Estrato de los estudiantes")
torta_estrato

3.3 Gráfico de caja del estrato de los estudiantes

Caja_Estrato<-ggplot(Alumnos, aes(x="", y=Estrato))+
  geom_boxplot(fill="red",alpha=0.7)+
  xlab("")+scale_x_discrete(breaks = NULL)+
  coord_flip()+
  theme_bw()

ggplotly(Caja_Estrato)

En el diagrama de caja se puede evidenciar que la mitad de los estudiantes se encuentran entre los estratos 1-4 y la mayoría de los estudiantes están entre el estrato 2-4

4 Tablas y gráficos de los géneros

4.1 Tabla de frecuencias de los géneros

Frec_abs=as.vector(table(Alumnos$genero)) 
Frec_abs_acum=as.vector(cumsum(table(Alumnos$genero)))
Frec_rel=as.vector(prop.table(table(Alumnos$genero)))
Frec_rel_acum=cumsum(prop.table(table(Alumnos$genero)))
Alumnos_genero=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)
row.names(Alumnos_genero) = c("Femenino", "Masculino")

Alumnos_genero %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Genero"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Genero
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
Femenino 2436 2436 0.487 0.487
Masculino 2564 5000 0.513 1.000

Con base a la tabla de frecuencia de los generos, se puede evidenciar que dentro de la universidad hay más estudiantes masculinos que femeninos.

4.2 Gráfico de donut de los géneros

A continuación se puede ver la información de la anterior tabla presentada en un gráfico de donut.

Alumnos_genero = Alumnos %>%
  count(genero, sort = FALSE)

Alumnos_genero[1,1]="Femenino"
Alumnos_genero[2,1]="Masculino"

Alumnos_genero$prop = prop.table(Alumnos_genero$n)*100
Alumnos_genero$fraccion = Alumnos_genero$n / sum(Alumnos_genero$n)
Alumnos_genero$ymax = cumsum(Alumnos_genero$fraccion)
Alumnos_genero$ymin = c(0, head(Alumnos_genero$ymax, n=-1))
Alumnos_genero$labelPosition <- (Alumnos_genero$ymax + Alumnos_genero$ymin) / 2
Alumnos_genero$label <- paste0(Alumnos_genero$genero, "\n", Alumnos_genero$prop,"%")

ggplot(Alumnos_genero,
                       aes(ymax=ymax,
                           ymin=ymin,
                           xmax=4,
                           xmin=3,
                           fill=genero)) + 
  geom_rect() + 
  coord_polar(theta="y") +
  geom_text( x=1.5, aes(y=labelPosition, label=label, color=genero), size=4) +
  xlim(c(-1, 4)) +
  theme_void() +
  theme(legend.position = "none",plot.title = element_text(hjust = 0.5)) +
  labs(title = "Género de los estudiantes")

4.3 Gráfico comparativo de estrato y género

Al igual que hicimos anteriormente, los estudiantes pueden ser diferenciados tanto por su estrato como por su genero, por lo cual al relacionar estas dos variables obtenemos la siguiente gráfica, donde se observa que la grán mayoria de estudiantes hombres se encuentran en el estrato 4 mientras la gran mayoria de mujeres pertenecen al estrato 3 y 6.

Alumnos = transform(Alumnos, Estrato = as.character(Estrato))

barras_estrato_genero=ggplot(Alumnos,aes(x=Estrato, fill=genero))+
  geom_bar(position = position_dodge(0.9))+
  labs(title = "Comparación de estrato entre femenino y masculino",
       x="Estrato",
       y="Cantidad de estudiantes")

ggplotly(barras_estrato_genero)

5 Tablas y gráficos de la edad

5.1 Tabla de frecuencias de la edad

#Tabla de frecuencias de Edad

Frec_abs=as.vector(table(Alumnos$edad)) 
Frec_abs_acum=as.vector(cumsum(table(Alumnos$edad)))
Frec_rel=as.vector(prop.table(table(Alumnos$edad)))
Frec_rel_acum=cumsum(prop.table(table(Alumnos$edad)))
tabla_frecuencia=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)



#Tabla con Estilo

tabla_frecuencia %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Edad"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Edad
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
17 2 2 0.000 0.000
18 44 46 0.009 0.009
19 310 356 0.062 0.071
20 1187 1543 0.237 0.309
21 1891 3434 0.378 0.687
22 1204 4638 0.241 0.928
23 339 4977 0.068 0.995
24 21 4998 0.004 1.000
25 2 5000 0.000 1.000

En base a la anterior tabla podemos decir que la mayor cantidad de estudiantes se encuentran en la edad de 21 años con una frecuencia absoluta de 1891 estudiantes los cuales equivalen al 37,8% del total de estudiantes, mientras que los estudiantes que tienen la edad de 17 y 25 años son los que tienen una frecuencia absoluta menor, con tan solo 2 y 4 estudiantes respectivamente, los cuales equivale al 0.04% del total de estudiantes.

5.2 Histograma de edad

Como se dijo en el anterior enunciado, al hacer una distribución de los datos en un histograma podemos ver que la gran mayoria de estudiantes tienen 21 años y los demas estudiantes tienen una tendencia a este rango de edad.

Hist_edad=ggplot(Alumnos,aes(x=edad))+
  geom_histogram(color="black",fill="dodgerblue",alpha=0.5 ,bins=9, position = "identity")+
  scale_x_continuous(breaks = seq(17,25,1))+
  labs(title = "Histograma Edad",
       x="Edad",
       y="Cantidad de estudiantes")

ggplotly(Hist_edad)

5.3 Gráfico de caja de la edad

Nuestro diagrama de caja como es una representación de una distribución normal nuestra moda, media y mediana son las mismas y sus elementos se distribuyen de manera simétrica.

Caja_Edad<-ggplot(Alumnos, aes(x="", y=edad))+
  geom_boxplot(fill="#7FFFD4")+
  xlab("")+scale_x_discrete(breaks = NULL)+
  coord_flip()+
  labs(title = "Diagrama de caja Edad")

ggplotly(Caja_Edad)

5.4 Gráfico comparativo de edad y género

Una vez mas podemos relacionar las variables de la edad y el género para obtener la siguiente gráfica, de la que podemos determinar que la gran mayoría de hombres y mujeres en la universidad se encuentran en el rango de 21 años.

barras_estrato_genero=ggplot(Alumnos,aes(x=edad, fill=genero))+
  geom_bar(position = position_dodge(0.9))+
  scale_x_continuous(breaks = seq(17,25,1))+
  labs(title = "Comparación de estrato entre femenino y masculino",
       x="edad",
       y="Cantidad de estudiantes")

ggplotly(barras_estrato_genero)

6 Tablas y gráficos de la altura

6.1 Tabla de frecuencias de la altura

Para tener una mejor visualización de los datos se hace necesario crear algunos intervalos que contengan la altura de los estudiantes. Aquí podemos observar que la mayor cantidad de estudiantes se encuentran en el intervalo de altura entre (159,162] con 1159 estudiantes que equivalen al 23,18% del total de estudiantes y los estudiantes en el intervalo de altura entre (189,192] son los que menos hay, con tan solo 4 estudiantes que equivalen al 0.08% del total de estudiantes

#En los datos continuos vamos a realizar intervalos


brx <- pretty(range(Alumnos$altura),
              n=nclass.Sturges(Alumnos$altura), min.n = 1)


k=nclass.Sturges(Alumnos$altura) #Cantidad de intervalos que tiene
A=diff(range(Alumnos$altura))/13 #Amplitud de un Intervalo a otro
A=3
m=min(Alumnos$altura)
L=m-0.05+A*(0:13)
Marcas=(L[0:k]+L[1:k+1])/2 #Marca de clase (media de cada intervalo)
Intervalos=cut(Alumnos$altura, breaks = L, include.lowest = TRUE) #Datos en intervalos




#Tabla de frecuencias de Altura

Frec_abs=as.vector(table(Intervalos)) 
Frec_abs_acum=as.vector(cumsum(table(Intervalos)))
Frec_rel=as.vector(prop.table(table(Intervalos)))
Frec_rel_acum=cumsum(prop.table(table(Intervalos)))
tabla_frecuencia=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)

#Tabla con Estilo

tabla_frecuencia %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Altura"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Altura
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
[153,156] 79 79 0.016 0.016
(156,159] 633 712 0.127 0.142
(159,162] 1159 1871 0.232 0.374
(162,165] 525 2396 0.105 0.479
(165,168] 40 2436 0.008 0.487
(168,171] 6 2442 0.001 0.488
(171,174] 61 2503 0.012 0.501
(174,177] 309 2812 0.062 0.562
(177,180] 818 3630 0.164 0.726
(180,183] 878 4508 0.176 0.902
(183,186] 400 4908 0.080 0.982
(186,189] 88 4996 0.018 0.999
(189,192] 4 5000 0.001 1.000

6.2 Histograma de altura

Con ayuda de la tabla de frecuencias, construimos un histograma que nos entrega un resultado bastante interesante, puesto que podemos ver dos tendencias marcadas en los rangos de altura (159,162] y (180,183].

Hist_altura=ggplot(Alumnos,aes(x=altura))+
  geom_histogram(color="black",fill="dodgerblue",alpha=0.5 ,breaks=L, position = "identity")+
  scale_x_continuous(breaks = seq(153,192,3))+
  labs(title = "Histograma Altura",
       x="Altura",
       y="Cantidad de estudiantes")

ggplotly(Hist_altura)

6.3 Distribución de altura entre masculino y femenino

Si bien el anterior histograma nos arrojo unos rangos de altura distintos, a través de la siguiente distribución se puede comprender mejor la dispersión de los datos, donde vemos que en el intervalo [153,168] se presenta la distribución de altura para las mujeres, mientras que del intervalo (168,192] se presenta la distribución de altura para los hombres.

Hist_altura_g=ggplot(Alumnos,aes(x=Intervalos, fill=genero))+
  geom_bar()+
  theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust=1))+
  labs(title = "Distribución de altura entre femenino y masculino",
       x="Altura",
       y="Cantidad de estudiantes")
ggplotly(Hist_altura_g)

6.4 Gráfico de caja de la altura

Caja_Altura<-ggplot(Alumnos, aes(x="", y=altura))+
  geom_boxplot(fill="#FFB90F")+
  xlab("")+scale_x_discrete(breaks = NULL)+
  coord_flip()+
  labs(title = "Diagrama de caja Altura")

ggplotly(Caja_Altura)

en este gráfico se puede evidenciar que gran parte de la distribución de la altura de los estudiantes se encuentra entre 160.05 y 173.69

6.5 Relación entre edad y altura

Finalmente esta variable puede relacionarse también con la edad, por lo que en este gráfico de dispersión de datos se puede ver que la gran mayoria de datos se concentran entorno a la edad de 21 años donde vemos la misma distribución de alturas que habian en los histogramas anteriores

Disp_Alt_Edad<-ggplot(Alumnos, aes(x=altura,y=edad))+
  geom_point()+
  coord_flip()+
  scale_y_continuous(breaks = seq(17,25,1))+
  labs(title = "Relación entre edad y altura de los estudiantes")

ggplotly(Disp_Alt_Edad)

7 Tablas y gráficos del peso

7.1 Tabla de frecuencias del peso

#En los datos continuos vamos a realizar intervalos


brx <- pretty(range(Alumnos$peso),
              n=nclass.Sturges(Alumnos$peso), min.n = 1)


k=nclass.Sturges(Alumnos$peso) #Cantidad de intervalos que tiene
A=diff(range(Alumnos$peso))/k #Amplitud de un Intervalo a otro
A=3
m=min(Alumnos$peso)
L=m-0.05+A*(0:13)
Marcas=(L[0:k]+L[1:k+1])/2 #Marca de clase (media de cada intervalo)
Intervalos=cut(Alumnos$peso, breaks = L, include.lowest = TRUE) #Datos en intervalos




#Tabla de frecuencias de peso

Frec_abs=as.vector(table(Intervalos)) 
Frec_abs_acum=as.vector(cumsum(table(Intervalos)))
Frec_rel=as.vector(prop.table(table(Intervalos)))
Frec_rel_acum=cumsum(prop.table(table(Intervalos)))
tabla_frecuencia=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)

#Tabla con Estilo

tabla_frecuencia %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Peso"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Peso
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
[52.7,55.7] 79 79 0.016 0.016
(55.7,58.7] 633 712 0.127 0.142
(58.7,61.7] 1159 1871 0.232 0.374
(61.7,64.7] 525 2396 0.105 0.479
(64.7,67.7] 40 2436 0.008 0.487
(67.7,70.7] 6 2442 0.001 0.488
(70.7,73.7] 61 2503 0.012 0.501
(73.7,76.7] 309 2812 0.062 0.562
(76.7,79.7] 818 3630 0.164 0.726
(79.7,82.7] 878 4508 0.176 0.902
(82.7,85.7] 400 4908 0.080 0.982
(85.7,88.7] 88 4996 0.018 0.999
(88.7,91.7] 4 5000 0.001 1.000

A partir de la tabla de frecuencias de el peso se puede concluir que el intervalo de peso que tiene una mayor cantidad de estudiantes es (58.7,61.7], donde se encuentra aproximadamente el 23,18% del total de estudiantes y el intervalo de peso donde hay menor cantidad de estudiantes es (88.7,91.7], donde se encuentra aproximadamente el 0,08% del total de estudiantes.

7.2 Histograma del peso

Al igual que sucedió con los histogramas de altura, vemos que en este histograma existe una dispersión de los datos similar, pues estos tienden a dos rangos distintos, por una parte al rango de (58.7,61.7] y por otra al rango de (79.7,82.7].

Hist_peso=ggplot(Alumnos,aes(x=peso))+
  geom_histogram(color="black",fill="dodgerblue",alpha=0.5 ,breaks=L, position = "identity")+
  labs(title = "Histograma Peso",
       x="Peso",
       y="Cantidad de estudiantes")

ggplotly(Hist_peso)

7.3 Distribución del peso entre masculino y femenino

Nuevamente podemos explicar este tipo de distribución relacionando el peso con el género, donde evidenciamos que el intervalo [52.7,67.7] se encuentran todas las estudiantes mujeres, mientras que en el intervalo (67.7,91.7] se encuentran todos los estudiantes hombres.

Hist_peso_g=ggplot(Alumnos,aes(x=Intervalos, fill=genero))+
  geom_bar()+
  theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust=1))+
  labs(title = "Distribución de peso entre femenino y masculino",
       x="Pesos",
       y="Cantidad de estudiantes")
ggplotly(Hist_peso_g)

7.4 Gráfico de caja del peso

En el siguiente gráfico podemos ver como la distribución de los datos se encuentra mayormente comprendida entre los pesos 60.05 y 73.69.

Caja_Peso<-ggplot(Alumnos, aes(x="", y=peso))+
  geom_boxplot(fill="#7FFF00")+
  xlab("")+scale_x_discrete(breaks = NULL)+
  coord_flip()+
  labs(title = "Diagrama de caja Peso")

ggplotly(Caja_Peso)

7.5 Relación 1 a 1 entre peso y altura

Finalmente esta variable puede estar relacionada a la altura por lo que al graficar la relacion 1 a 1 entre estos dos, obtenemos la siguiente grafica, en donde evidenciamos que a mayor altura se presenta un mayor peso tanto para el rango de altura y peso de las mujeres como para el rango de altura y peso de los hombres.

Disp_Alt_Peso<-ggplot(Alumnos, aes(x=altura,y=peso))+
  geom_point()+
  theme(plot.title = element_text(hjust = 0.5))+
  labs(title = "Relación entre peso y altura de los estudiantes")

ggplotly(Disp_Alt_Peso)

8 Tablas y gráficos del promedio

8.1 Tabla de frecuencias del promedio

#En los datos continuos vamos a realizar intervalos


brx <- pretty(range(Alumnos$promedio),
              n=nclass.Sturges(Alumnos$promedio), min.n = 1)


k=nclass.Sturges(Alumnos$promedio) #Cantidad de intervalos que tiene
A=diff(range(Alumnos$promedio))/k #Amplitud de un Intervalo a otro
A=5
m=min(Alumnos$promedio)
L=m-0.05+A*(0:6)
Marcas=(L[0:k]+L[1:k+1])/2 #Marca de clase (media de cada intervalo)
Intervalos=cut(Alumnos$promedio, breaks = brx, include.lowest = TRUE) #Datos en intervalos




#Tabla de frecuencias de promedio

Frec_abs=as.vector(table(Intervalos)) 
Frec_abs_acum=as.vector(cumsum(table(Intervalos)))
Frec_rel=as.vector(prop.table(table(Intervalos)))
Frec_rel_acum=cumsum(prop.table(table(Intervalos)))
tabla_frecuencia=data.frame(Frec_abs,Frec_abs_acum,Frec_rel,Frec_rel_acum)

#Tabla con Estilo

tabla_frecuencia %>%  
  kbl(col.names = c(
                    "Frec Absoluta",
                    "Frec Absolut acum",
                    "Frec Relativa",
                    "Frec Relativa acum"), align = rep("c",4)) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T)%>% 
  column_spec(1, bold = T, border_right = T) %>% 
  add_header_above(c("Promedio"=5))%>% 
  add_header_above(c("Tabla de frecuencias"=5)) 
Tabla de frecuencias
Promedio
Frec Absoluta Frec Absolut acum Frec Relativa Frec Relativa acum
[72,74] 2 2 0.000 0.000
(74,76] 14 16 0.003 0.003
(76,78] 56 72 0.011 0.014
(78,80] 161 233 0.032 0.047
(80,82] 428 661 0.086 0.132
(82,84] 750 1411 0.150 0.282
(84,86] 1130 2541 0.226 0.508
(86,88] 1025 3566 0.205 0.713
(88,90] 779 4345 0.156 0.869
(90,92] 428 4773 0.086 0.955
(92,94] 177 4950 0.035 0.990
(94,96] 44 4994 0.009 0.999
(96,98] 4 4998 0.001 1.000
(98,100] 2 5000 0.000 1.000

La tabla de frecuencias del promedio no muestra que la mayor cantidad de estudiantes, es decir, 1130 tienen un promedio entre (84,86], lo cual equivale aproximadamente al 22,6% del total de estudiantes. Por otro lado sólo el 0.04% de estudiantes tienen un promedio de [72,74] o (98,100]. ## Histograma del promedio

En este histograma vemos una distribución de datos casi simetrica entorno al promedio de 86 y vemos que muy pocos estudiantes tienen promedios muy altos o muy bajos.

Hist_promedio=ggplot(Alumnos,aes(x=promedio))+
  geom_histogram(color="black",fill="dodgerblue",alpha=0.5 ,breaks=brx, position = "identity")+
  scale_x_continuous(breaks=seq(70,100,2))+
  labs(title = "Histograma Promedio",
       x="Promedio",
       y="Cantidad de estudiantes")

ggplotly(Hist_promedio)

8.2 Comparacion del promedio entre femenino y masculino

Al hacer una comparación entre el promedio y el género encontramos que tanto los hombres como las mujeres siguen una distribución muy similar al histograma anterior, por lo que podremos concluir que el género no afecta la distribución del promedio.

Hist_prom_g=ggplot(Alumnos,aes(x=Intervalos, fill=genero))+
  geom_bar(position = position_dodge(0.9))+
  theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust=1))+
  labs(title = "Comparación de promedio entre femenino y masculino",
       x="Promedio",
       y="Cantidad de estudiantes")
ggplotly(Hist_prom_g)

9 Comparación del promedio entre carreras

A continuación, podemos hacer una comparación entre los promedios de cada carrera, donde se evidencia que todas las carreras siguen una distribución muy similar al histograma del promedio. También podemos concluir que carrreras como bioquímica, ingeniería civil y TIC, tienen una distribución ligeramente mas grande para promedios superiores a 90.

Carreras_prom<-ggplot(data = Alumnos, mapping = aes(x = Alumnos$promedio, fill=carrera)) +
         geom_histogram(bins = 30, color = "white") +
         facet_wrap(~ carrera, nrow = 5)+
  labs(title = "Promedio por carreras",
       x="Promedio",
       y="Cantidad de estudiantes")
  
ggplotly(Carreras_prom)

9.1 Gráfico de caja del promedio

Caja_Promedio<-ggplot(Alumnos, aes(x="", y=promedio))+
  geom_boxplot(fill="blue",alpha=0.7)+
  xlab("")+scale_x_discrete(breaks = NULL)+
  coord_flip()+
  theme_bw()+
  scale_y_continuous(breaks = seq(70,100,5))+
  labs(title = "Diagrama de caja Promedio")

ggplotly(Caja_Promedio)

Aquí podemos ver que el menor promedio es de 73.28 y el máximo promedio es de 99.20, tambien se puede ver una distribución un poco sesgada hacía la derecha, mostrandonos que hay más estudiantes con un promedio mayor a la mediana de 85.95 que hacía la izquierda. Además, es la única gráfica que nos muestra dátos atípicos.

10 Tabla de medidas de tendencia central

Primero calculamos la media, moda y mediana para cada variable y luego organizamos la información en la siguiente tabla.

#Esta es la función que nos dará la moda
mode <- function(x) {
   return(as.numeric(names(which.max(table(x)))))
}
#Creamos un nuevo data.frame con las medidas de tendencia central
Tabla_medidas_tendencia<-Alumnos %>% 
  summarise(Variable=c("Edad",
                       "Estrato",
                       "Promedio",
                       "Altura",
                       "Peso"),
            Media= c(mean(edad), 
                       mean(Estrato),
                       mean(promedio),
                       mean(altura),
                       mean(peso)),
            Moda= c(mode(edad), 
                    mode(Estrato),
                    mode(promedio), 
                    mode(altura),
                    mode(peso)),
            Mediana=c(median(edad), 
                      median(Estrato),
                      median(promedio),
                      median(altura),
                      median(peso))
            )
#Tabla con Estilo

Tabla_medidas_tendencia %>%  
  kbl(align = c("l","c","c","c")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), fixed_thead = T,full_width = F)%>%
  column_spec(1, bold = T, border_right = T, width = "4cm") %>% 
  column_spec(2, border_right = T, width = "2cm")%>% 
  column_spec(3, border_right = T, width = "2cm")%>%
  column_spec(4, border_right = T, width = "2cm")%>% 
  add_header_above(c("Tabla de medidads de tendencia central"=4))
Tabla de medidads de tendencia central
Variable Media Moda Mediana
Edad 21.0 21.0 21.0
Estrato NA 4.0 NA
Promedio 86.0 83.7 86.0
Altura 170.2 160.4 173.7
Peso 70.2 60.4 73.7

Observese que la edad tiene la misma moda, mediana y media, esto ocurre es cuando una distribución de frecuencia es simétrica y podemos evidenciarlo en el siguiente gráfico.

Densidad_edad=ggplot(Alumnos,aes(x=edad))+
  geom_histogram(color="white",fill="dodgerblue",alpha=0.3 ,bins=9, position = "identity", aes(y=..density..))+
  scale_x_continuous(breaks = seq(17,25,1))+
  geom_density()+
  geom_vline(aes(xintercept=mean(edad), 
                 color="Media"), linetype="dashed", size=1)+
  geom_vline(aes(xintercept=median(edad), 
                 color="Mediana"), linetype="dashed", size=0.6)+
  geom_vline(aes(xintercept=mode(edad), 
                 color="Moda"), linetype="dashed", size=0.8)

ggplotly(Densidad_edad)