ANOVA binnen blokken van werknemers
Voortbouwend op je eerdere analyses bij het productiebedrijf, waar de productiviteit van werknemers per blok werd onderzocht en een incentiveprogramma werd ingevoerd, ga je nu dieper in op de data. Het bedrijf beschikt over een uitgebreidere gegevensset in de DataFrame productivity, met 1200 extra werknemers en hun productivity_score, en heeft het personeelsbestand ingedeeld in drie blokken op basis van productiviteitsniveaus. Elke werknemer is willekeurig toegewezen aan een van drie incentive-opties: 'Bonus', 'Profit Sharing' of 'Work from Home'.
Voordat je de volledige impact van deze incentive-behandelingen op productiviteit beoordeelt, is het belangrijk om te controleren of de initiële toewijzing van de behandelingen daadwerkelijk willekeurig en evenwichtig was over de verschillende productiviteitsblokken. Deze stap zorgt ervoor dat eventuele verschillen in productiviteit na de behandeling met vertrouwen kunnen worden toegeschreven aan de incentiveprogramma's zelf, en niet aan al bestaande verschillen tussen de blokken.
De functie f_oneway() uit scipy.stats is voor je geladen.
Deze oefening maakt deel uit van de cursus
Experimenteel ontwerpen in Python
Oefeninstructies
- Groepeer
prod_dfop de juiste kolom die de verschillende blokken in je data weergeeft. - Gebruik een lambda-functie om de ANOVA-test binnen elk blok toe te passen en specificeer het argument van de
lambda-functie. - Filter voor elke behandelingsgroep binnen de blokken
prod_dfop basis van de waarden in de kolom'Treatment'en selecteer de kolom'productivity_score'.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Perform the within blocks ANOVA, first grouping by block
within_block_anova = prod_df.groupby('____').apply(
# Set function
lambda x: ____(
# Filter Treatment values based on outcome
x[x['____'] == '____']['____'],
x[x['____'] == '____']['____'],
x[x['____'] == '____']['____'])
)
print(within_block_anova)