Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Stel voor de willekeurige variabelen time_spent size in als tuples zodat de vorm sample_size × sims is.
  • Bereken power als het deel van de p-waarden kleiner dan 0,05 (statistisch significant).
  • Als power groter dan of gelijk aan 80% is, break dan uit de while-lus. Anders blijf je sample_size met 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))
Code bewerken en uitvoeren