ANOVA inom anställdas block
Med utgångspunkt i dina tidigare analyser av tillverkningsföretaget, där arbetarproduktiviteten undersöktes över olika block och ett incitamentsprogram infördes, ska du nu fördjupa dig ytterligare i data. Företaget har en mer omfattande datamängd i DataFrame:en productivity, som inkluderar 1 200 ytterligare anställda och deras productivity_score. Arbetsstyrkan är strukturerad i tre block baserade på produktivitetsnivåer. Varje anställd har slumpmässigt tilldelats ett av tre incitamentsalternativ: 'Bonus', 'Profit Sharing' eller 'Work from Home'.
Innan du bedömer den fulla effekten av dessa incitamentsbehandlingar på produktiviteten är det viktigt att verifiera att den initiala behandlingstilldelningen verkligen var slumpmässig och rättvis över de olika produktivitetsblocken. Det här steget säkerställer att eventuella observerade skillnader i produktivitet efter behandlingen med säkerhet kan tillskrivas incitamentsprogrammen själva, snarare än redan befintliga skillnader mellan blocken.
Funktionen f_oneway() från scipy.stats har redan importerats åt dig.
Den här övningen är en del av kursen
Experimentell design i Python
Övningsinstruktioner
- Gruppera
prod_dfefter den kolumn som representerar de olika blocken i din data. - Använd en
lambda-funktion för att tillämpa ANOVA-testet inom varje block och angelambda-funktionens argument. - För varje behandlingsgrupp inom blocken, filtrera
prod_dfbaserat på värdena i kolumnen'Treatment'och välj kolumnen'productivity_score'.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)