Análise de Poder - Parte II
Antes, simulamos uma instância do experimento e geramos um p-valor. Agora, vamos usar essa estrutura para calcular o poder estatístico. O poder de um experimento é a capacidade de detectar uma diferença entre tratamento e controle, caso essa diferença realmente exista. É uma boa prática estatística buscar 80% de poder.
Para o nosso site, suponha que queremos saber quantas pessoas precisam visitar cada variante para detectar um aumento de 10% no tempo gasto com 80% de poder. Para isso, começamos com uma amostra pequena (50), simulamos várias instâncias desse experimento e verificamos o poder. Se atingirmos 80% de poder, paramos. Caso contrário, aumentamos o tamanho da amostra e tentamos novamente.
Este exercício faz parte do curso
Simulação Estatística em Python
Instruções do exercício
- Para as variáveis aleatórias
time_spent, definasizecomo tuplas de modo que o formato sejasample_size\(\times\)sims. - Calcule
powercomo a fração de p-valores menores que 0,05 (estatisticamente significativos). - Se
powerfor maior ou igual a 80%, usebreakpara sair do while. Caso contrário, continue incrementandosample_sizede 10 em 10.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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))