Estadisticas del promedio de bachillerato

library(e1071)  
library(ggplot2)  

# Leer la base de datos
nombrespromedio_bach <- read.csv("bd_promedios.csv")

# Seleccionar la primera columna (asegúrate de que es numérica)
datos <- nombrespromedio_bach[[1]]

# 1) Calcular estadísticos básicos
media <- mean(datos, na.rm = TRUE)
mediana <- median(datos, na.rm = TRUE)

# Calcular moda
calcular_moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
moda <- calcular_moda(datos)

# Mostrar resultados
cat("Media:", media, "\n")
## Media: 88.63135
cat("Mediana:", mediana, "\n")
## Mediana: 89.41
cat("Moda:", moda, "\n\n")
## Moda: 93
# 2) Sesgo y curtosis
sesgo <- skewness(datos, na.rm = TRUE)
curtosis <- kurtosis(datos, na.rm = TRUE)

cat("Sesgo:", sesgo, "\n")
## Sesgo: -0.379655
cat("Curtosis:", curtosis, "\n\n")
## Curtosis: -0.4785645
# 3) Histograma
ggplot(data.frame(datos), aes(x = datos)) +
  geom_histogram(binwidth = 0.5, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_vline(aes(xintercept = media), color = "red", linetype = "dashed", size = 1) +
  labs(title = "Histograma de la primera columna",
       x = "Valores",
       y = "Frecuencia") +
  theme_minimal()

# 4) Regla empírica (68-95-99.7)
sd_datos <- sd(datos, na.rm = TRUE)

dentro_1sd <- sum(datos > (media - sd_datos) & datos < (media + sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_2sd <- sum(datos > (media - 2 * sd_datos) & datos < (media + 2 * sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_3sd <- sum(datos > (media - 3 * sd_datos) & datos < (media + 3 * sd_datos), na.rm = TRUE) / length(datos) * 100

cat("Porcentaje dentro de 1 desviación estándar:", dentro_1sd, "%\n")
## Porcentaje dentro de 1 desviación estándar: 68.30986 %
cat("Porcentaje dentro de 2 desviaciones estándar:", dentro_2sd, "%\n")
## Porcentaje dentro de 2 desviaciones estándar: 97.1831 %
cat("Porcentaje dentro de 3 desviaciones estándar:", dentro_3sd, "%\n\n")
## Porcentaje dentro de 3 desviaciones estándar: 99.29577 %
# 5) Conclusión
cat("Conclusión: \n")
## Conclusión:
if (abs(sesgo) < 0.5 && abs(curtosis - 3) < 0.5) {
  cat("Los datos tienen un sesgo y curtosis cercanos a los de una distribución normal.\n")
} else {
  cat("Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).\n")
}
## Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).
cat("Histograma y regla empírica pueden complementar este análisis.\n")
## Histograma y regla empírica pueden complementar este análisis.

Estadisticas de las pruebas de actitud academica

library(e1071)  # Para calcular sesgo y curtosis
library(ggplot2)  # Para el histograma

# Leer la base de datos
nombrespromedio_bach <- read.csv("bd_promedios.csv")

# Seleccionar la segunda columna de bd_promedios
datos <- nombrespromedio_bach[[2]]

# 1) Calcular estadísticos básicos
media <- mean(datos, na.rm = TRUE)
mediana <- median(datos, na.rm = TRUE)

# Calcular moda
calcular_moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
moda <- calcular_moda(datos)

# Mostrar resultados
cat("Media:", media, "\n")
## Media: 68.75766
cat("Mediana:", mediana, "\n")
## Mediana: 69.1445
cat("Moda:", moda, "\n\n")
## Moda: 67.16
# 2) Sesgo y curtosis
sesgo <- skewness(datos, na.rm = TRUE)
curtosis <- kurtosis(datos, na.rm = TRUE)

cat("Sesgo:", sesgo, "\n")
## Sesgo: 0.05415417
cat("Curtosis:", curtosis, "\n\n")
## Curtosis: -0.5338851
# 3) Histograma
ggplot(data.frame(datos), aes(x = datos)) +
  geom_histogram(binwidth = 0.5, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_vline(aes(xintercept = media), color = "red", linetype = "dashed", size = 1) +
  labs(title = "Histograma de Prueba de Actitud Académica",
       x = "Valores",
       y = "Frecuencia") +
  theme_minimal()

# 4) Regla empírica (68-95-99.7)
sd_datos <- sd(datos, na.rm = TRUE)

dentro_1sd <- sum(datos > (media - sd_datos) & datos < (media + sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_2sd <- sum(datos > (media - 2 * sd_datos) & datos < (media + 2 * sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_3sd <- sum(datos > (media - 3 * sd_datos) & datos < (media + 3 * sd_datos), na.rm = TRUE) / length(datos) * 100

cat("Porcentaje dentro de 1 desviación estándar:", dentro_1sd, "%\n")
## Porcentaje dentro de 1 desviación estándar: 63.38028 %
cat("Porcentaje dentro de 2 desviaciones estándar:", dentro_2sd, "%\n")
## Porcentaje dentro de 2 desviaciones estándar: 93.66197 %
cat("Porcentaje dentro de 3 desviaciones estándar:", dentro_3sd, "%\n\n")
## Porcentaje dentro de 3 desviaciones estándar: 98.59155 %
# 5) Conclusión
cat("Conclusión: \n")
## Conclusión:
if (abs(sesgo) < 0.5 && abs(curtosis - 3) < 0.5) {
  cat("Los datos tienen un sesgo y curtosis cercanos a los de una distribución normal.\n")
} else {
  cat("Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).\n")
}
## Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).
cat("Histograma y regla empírica pueden complementar este análisis.\n")
## Histograma y regla empírica pueden complementar este análisis.

Estadisticas para el promedio de matematicas

library(e1071)
library(ggplot2)  

# Leer la base de datos
nombrespromedio_bach <- read.csv("bd_promedios.csv")

# Seleccionar la segunda columna de bd_promedios
datos <- nombrespromedio_bach[[3]]

# 1) Calcular estadísticos básicos
media <- mean(datos, na.rm = TRUE)
mediana <- median(datos, na.rm = TRUE)

# Calcular moda
calcular_moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
moda <- calcular_moda(datos)

# Mostrar resultados
cat("Media:", media, "\n")
## Media: 75.52143
cat("Mediana:", mediana, "\n")
## Mediana: 75
cat("Moda:", moda, "\n\n")
## Moda: 60
# 2) Sesgo y curtosis
sesgo <- skewness(datos, na.rm = TRUE)
curtosis <- kurtosis(datos, na.rm = TRUE)

cat("Sesgo:", sesgo, "\n")
## Sesgo: 0.3121677
cat("Curtosis:", curtosis, "\n\n")
## Curtosis: -1.223435
# 3) Histograma
ggplot(data.frame(datos), aes(x = datos)) +
  geom_histogram(binwidth = 0.5, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_vline(aes(xintercept = media), color = "red", linetype = "dashed", size = 1) +
  labs(title = "Histograma promedio de matematicas",
       x = "Valores",
       y = "Frecuencia") +
  theme_minimal()
## Warning: Removed 2 rows containing non-finite values (`stat_bin()`).

# 4) Regla empírica (68-95-99.7)
sd_datos <- sd(datos, na.rm = TRUE)

dentro_1sd <- sum(datos > (media - sd_datos) & datos < (media + sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_2sd <- sum(datos > (media - 2 * sd_datos) & datos < (media + 2 * sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_3sd <- sum(datos > (media - 3 * sd_datos) & datos < (media + 3 * sd_datos), na.rm = TRUE) / length(datos) * 100

cat("Porcentaje dentro de 1 desviación estándar:", dentro_1sd, "%\n")
## Porcentaje dentro de 1 desviación estándar: 52.8169 %
cat("Porcentaje dentro de 2 desviaciones estándar:", dentro_2sd, "%\n")
## Porcentaje dentro de 2 desviaciones estándar: 98.59155 %
cat("Porcentaje dentro de 3 desviaciones estándar:", dentro_3sd, "%\n\n")
## Porcentaje dentro de 3 desviaciones estándar: 98.59155 %
# 5) Conclusión
cat("Conclusión: \n")
## Conclusión:
if (abs(sesgo) < 0.5 && abs(curtosis - 3) < 0.5) {
  cat("Los datos tienen un sesgo y curtosis cercanos a los de una distribución normal.\n")
} else {
  cat("Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).\n")
}
## Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).
cat("Histograma y regla empírica pueden complementar este análisis.\n")
## Histograma y regla empírica pueden complementar este análisis.

Estadisticas para promedio matematticas 2

library(e1071)
library(ggplot2)  

# Leer la base de datos
nombrespromedio_bach <- read.csv("bd_promedios.csv")

# Seleccionar la segunda columna de bd_promedios
datos <- nombrespromedio_bach[[4]]

# 1) Calcular estadísticos básicos
media <- mean(datos, na.rm = TRUE)
mediana <- median(datos, na.rm = TRUE)

# Calcular moda
calcular_moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}
moda <- calcular_moda(datos)

# Mostrar resultados
cat("Media:", media, "\n")
## Media: 80.56364
cat("Mediana:", mediana, "\n")
## Mediana: 80
cat("Moda:", moda, "\n\n")
## Moda: NA
# 2) Sesgo y curtosis
sesgo <- skewness(datos, na.rm = TRUE)
curtosis <- kurtosis(datos, na.rm = TRUE)

cat("Sesgo:", sesgo, "\n")
## Sesgo: -0.04924658
cat("Curtosis:", curtosis, "\n\n")
## Curtosis: -1.110903
# 3) Histograma
ggplot(data.frame(datos), aes(x = datos)) +
  geom_histogram(binwidth = 0.5, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_vline(aes(xintercept = media), color = "red", linetype = "dashed", size = 1) +
  labs(title = "Histograma promedio de matematicas II",
       x = "Valores",
       y = "Frecuencia") +
  theme_minimal()
## Warning: Removed 32 rows containing non-finite values (`stat_bin()`).

# 4) Regla empírica (68-95-99.7)
sd_datos <- sd(datos, na.rm = TRUE)

dentro_1sd <- sum(datos > (media - sd_datos) & datos < (media + sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_2sd <- sum(datos > (media - 2 * sd_datos) & datos < (media + 2 * sd_datos), na.rm = TRUE) / length(datos) * 100
dentro_3sd <- sum(datos > (media - 3 * sd_datos) & datos < (media + 3 * sd_datos), na.rm = TRUE) / length(datos) * 100

cat("Porcentaje dentro de 1 desviación estándar:", dentro_1sd, "%\n")
## Porcentaje dentro de 1 desviación estándar: 47.88732 %
cat("Porcentaje dentro de 2 desviaciones estándar:", dentro_2sd, "%\n")
## Porcentaje dentro de 2 desviaciones estándar: 77.46479 %
cat("Porcentaje dentro de 3 desviaciones estándar:", dentro_3sd, "%\n\n")
## Porcentaje dentro de 3 desviaciones estándar: 77.46479 %
# 5) Conclusión
cat("Conclusión: \n")
## Conclusión:
if (abs(sesgo) < 0.5 && abs(curtosis - 3) < 0.5) {
  cat("Los datos tienen un sesgo y curtosis cercanos a los de una distribución normal.\n")
} else {
  cat("Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).\n")
}
## Los datos NO cumplen las características de una distribución normal (sesgo o curtosis fuera de rango).
cat("Histograma y regla empírica pueden complementar este análisis.\n")
## Histograma y regla empírica pueden complementar este análisis.