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:
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.
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
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
)
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.
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.
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
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"
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.
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
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)
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")
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.
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
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