Een gerandomiseerd blokdesign implementeren
Het productiebedrijf waar je eerder mee samenwerkte wil nog steeds experimenten doen naar arbeidsproductiviteit. Eerder werden de twee blokken willekeurig ingesteld. Dat kan werken, maar vaak is het beter om proefpersonen te groeperen op basis van vergelijkbare kenmerken.
Dezelfde medewerkers zijn opnieuw geladen, maar dit keer in een DataFrame genaamd productivity, samen met 1200 andere collega’s. Het bevat ook een kolom 'productivity_score' op basis van het aantal geproduceerde eenheden per uur. Deze kolom is in drie groepen ingedeeld om blokken te maken met vergelijkbare productiviteitswaarden. Het bedrijf wil een nieuw incentiveprogramma met drie opties ('Bonus', 'Profit Sharing' en 'Work from Home') uitrollen binnen het hele bedrijf, waarbij de behandeling willekeurig wordt toegewezen.
numpy en pandas zijn als respectievelijk np en pd geladen.
Deze oefening maakt deel uit van de cursus
Experimenteel ontwerpen in Python
Oefeninstructies
- Shuffle de
blocks om een nieuwe DataFrameprod_dfte maken. - Reset de index zodat
blockniet zowel een index als een kolom is. - Wijs willekeurig de drie behandelingswaarden toe in de kolom
'Treatment'.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Randomly assign workers to blocks
prod_df = productivity.____('____').apply(
lambda x: x.____(____)
)
# Reset the index
prod_df = prod_df.____(____)
# Assign treatment randomly
prod_df['Treatment'] = np.random.choice(
['____', '____', '____'],
size=len(____)
)