Integrantes: Luisina Cubilledo y Paula Ho
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)
# 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
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 \}}
\]
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.
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.}
\]
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
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