ANOVA all'interno dei blocchi di dipendenti
Sulla base delle analisi precedenti con l'azienda manifatturiera, in cui la produttività dei lavoratori è stata esaminata in blocchi differenti e sono stati introdotti incentivi, ora andrai più a fondo nei dati. L'azienda, dotata di un insieme di dati più ampio nel DataFrame di produttività, con 1200 dipendenti aggiuntivi e il loro productivity_score, ha suddiviso la forza lavoro in tre blocchi in base ai livelli di produttività. A ciascun dipendente è stata assegnata in modo casuale una delle tre opzioni di incentivo: 'Bonus', 'Profit Sharing' o 'Work from Home'.
Prima di valutare l'impatto complessivo di questi trattamenti di incentivo sulla produttività, è fondamentale verificare che l'assegnazione iniziale dei trattamenti sia stata effettivamente casuale ed equa nei diversi blocchi di produttività. Questo passaggio garantisce che eventuali differenze osservate nella produttività dopo il trattamento possano essere attribuite con fiducia ai programmi di incentivazione stessi, e non a disparità preesistenti tra i blocchi.
La funzione f_oneway() da scipy.stats è già stata caricata per te.
Questo esercizio fa parte del corso
Progettazione Sperimentale in Python
Istruzioni dell'esercizio
- Raggruppa
prod_dfper la colonna appropriata che rappresenta i diversi blocchi nei tuoi dati. - Usa una funzione lambda per applicare il test ANOVA all'interno di ciascun blocco, specificando l'argomento della funzione
lambda. - Per ciascun gruppo di trattamento all'interno dei blocchi, filtra
prod_dfin base ai valori della colonna'Treatment'e seleziona la colonna'productivity_score'.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)