Análisis de potencia - Parte II
Antes, simulamos una instancia del experimento y generamos un p-valor. Ahora usaremos este esquema para calcular la potencia estadística. La potencia de un experimento es su capacidad para detectar una diferencia entre tratamiento y control si esa diferencia realmente existe. Es una buena práctica estadística aspirar al 80% de potencia.
Para nuestro sitio web, supongamos que queremos saber cuántas personas deben visitar cada variante para poder detectar un aumento del 10% en el tiempo invertido con un 80% de potencia. Para ello, empezamos con una muestra pequeña (50), simulamos múltiples instancias de este experimento y comprobamos la potencia. Si alcanzamos el 80% de potencia, paramos. Si no, aumentamos el tamaño de la muestra y volvemos a intentarlo.
Este ejercicio forma parte del curso
Simulación estadística en Python
Instrucciones del ejercicio
- Para las variables aleatorias
time_spent, establecesizecomo tuplas de modo que la forma seasample_size\(\times\)sims. - Calcula
powercomo la fracción de p-valores menores que 0.05 (estadísticamente significativo). - Si
poweres mayor o igual que el 80%, hazbreakdel bucle while. En caso contrario, sigue incrementandosample_sizede 10 en 10.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
sample_size = 50
# Keep incrementing sample size by 10 till we reach required power
while 1:
control_time_spent = np.random.normal(loc=control_mean, scale=control_sd, size=(____,____)))
treatment_time_spent = np.random.normal(loc=control_mean*(1+effect_size), scale=control_sd, size=(____,____))
t, p = st.ttest_ind(treatment_time_spent, control_time_spent)
# Power is the fraction of times in the simulation when the p-value was less than 0.05
power = (p < 0.05).sum()/____
if ____:
____
else:
____ += ____
print("For 80% power, sample size required = {}".format(sample_size))