1 Planteamiento del Problema

En referencia a la base de datos del ultimo EDA, estudiar el siguente problema. Estamos interesados en estimar la media de la precisión (Accuracy) de los modelos de aprendizaje automático a través de diferentes algoritmos, marcos de trabajo y tipos de problemas utilizando un intervalo de confianza para la media. Vamos a:

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)
library(ggplot2)
df <- read_excel("Dataset_IA_corte_II.xlsx")
mean_accuracy <- mean(df$Accuracy, na.rm = TRUE)
sd_accuracy <- sd(df$Accuracy, na.rm = TRUE)
n <- sum(!is.na(df$Accuracy))
head(df)

1.1 1. Resuelva

1.1.1 a) Calcular un intervalo de confianza del 90% para la media de la variable Accuracy.

error_margin <- qnorm(0.95) * (sd_accuracy / sqrt(n))
lower_bound <- mean_accuracy - error_margin
upper_bound <- mean_accuracy + error_margin
cat("Intervalo de Confianza del 90% para la Precisión:", lower_bound, "a", upper_bound)
## Intervalo de Confianza del 90% para la Precisión: 0.8098946 a 0.9458216

Ahora utilizando la función de R-STUDIO

library(BSDA)
## Loading required package: lattice
## 
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
## 
##     Orange
z_test <- z.test(df$Accuracy, sigma.x = sd_accuracy, conf.level = 0.90)

cat("Intervalo de Confianza del 90% para la Precisión:", z_test$conf.int[1], "a", z_test$conf.int[2], "\n")
## Intervalo de Confianza del 90% para la Precisión: 0.8098946 a 0.9458216

1.1.2 b. Que sucede si se calcula un intervalo de confianza al 99%.

error_margin <- qnorm(0.995) * (sd_accuracy / sqrt(n))
lower_bound <- mean_accuracy - error_margin
upper_bound <- mean_accuracy + error_margin
cat("Intervalo de Confianza del 99% para la Precisión:", lower_bound, "a", upper_bound)
## Intervalo de Confianza del 99% para la Precisión: 0.7714278 a 0.9842885

1.2 2. ¿Qué tamaño de muestra sería necesario si deseamos reducir el margen de error al 1% manteniendo un nivel de confianza del 95%?

sigma <- 0.05  
Z_95 <- 1.96   
error_margin_1 <- 0.01  

n_95 <- (Z_95 * sigma / error_margin_1)^2


cat("Tamaño de muestra necesario con un margen de error del 1% y nivel de confianza del 95%:", ceiling(n_95), "\n")
## Tamaño de muestra necesario con un margen de error del 1% y nivel de confianza del 95%: 97

1.3 b) Si aumentamos el nivel de confianza al 99%, ¿cómo cambia el tamaño de la muestra necesaria para mantener el mismo margen de error?

Z_99 <- 2.576 
error_margin_1 <- 0.01  


n_99 <- (Z_99 * sigma / error_margin_1)^2

cat("Tamaño de muestra necesario con un margen de error del 1% y nivel de confianza del 99%:", ceiling(n_99), "\n")
## Tamaño de muestra necesario con un margen de error del 1% y nivel de confianza del 99%: 166

1.4 C. ¿Cómo afecta el aumento del tamaño de muestra en el intervalo de confianza? Simula qué ocurriría con el intervalo si duplicamos el tamaño de la muestra manteniendo la desviación estándar.

El tamaño de la muestra afecta directamente el ancho del intervalo de confianza. A medida que aumenta el tamaño de la muestra, el intervalo de confianza se vuelve más estrecho, lo que significa que nuestra estimación de la media es más precisa. Esto ocurre porque el error estándar (que es la desviación estándar dividida por la raíz cuadrada del tamaño de la muestra) disminuye al aumentar el tamaño de la muestra.

# IC con Tamaño de muestra original
sigma <- 0.05  
n_original <- 100  
Z_95 <- 1.96  


error_standard_original <- sigma / sqrt(n_original)
error_margin_original <- Z_95 * error_standard_original
IC_original_lower <- 0 - error_margin_original
IC_original_upper <- 0 + error_margin_original

cat("Intervalo de confianza original:", IC_original_lower, "a", IC_original_upper, "\n")
## Intervalo de confianza original: -0.0098 a 0.0098
n_duplicado <- 2 * n_original


error_standard_duplicado <- sigma / sqrt(n_duplicado)
error_margin_duplicado <- Z_95 * error_standard_duplicado
IC_duplicado_lower <- 0 - error_margin_duplicado
IC_duplicado_upper <- 0 + error_margin_duplicado

cat("Intervalo de confianza con tamaño de muestra duplicado:", IC_duplicado_lower, "a", IC_duplicado_upper, "\n")
## Intervalo de confianza con tamaño de muestra duplicado: -0.006929646 a 0.006929646

1.5 3. ¿Cuál es el rango intercuartílico (IQR) de la precisión (accuracy) de los modelos? ¿Qué nos dice esto sobre la dispersión de los datos?

iqr_accuracy <- IQR(df$Accuracy, na.rm = TRUE)
cat("El rango intercuartílico (IQR) de la precisión es:", iqr_accuracy)
## El rango intercuartílico (IQR) de la precisión es: 0.2587894

1.6 4. ¿Cómo se comparan la desviación estándar (que mide la dispersión respecto a la media) y el rango intercuartílico (que mide la dispersión en torno a la mediana) en el conjunto de datos de precisión? ¿Qué nos indica esto sobre la simetría o asimetría de la distribución de la precisión de los modelos?

mean_accuracy <- mean(df$Accuracy, na.rm = TRUE)
sd_accuracy <- sd(df$Accuracy, na.rm = TRUE)


median_accuracy <- median(df$Accuracy, na.rm = TRUE)
iqr_accuracy <- IQR(df$Accuracy, na.rm = TRUE)

# Mostrar los resultados
cat("Media:", mean_accuracy, "\nDesviación Estándar:", sd_accuracy)
## Media: 0.8778581 
## Desviación Estándar: 0.9431208
cat("\nMediana:", median_accuracy, "\nRango Intercuartílico (IQR):", iqr_accuracy)
## 
## Mediana: 0.7578397 
## Rango Intercuartílico (IQR): 0.2587894

Si la desviación estándar y el IQR son similares, la distribución podría ser relativamente simétrica. Si la desviación estándar es mucho mayor que el IQR, podría haber asimetría o valores extremos que afectan la media más que la mediana.

1.7 5. ¿Qué porcentaje de los modelos supera una precisión del 80%? ¿Es esto significativo en el contexto de aprendizaje automático?

modelos_superan_80 <- sum(df$Accuracy > 0.80, na.rm = TRUE)
total_modelos <- sum(!is.na(df$Accuracy))
porcentaje_supera_80 <- (modelos_superan_80 / total_modelos) * 100

cat("El porcentaje de modelos que supera una precisión del 80% es:", porcentaje_supera_80, "%")
## El porcentaje de modelos que supera una precisión del 80% es: 42.22649 %

1.8 6. ¿Cuál es la distribución de la precisión? ¿Sigue una distribución normal o está sesgada hacia algún extremo? (Usa gráficos como histograma y prueba de normalidad como Shapiro-Wilk).

Hipótesis nula (\(H_0\)): Los datos de la precisión siguen una distribución normal.

\(H_0: \text{La precisión sigue una distribución normal}\)

Hipótesis alternativa (\(H_1\)): Los datos de la precisión no siguen una distribución normal.

\(H_1: \text{La precisión no sigue una distribución normal}\)

ggplot(df, aes(x = Accuracy)) +
  geom_histogram(binwidth = 0.05, color = "black", fill = "blue") +
  labs(title = "Histograma de la Precisión", x = "Precisión", y = "Frecuencia")
## Warning: Removed 39 rows containing non-finite outside the scale range
## (`stat_bin()`).

shapiro_test <- shapiro.test(df$Accuracy)

shapiro_test
## 
##  Shapiro-Wilk normality test
## 
## data:  df$Accuracy
## W = 0.22771, p-value < 2.2e-16