Integrantes: Luisina Cubilledo y Paula Ho


Ejercicio 1: Validacion visual de los datos historicos


1.a)

# Cargamos los datos historicos
df_historico <- read.csv("datos_historicos.csv")
datos_historicos <- df_historico$play.delay
mean_historica <- mean(datos_historicos)
var_historica <- var(datos_historicos)
cat('La media de los datos es ', mean_historica, '.\n', sep = "")
## La media de los datos es 41.98465.
cat('La varianza de los datos es ', var_historica, '.', sep = "")
## La varianza de los datos es 52.43255.


1.b)


Los datos parecen seguir una distribución aproximadamente normal, ya que el histograma presenta una forma simétrica y acampanada. La mayor parte de los valores se concentran alrededor de la media, y la frecuencia disminuye progresivamente hacia los extremos.

Ejercicio 2: Grupo de prueba (nueva version)


# Cargamos los datos nuevos
df_nuevo <- read.csv("datos_nueva_version.csv")
datos_nuevos <- df_nuevo$play.delay

# Estimamos la media 
mean_datos_nuevos <- mean(datos_nuevos)
cat("Media nueva versión:", mean_datos_nuevos, "\n")
## Media nueva versión: 42.9895

Ejercicio 3: Construccion del test de hipotesis


3.a)
\[ \text{Planteamos las hipotesis del test} \\ \mathbb{H_{0}: \mu = \mu_{0} \ \ vs \ \ H_{1}:\mu > \mu_{0}} \\ \text{Sea } \overline{X} = \ \sum_{i = 1}^{200}{X_{i}}\ , \ \overline{X} \sim \mathcal{N}(\mu, \frac{\sigma_{0}^2}{200}) \\ \text{El estadistico del test es: T = } \frac{\overline{X} - \mu}{\sqrt{\frac{\sigma_{0}^{2}}{200}}} \\ \text{Bajo }\mathbb{H_{0}, el \ estadistico \ es \ } \\ \text{T = } \frac{\overline{X} - \mu_{0}}{\sqrt{\frac{\sigma_{0}^{2}}{200}}}, \text{y se distribuye como T} \sim \mathcal{N}(0, 1) \\ \text{Donde } \mu_{0} \text{ y } \ \sigma_{0}^{2} \text{ son la media y varianza histórica calculadas anteriormente.} \]
3.b)

# Calculamos la region de rechazo para alpha = 0,05
alpha <- 0.05

c <- qnorm(1-alpha)
c
## [1] 1.644854
\[ \text{La región de rechazo para este test con } \alpha = 0,05 \text{ es R = \{ T > 1,64 \}} \]

Ejercicio 4: Toma de decisiones


4.a)

T_obs <- (mean_datos_nuevos - mean_historica)/ sqrt(var_historica/200)
cat("T_obs =", T_obs)
## T_obs = 1.962522

\[ \text{Para tomar la decisión, debemos calcular } T_{obs}\text{. Para eso hacemos el cáculo:} \\ T_{obs} = \frac{\overline{x} \ - \ \mu_{0}}{\sqrt{\frac{\sigma_{0}^{2}}{200}}} \ = \ \frac{42,9895 \ - \ 41,98465}{\sqrt{\frac{52.43255}{200}}} \ = \ 1,96 \\ \text{Dado que } 1,96 > 1,64, \text{ hay suficiente evidencia para rechazar la hipótesis nula.} \\ \text{Por ende, la decisión sería revertir los cambios de la } \\ \text{actualización y mandar el codigo a revisión.} \]
4.b)

zona_de_rechazo <- function(alpha) {
  return(qnorm(1-alpha))
}

# Calculamos las regiones de rechazo para los distintos valores de alpha
c1 <- zona_de_rechazo(0.01)
c2 <- zona_de_rechazo(0.1)
c1
## [1] 2.326348
c2
## [1] 1.281552

\[ \text{A partir de los cálculos realizados podemos observar las siguientes zonas de rechazo: } \\ \text{R}_{0,01} = \{ \ T > 2,32 \ \} \\ \text{R}_{0,05} = \{ \ T > 1,64 \ \} \\ \text{R}_{0,1} = \{ \ T > 1,28 \ \} \\ \text{Podemos ver que, a medida que aumenta } \alpha, \text{ la región de rechazo se agranda.} \\ \text{Esto significa que se rechaza } H_0 \text{ con valores más pequeños de } T_{obs}. \\ \text{Esto sucede porque } \alpha \text{ representa la probabilidad de rechazar } H_0 \text{ cuando en realidad es verdadera.} \\ \text{Por eso, se suele trabajar con } \alpha \text{ pequeños, para minimizar este tipo de error.} \\ \text{En este contexto, cuanto mayor sea } \alpha, \text{ mayor es el riesgo de auditar código que funciona bien.} \]
4.c)

# Calculamos las decisiones para cada uno de los alphas pedidos
alphas <- seq(from=0.01, by=0.01, length.out=10)
alphas
##  [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10
T_obs
## [1] 1.962522
for (alpha in alphas) {
  c <- zona_de_rechazo(alpha)
  rechazo <- T_obs > c
  cat("Para el nivel alpha =", alpha, "la region de rechazo es T >", c, "\nRechazamos la hipotesis nula: ")
  cat(rechazo, "\n")
  
}
## Para el nivel alpha = 0.01 la region de rechazo es T > 2.326348 
## Rechazamos la hipotesis nula: FALSE 
## Para el nivel alpha = 0.02 la region de rechazo es T > 2.053749 
## Rechazamos la hipotesis nula: FALSE 
## Para el nivel alpha = 0.03 la region de rechazo es T > 1.880794 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.04 la region de rechazo es T > 1.750686 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.05 la region de rechazo es T > 1.644854 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.06 la region de rechazo es T > 1.554774 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.07 la region de rechazo es T > 1.475791 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.08 la region de rechazo es T > 1.405072 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.09 la region de rechazo es T > 1.340755 
## Rechazamos la hipotesis nula: TRUE 
## Para el nivel alpha = 0.1 la region de rechazo es T > 1.281552 
## Rechazamos la hipotesis nula: TRUE


4.d)

for(alpha in seq(0.02,0.03, length.out=10)){
  C <- zona_de_rechazo(alpha)
  if(C < T_obs) res <- 'Rechazo H0' else res <- 'NO Rechazo H0'
  cat('alpha = ', alpha, '--->', res, '\n')
}
## alpha =  0.02 ---> NO Rechazo H0 
## alpha =  0.02111111 ---> NO Rechazo H0 
## alpha =  0.02222222 ---> NO Rechazo H0 
## alpha =  0.02333333 ---> NO Rechazo H0 
## alpha =  0.02444444 ---> NO Rechazo H0 
## alpha =  0.02555556 ---> Rechazo H0 
## alpha =  0.02666667 ---> Rechazo H0 
## alpha =  0.02777778 ---> Rechazo H0 
## alpha =  0.02888889 ---> Rechazo H0 
## alpha =  0.03 ---> Rechazo H0


El valor mínimo encontrado para el cual se rechaza H0 con los datos observados es: \(\alpha\) = 0.02555556 En este caso, \(\alpha\) = 0.02555556 representa el p − valor, que es la probabilidad de obtener resultados tan extremos como los observados (o más extremos) bajo la suposición de que la hipótesis nula es verdadera. En términos del control de calidad en Netflix, esto significa que si se utiliza un nivel de confianza menor al 97.44% (es decir, \(\alpha\) > 0.02555556), se concluye que la actualización aumenta significativamente el “play-delay” y se envía a auditar.


Ejercicio 5: Significancia y error de tipo 1


5.a)

## T_obs para la muestra simulada = 2.053652

\[ \text{Para esta muestra, se observa que la decisión tomada es rechazar } H_0 \text{ ya que } 2{,}05 > 1{,}64. \\ \text{Esto implica que se enviaría el código a revisión.} \\ \text{Sin embargo, si asumimos que en realidad } H_0 \text{ es verdadera, esta decisión resulta incorrecta.} \]


5.b)

R <- seq(from = 1, to = 10000)
rechazos <- c()

alpha <- 0.05
c <- zona_de_rechazo(alpha)

for (i in R) {
  nueva_muestra <- rnorm(200, mean = mean_historica, sd = sqrt(var_historica))
  mean_datos_nuevos <- mean(nueva_muestra)
  t_obs <- (mean_datos_nuevos - mean_historica) / sqrt(var_historica / 200)
  rechazos <- append(rechazos, (t_obs > c))
}

porcentaje_correctas <- (1 - mean(rechazos)) * 100

cat("Porcentaje de veces que se tomó la decisión correcta (NO rechazo H0):",
    round(porcentaje_correctas, 2), "%\n")
## Porcentaje de veces que se tomó la decisión correcta (NO rechazo H0): 94.81 %
\[ \text{A partir de los resultados podemos observar que se tomó la decisión correcta un } \\ \text{94,81% de las veces. Este resultado no está tan alejado de lo esperado,} \\ \text{puesto que esperábamos tomar la decisión correcta un 95% de las veces.} \]
5.c)
\[ \text{La interpretación teórica de } \alpha \text{ es la probabilidad de} \text{ rechazar la hipótesis nula dado que esta es verdadera.} \]

Ejercicio 6: Dos formas de ver el p-valor


6.a)

# Calculamos la probabilidad pedida.
t_obs <- (mean_datos_nuevos - mean_historica)/sqrt(var_historica/200)
p_valor <- 1 - pnorm(t_obs)
cat('p-valor:', p_valor)
## p-valor: 0.09618396

6.b)
\[ \text{Podemos observar que el nuevo resultado es bastante similar al calculado en el} \\ \text{ejercicio 4.d). Esto se debe a que en ese inciso, estábamos buscando el } \\ \alpha \text{ mínimo donde empezaríamos a rechazar la hipótesis nula, mientras que en este ejercicio, calculamos la} \\ \text{probabilidad de observar datos iguales o más extremos de los observados.} \\ \text{En esencia, ambos resultados representan lo mismo, puesto que indican el punto de corte} \\ \text{a partir de donde empezamos a rechazar la hipótesis nula (asumiendo que esta era verdadera), sólo que usamos} \\ \text{dos formas distintas de calcularlo.} \]

Ejercicio 7: ¿Como se que los datos son normales?


7.a)
Hipótesis:
H0: Los datos provienen de una distribución normal.
H1: Los datos no provienen de una distribución normal.
7.b) Realizamos el test de Shapiro–Wilk para ambos conjuntos de datos

# Test para datos históricos
shapiro_historicos <- shapiro.test(datos_historicos)
shapiro_historicos$p.value
## [1] 0.6933821
# Test para nueva versión
datos_nueva_version_df <- read.csv("datos_nueva_version.csv")
datos_nueva_version <- datos_nueva_version_df$play.delay

shapiro_nueva_version <- shapiro.test(datos_nueva_version)
shapiro_nueva_version$p.value
## [1] 0.8669629
# Interpretación de resultados
if (shapiro_historicos$p.value > 0.1) {
  cat("No se rechaza H0 para datos historicos: se pueden considerar normales.\n")
} else {
  cat("Se rechaza H0 para datos historicos: no se pueden considerar normales.\n")
}
## No se rechaza H0 para datos historicos: se pueden considerar normales.
if (shapiro_nueva_version$p.value > 0.1) {
  cat("No se rechaza H0 para nueva version: se pueden considerar normales.\n")
} else {
  cat("Se rechaza H0 para nueva version: no se pueden considerar normales.\n")
}
## No se rechaza H0 para nueva version: se pueden considerar normales.

Se utilizó un nivel de significancia de \(\alpha\) = 0.10 en el test de Shapiro-Wilk en lugar del valor convencional de 0.05 para aumentar la sensibilidad ante desviaciones de la normalidad.
Dado que la hipótesis nula del test plantea que los datos siguen una distribución normal (H₀: normalidad), un valor de \(\alpha\) más alto reduce el riesgo de aceptar incorrectamente la normalidad (error tipo II), protegiendo así la validez de pruebas paramétricas posteriores.
Esto es especialmente relevante en muestras pequeñas, donde el test puede tener baja potencia.
Ghasemi y Zahediasl (2012) respaldan este enfoque al recomendar niveles más liberales (como 0.10) para no pasar por alto la no normalidad.
Referencia: Ghasemi, A., & Zahediasl, S. (2012). Normality tests for statistical analysis: A guide for non-statisticians. International Journal of Endocrinology and Metabolism, 10(2), 486–489. https://doi.org/10.5812/ijem.3505