Poweranalyse - deel II
Eerder simuleerden we één instantie van het experiment en genereerden we een p-waarde. We gebruiken dit raamwerk nu om de statistische power te berekenen. De power van een experiment is het vermogen van het experiment om een verschil tussen treatment en control te detecteren als dat verschil echt bestaat. Het is goede statistische hygiëne om te streven naar 80% power.
Voor onze website willen we weten hoeveel mensen elke variant moeten bezoeken, zodat we met 80% power een toename van 10% in bestede tijd kunnen detecteren. Daarvoor beginnen we met een kleine steekproef (50), simuleren we meerdere instanties van dit experiment en controleren we de power. Als 80% power is bereikt, stoppen we. Zo niet, dan vergroten we de steekproefgrootte en proberen we het opnieuw.
Deze oefening maakt deel uit van de cursus
Statisticale simulatie in Python
Oefeninstructies
- Stel voor de willekeurige variabelen
time_spentsizein als tuples zodat de vormsample_size×simsis. - Bereken
powerals het deel van de p-waarden kleiner dan 0,05 (statistisch significant). - Als
powergroter dan of gelijk aan 80% is,breakdan uit de while-lus. Anders blijf jesample_sizemet 10 verhogen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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))