Taller 2

Descargue las pruebas saber y para todos los siguientes puntos ANALICE e INTERPRETE. Utilice el puntaje en matemáticas y el puntaje en inglés y realice los siguientes puntos:

1. Realice un análisis de frecuencias para los colegios según su jornada.

df <- readRDS("students.rds")
tab_ni = table(df$JORNADA)

dataFramesJornadas = data.frame(tab_ni)
names(dataFramesJornadas) = c("Jornada","FrecuenciaAbsoluta")
dataFramesJornadas = dataFramesJornadas[order(dataFramesJornadas$FrecuenciaAbsoluta), c(1,2)]

dataFramesJornadas$FrecuenciaRelativa =  dataFramesJornadas$FrecuenciaAbsoluta/sum(dataFramesJornadas$FrecuenciaAbsoluta)

dataFramesJornadas$FrecuenciaRelativaAcumulada = cumsum(dataFramesJornadas$FrecuenciaRelativa)

dataFramesJornadas
##                Jornada FrecuenciaAbsoluta FrecuenciaRelativa
## 4                Noche              44389         0.06364489
## 5 Sabatina - Dominical              47511         0.06812121
## 3                Tarde             101371         0.14534560
## 1 Completa u ordinaria             139257         0.19966650
## 2               Mañana             364920         0.52322180
##   FrecuenciaRelativaAcumulada
## 4                  0.06364489
## 5                  0.13176610
## 3                  0.27711170
## 1                  0.47677820
## 2                  1.00000000

Se identifica que, la jornada de la Mañana es la que más frecuencia tiene de la muestra y las jornadas Noche y Sabatina - Dominical son las que menos frecuencia tiene.

2. Realice una tabla de contingencia entre la jornada del colegio y el desempeño en inglés.

table(df$JORNADA, df$INGLES_DESEM)
##                       
##                            A-     A1     A2     B+     B1
##   Completa u ordinaria  56120  48793  15859   6920  11565
##   Mañana               194508 134562  23220   2988   9642
##   Tarde                 52769  39200   6483    555   2364
##   Noche                 33008  10611    533     71    166
##   Sabatina - Dominical  36077  10776    491     37    130

3. Realice un diagrama de barras que permita visualizar la información anterior mediante un análisis de perfiles

df2 = subset(df, !is.na(df$JORNADA), select = c("JORNADA","INGLES_DESEM"))

barplot(prop.table(t(table(df2$JORNADA, df2$INGLES_DESEM))
                   , margin = 1)
        , beside = TRUE
        , col = heat.colors(length(unique(df2$INGLES_DESEM)))
        , legend.text = unique(df2$INGLES_DESEM)
        , main = "Perfilamiento Jornada en función del Desempeño en Inglés"
        , las = 2
)

4. Establezca si existe asociación significativa entre la jornada y el desempeño en inglés.

De acuerdo al comportamiento, se puede identificar que, las jornadas Sabatina-Dominical no tienen buen desempeño de Inglés, mientras que aquellos colegios con jornada completa u ordinaria tienen un desempeño bastante alto.

5. Calcule las medidas de tendencia central (promedio, mediana) e interprete. (Puntaje Matemáticas y Puntaje Inglés)

summary(df$MATEMATICAS_PUNT)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   43.00   49.00   49.71   55.00  100.00      33

El promedio del puntaje en Matemáticas es de 49.71 y la mediana de 49.00 lo que nos permite identificar que la muestra es uniforme de acuerdo a los valores máximos y mínimos, generando una Distribución Normal. La mayoría de la población está en el puntaje de 43 y 55, lo que indica que la gran mayoría de los estudiantes tuvo un resultado entre aceptable e insuficiente.

summary(df$INGLES_PUNT)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   44.00   48.00   49.66   53.00  100.00      33

El promedio del puntaje en Inglés es de 49.66 y la mediana de 48.00 lo que nos permite identificar que, al igual que en matemáticas la muestra es uniforme de acuerdo a los valores máximos y mínimos, generando una Distribución Normal. La mayoría de la población está en el puntaje de 44 y 53, lo que indica que la gran mayoría de los estudiantes tuvo un resultado entre aceptable e insuficiente.

6. Calcule los deciles de estos dos puntajes

Deciles para el Puntaje de Matemáticas

quantile(df$MATEMATICAS_PUNT, seq(0,1,0.1), na.rm=TRUE)
##   0%  10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
##    0   38   42   45   47   49   51   53   57   62  100

Déciles para el puntaje de Inglés

quantile(df$INGLES_PUNT, seq(0,1,0.1), na.rm=TRUE)
##   0%  10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
##    0   41   43   45   47   48   49   52   54   60  100

7. Calcule las siguientes medidas de dispersión para las dos variables:

a. Desviación estándar

b. Mad

c. rango intercuartílico

Puntaje de Matemáticas

print(paste("Desviación Estándar: ", sd(df$MATEMATICAS_PUNT, na.rm = TRUE)))
## [1] "Desviación Estándar:  9.79873795781812"
print(paste("MAD: " , mad(df$MATEMATICAS_PUNT, na.rm = TRUE, constant = 1)))
## [1] "MAD:  6"
print(paste("Rango Intercuartílico: ", quantile(df$MATEMATICAS_PUNT, na.rm = TRUE, 0.75)-quantile(df$MATEMATICAS_PUNT, na.rm = TRUE, 0.25)))
## [1] "Rango Intercuartílico:  12"

Puntaje de Inglés:

print(paste("Desviación Estándar: ", sd(df$INGLES_PUNT, na.rm = TRUE)))
## [1] "Desviación Estándar:  9.58021981049584"
print(paste("MAD: " , mad(df$INGLES_PUNT, na.rm = TRUE, constant = 1)))
## [1] "MAD:  4"
print(paste("Rango Intercuartílico: ", quantile(df$INGLES_PUNT, na.rm = TRUE, 0.75)-quantile(df$INGLES_PUNT, na.rm = TRUE, 0.25)))
## [1] "Rango Intercuartílico:  9"

8. Calcule los coeficientes de asimetría clásico y de Yule

Puntaje de Matemáticas

skewness_BY <- function(x){
  q75 = quantile(x, 0.75, na.rm = TRUE)
  q25 = quantile(x, 0.25, na.rm = TRUE)
  iqr = q75 - q25
  mediana = median(x, na.rm = TRUE)
  ((q75-mediana)-(mediana-q25))/iqr
}
print(paste("Asimetría Clásica: ", skewness(df$MATEMATICAS_PUNT, na.rm = TRUE)))
## [1] "Asimetría Clásica:  0.501600360939588"
print(paste("Asimetría de Yule : ", skewness_BY(df$MATEMATICAS_PUNT)))
## [1] "Asimetría de Yule :  0"

La asimetría al dar 0.5 quiere decir que tiene más tendencia hacia la derecha, sin embargo se puede decir que tiende a ser simétrica la muestra.

Puntaje de Inglés

print(paste("Asimetría Clásica: ", skewness(df$INGLES_PUNT, na.rm = TRUE)))
## [1] "Asimetría Clásica:  1.70065998992639"
print(paste("Asimetría de Yule : ", skewness_BY(df$INGLES_PUNT)))
## [1] "Asimetría de Yule :  0.111111111111111"

La asimetría al dar 1.7 quiere decir que tiene más tendencia hacia la derecha.

9. Calcule las curtosis clásica y de Moors

Puntaje de Matemáticas

kurtosisMoors <- function(x){
  (quantile(x, na.rm = TRUE, 0.995)-quantile(x, na.rm = TRUE, 0.025)) /  (quantile(x, na.rm = TRUE, 0.75)-quantile(x, na.rm = TRUE, 0.25))
}
print(paste("Curtosis Clásica: ", kurtosis(df$MATEMATICAS_PUNT, na.rm = TRUE)))
## [1] "Curtosis Clásica:  4.25555585698676"
print(paste("Curtosis de Moors : ", kurtosisMoors(rnorm(df$MATEMATICAS_PUNT))))
## [1] "Curtosis de Moors :  3.37267549999365"

La curtosis es mayor que 3, lo que indica que es leptocúrtica, sin embargo está muy cerca a 3.

Puntaje de Inglés

print(paste("Curtosis Clásica: ", kurtosis(df$INGLES_PUNT, na.rm = TRUE)))
## [1] "Curtosis Clásica:  8.65057637192845"
print(paste("Curtosis de Moors : ", kurtosisMoors(rnorm(df$INGLES_PUNT))))
## [1] "Curtosis de Moors :  3.36825779094184"

La curtosis es mucho mayor que 3, lo que indica que es leptocúrtica

10. Elabore histogramas y boxplot de estos puntajes

Puntaje de Matemáticas Histograma

hist(df$MATEMATICAS_PUNT
     , main = 'Histograma Puntaje de Matemáticas'
     , xlab = 'Puntaje de Matemáticas'
     , col = 'red')

BoxPlot

boxplot(df$MATEMATICAS_PUNT)

Puntaje de Inglés Histograma

hist(df$INGLES_PUNT
          , main = 'Histograma Puntaje de Inglés'
     , xlab = 'Puntaje de Inglés'
     , col = 'purple')

BoxPlot

boxplot(df$INGLES_PUNT)

11. Realice un diagrama de dispersión entre el puntaje de matemáticas y el puntaje de inglés

df3 = subset(df, !is.na(df$MATEMATICAS_PUNT), select = c("MATEMATICAS_PUNT","INGLES_PUNT"))
plot(df3$MATEMATICAS_PUNT
     , df3$INGLES_PUNT
     , xlab = "Puntaje de Matemáticas"
     , ylab = "Puntaje de Inglés"
     , main = "Diagrama de Dispersión entre Puntaje Matemáticas y Puntaje Inglés")

12. Calcule la correlación entre el puntaje de matemáticas y el puntaje de inglés

cor(df3$MATEMATICAS_PUNT, df3$INGLES_PUNT )
## [1] 0.5587659

El resultado de la correlación entre los puntajes es de 0.55, lo que indica que aunque tienen una relación aparente, no es posible crear una tendencia lineal sino una polinomial.

13. Realice la comparación de las medidas descriptivas comprendidas entre los puntos 1 a 5 comparando por cada una de las jornadas del colegio.

Puntaje de Matemáticas

Promedio

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = mean)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria         53.39184
## 2               Mañana         49.86914
## 3                Tarde         49.62470
## 4                Noche         43.55277
## 5 Sabatina - Dominical         43.66296

Mediana

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = median)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria               52
## 2               Mañana               50
## 3                Tarde               49
## 4                Noche               44
## 5 Sabatina - Dominical               44

Asimetría

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = skewness)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria        0.5592562
## 2               Mañana        0.4518237
## 3                Tarde        0.3983733
## 4                Noche       -0.3448464
## 5 Sabatina - Dominical       -0.2388496

Asimetría Bule Yule

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = skewness_BY)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria       0.00000000
## 2               Mañana      -0.09090909
## 3                Tarde       0.09090909
## 4                Noche      -0.09090909
## 5 Sabatina - Dominical       0.00000000

Kurtosis

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = kurtosis)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria         3.717087
## 2               Mañana         4.039447
## 3                Tarde         3.983977
## 4                Noche         5.043285
## 5 Sabatina - Dominical         4.678182

Kurtosis de Moors

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = kurtosisMoors)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria         3.928571
## 2               Mañana         4.181818
## 3                Tarde         4.000000
## 4                Noche         3.454545
## 5 Sabatina - Dominical         3.600000

MAD

aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = mad)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria          10.3782
## 2               Mañana           8.8956
## 3                Tarde           8.8956
## 4                Noche           7.4130
## 5 Sabatina - Dominical           7.4130

Rango intercuartílico

RI <- function(x){
  quantile(x, na.rm = TRUE, 0.75)-quantile(x, na.rm = TRUE, 0.25)  
}
aggregate(MATEMATICAS_PUNT ~ JORNADA, data = df, FUN = RI)
##                JORNADA MATEMATICAS_PUNT
## 1 Completa u ordinaria               14
## 2               Mañana               11
## 3                Tarde               11
## 4                Noche               11
## 5 Sabatina - Dominical               10

Puntaje de Inglés

Promedio

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = mean)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria    53.98379
## 2               Mañana    49.29231
## 3                Tarde    49.28744
## 4                Noche    45.09424
## 5 Sabatina - Dominical    44.82810

Mediana

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = median)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria          50
## 2               Mañana          48
## 3                Tarde          48
## 4                Noche          45
## 5 Sabatina - Dominical          45

Asimetría

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = skewness)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria   1.3784291
## 2               Mañana   1.6192599
## 3                Tarde   1.4999171
## 4                Noche  -0.4550518
## 5 Sabatina - Dominical  -0.3895206

Asimetría Bule Yule

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = skewness_BY)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria   0.2307692
## 2               Mañana   0.1111111
## 3                Tarde   0.1111111
## 4                Noche   0.0000000
## 5 Sabatina - Dominical  -0.1428571

Kurtosis

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = kurtosis)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria    4.880217
## 2               Mañana    8.832281
## 3                Tarde    8.494817
## 4                Noche   13.604361
## 5 Sabatina - Dominical   13.768120

Kurtosis de Moors

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = kurtosisMoors)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria    4.769231
## 2               Mañana    5.555556
## 3                Tarde    5.111111
## 4                Noche    4.500000
## 5 Sabatina - Dominical    4.428571

MAD

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = mad)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria      7.4130
## 2               Mañana      5.9304
## 3                Tarde      5.9304
## 4                Noche      5.9304
## 5 Sabatina - Dominical      5.9304

Rango intercuartílico

aggregate(INGLES_PUNT ~ JORNADA, data = df, FUN = RI)
##                JORNADA INGLES_PUNT
## 1 Completa u ordinaria          13
## 2               Mañana           9
## 3                Tarde           9
## 4                Noche           8
## 5 Sabatina - Dominical           7