ANOVA w blokach pracowników
Kontynuując wcześniejsze analizy dotyczące firmy produkcyjnej – gdzie badano wydajność pracowników w różnych blokach po wprowadzeniu programu motywacyjnego – teraz zagłębiasz się w dane jeszcze bardziej. Firma dysponuje teraz rozbudowanym zbiorem danych w ramce danych productivity, obejmującym 1200 dodatkowych pracowników wraz z ich productivity_score. Załoga została podzielona na trzy bloki według poziomów wydajności. Każdemu pracownikowi losowo przypisano jeden z trzech wariantów motywacyjnych: 'Bonus', 'Profit Sharing' lub 'Work from Home'.
Zanim ocenisz pełny wpływ tych programów motywacyjnych na wydajność, warto upewnić się, że początkowe przypisanie do grup było rzeczywiście losowe i równomierne we wszystkich blokach. Ten krok pozwala potwierdzić, że wszelkie zaobserwowane różnice w wydajności po zastosowaniu programów wynikają z samych bodźców motywacyjnych – a nie z wcześniej istniejących różnic między blokami.
Funkcja f_oneway() z biblioteki scipy.stats została już załadowana.
To ćwiczenie jest częścią kursu
Projektowanie eksperymentów w Pythonie
Instrukcje do ćwiczenia
- Pogrupuj
prod_dfwedług kolumny reprezentującej poszczególne bloki w danych. - Użyj funkcji lambda, aby zastosować test ANOVA w obrębie każdego bloku – podaj odpowiedni argument funkcji
lambda. - Dla każdej grupy traktowania w blokach przefiltruj
prod_dfwedług wartości kolumny'Treatment'i wybierz kolumnę'productivity_score'.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)